]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java
Improve deployment
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / dao / TreeTestResultNodeMapper.java
index 9cb59edb7bdc96d4b52c22f1b2441a627cc0db8e..162e5d2f7409d0fed388f30d240e9d480ecb41a1 100644 (file)
@@ -14,7 +14,6 @@ import javax.jcr.NodeIterator;
 import javax.jcr.Property;
 import javax.jcr.PropertyIterator;
 import javax.jcr.RepositoryException;
-import javax.jcr.Session;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryManager;
 
@@ -95,7 +94,28 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                        // We add the tags
                        Map<String, String> tags = elements.get(key).getTags();
                        for (String tag : tags.keySet()) {
-                               childNode.setProperty(tag, tags.get(tag));
+                               NodeIterator tagIt = childNode.getNodes("tag");
+                               Node tagNode = null;
+                               while (tagIt.hasNext()) {
+                                       Node n = tagIt.nextNode();
+                                       if (n.getProperty("name").getString().equals(tag)) {
+                                               tagNode = n;
+                                       }
+                               }
+
+                               if (tagNode == null) {
+                                       tagNode = childNode.addNode("tag");
+                                       tagNode.setProperty("name", tag);
+                               }
+
+                               tagNode.setProperty("value", tags.get(tag));
+
+                               // remove forbidden characters
+                               // String cleanTag = JcrUtils.removeForbiddenCharacters(tag);
+                               // if (!cleanTag.equals(tag))
+                               // log.warn("Tag '" + tag + "' persisted as '" + cleanTag
+                               // + "'");
+                               // childNode.setProperty(cleanTag, tags.get(tag));
                        }
 
                        // We set the class in order to be able to retrieve
@@ -135,7 +155,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                        Node listNode;
                        int i;
                        for (i = 0; i < list.size(); i++) {
-                               TestResultPart trp = list.get(i);
+                               // TestResultPart trp = list.get(i);
                                // FIXME : ResultParts are systematicaly added.
                                // There no check to see if already exists.
                                listNode = childNode.addNode("resultpart");
@@ -190,8 +210,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                if (log.isTraceEnabled())
                        log.debug("Map node " + node.getPath() + " to bean " + clssName);
 
-               
-               // It's a very specific implementation, 
+               // It's a very specific implementation,
                // We don't need to use a bean wrapper.
                TreeTestResult ttr = new TreeTestResult();
 
@@ -210,7 +229,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                props: while (propIt.hasNext()) {
                        Property prop = propIt.nextProperty();
 
-                       //TODO Define a rule to generalize it (Namespace ??)
+                       // TODO Define a rule to generalize it (Namespace ??)
                        // Get rid of specific case. mainly uuid
                        if ("uuid".equals(prop.getName())
                                        || prop.getName().equals(getClassProperty())
@@ -238,8 +257,8 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                        ttr.setAttachments(attachments);
                }
 
-               // STRUCTURED ELEMENTS 
-               
+               // STRUCTURED ELEMENTS
+
                String basePath = node.getPath();
                SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();
                SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();
@@ -268,22 +287,29 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                        se.setLabel(curNode.getProperty("label").getString());
 
                        Map<String, String> tagMap = new TreeMap<String, String>();
-                       PropertyIterator tagIt = curNode.getProperties();
-                       tags: while (tagIt.hasNext()) {
-                               Property prop = tagIt.nextProperty();
-                               log.debug("Handling property named : " + prop.getName());
-
-                               //TODO Define a rule to generalize it
-                               // Specific case. mainly uuid
-                               if ("uuid".equals(prop.getName())
-                                               || prop.getName().equals(getClassProperty())
-                                               || prop.getName().startsWith("jcr")) {
-                                       continue tags;
-                               }
+                       NodeIterator tagIt = node.getNodes("tag");
+                       while (tagIt.hasNext()) {
+                               Node tagNode = tagIt.nextNode();
+                               tagMap.put(tagNode.getProperty("name").getString(), tagNode
+                                               .getProperty("value").getString());
 
-                               // else it's an attribute, we retrieve it
-                               tagMap.put(prop.getName(), prop.getString());
                        }
+                       // PropertyIterator tagIt = curNode.getProperties();
+                       // tags: while (tagIt.hasNext()) {
+                       // Property prop = tagIt.nextProperty();
+                       // //log.debug("Handling property named : " + prop.getName());
+                       //
+                       // // TODO Define a rule to generalize it
+                       // // Specific case. mainly uuid
+                       // if ("uuid".equals(prop.getName())
+                       // || prop.getName().equals(getClassProperty())
+                       // || prop.getName().startsWith("jcr")) {
+                       // continue tags;
+                       // }
+                       //
+                       // // else it's an attribute, we retrieve it
+                       // tagMap.put(prop.getName(), prop.getString());
+                       // }
 
                        se.setTags(tagMap);
                        elements.put(tsp, se);
@@ -293,7 +319,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper {
                ttr.setElements(elements);
 
                // RESULTPARTS
-               
+
                // We have to had the uuid of the current node to be sure that we are in
                // its sub tree
                queryString = "//testresult[@uuid='" + uuid + "']";