X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjcr%2Fdao%2FTreeTestResultNodeMapper.java;h=cc2cbe9f162925b387307712630d03ce767f5f2a;hb=ffe7754e421f8ad5d3a336f54a498f67c6d72839;hp=471de7100879f918c8b8a6ffa93f16257a8889ff;hpb=b554c0910f6ddce935ceea5f99d399fe23af6f58;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java index 471de7100..cc2cbe9f1 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.argeo.slc.jcr.dao; import java.util.ArrayList; @@ -20,7 +36,6 @@ import javax.jcr.query.QueryManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.jcr.BeanNodeMapper; -import org.argeo.jcr.JcrUtils; import org.argeo.slc.core.attachment.SimpleAttachment; import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.tree.TreeSPath; @@ -94,12 +109,28 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { // We add the tags Map tags = elements.get(key).getTags(); for (String tag : tags.keySet()) { + 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)); + // 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 @@ -128,10 +159,10 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { tmpNode = tmpNode.addNode(pathes[i]); } childNode = tmpNode; - log.debug("Node created " + childNode.getPath()); + //log.debug("Node created " + childNode.getPath()); } else { childNode = node.getNode(relPath); - log.debug("Node already existing " + childNode.getPath()); + //log.debug("Node already existing " + childNode.getPath()); } List list = resultParts.get(key).getParts(); @@ -208,7 +239,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { } // ATTRIBUTES - Map attributes = new TreeMap(); + SortedMap attributes = new TreeMap(); PropertyIterator propIt = node.getProperties(); props: while (propIt.hasNext()) { Property prop = propIt.nextProperty(); @@ -271,27 +302,34 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { se.setLabel(curNode.getProperty("label").getString()); Map tagMap = new TreeMap(); - 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); } - log.debug("We added " + elements.size() + " elements"); + //log.debug("We added " + elements.size() + " elements"); ttr.setElements(elements);