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%2FTreeTestResultCollectionDaoJcr.java;h=0004bad9344d2c6d8164b2b82ddf2ecad5cdc526;hb=5fe677bf811739592b1089471181e39f9cbe4f3f;hp=6a9824dfb7cbdab0db64451b4fe057e6bf7213fc;hpb=b554c0910f6ddce935ceea5f99d399fe23af6f58;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java index 6a9824dfb..0004bad93 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2007-2012 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; @@ -9,6 +24,7 @@ import java.util.TreeSet; import javax.jcr.Node; import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; import javax.jcr.query.Query; import org.apache.commons.logging.Log; @@ -26,7 +42,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements // FIXME : we handle testResultCollection by adding a property called // "TestResultCollectionId " - final private String ttrColProp = "TestResultCollectionId"; + final private String ttrColProp = "collectionId"; private final static Log log = LogFactory .getLog(TreeTestResultCollectionDaoJcr.class); @@ -40,7 +56,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements curNode.setProperty(ttrColProp, colId); } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot create TreeTestResultCollection " + ttrCollection, e); } @@ -49,18 +65,11 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements public TreeTestResultCollection getTestResultCollection(String id) { TreeTestResultCollection res = new TreeTestResultCollection(); res.setId(id); - - // String queryString = "//*[@" + ttrColProp + "='" + id + "']"; - // Query query = queryManager.createQuery(queryString, Query.XPATH); - // log.debug("retrieving all nodes of a col - " + queryString); - int i = 0; NodeIterator ni = resultNodesInCollection(id); while (ni.hasNext()) { - i++; res.getResults().add( (TreeTestResult) nodeMapper.load(ni.nextNode())); } - // log.debug(i + " nodes found"); return res; } @@ -75,15 +84,12 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements public void update(TreeTestResultCollection ttrCollection) { try { log.debug("Update "); - String queryString; - Query query; - Node curNode; String colId = ttrCollection.getId(); // We add or update existing ones for (TreeTestResult ttr : ttrCollection.getResults()) { - queryString = "//*[@uuid='" + ttr.getUuid() + "']"; - query = queryManager.createQuery(queryString, Query.XPATH); - curNode = JcrUtils.querySingleNode(query); + String queryString = "//testresult[@uuid='" + ttr.getUuid() + + "']"; + Node curNode = singleNode(queryString, Query.XPATH); if (curNode == null) { curNode = nodeMapper.save(getSession(), basePath(ttr), ttr); log.debug("New Node added"); @@ -97,14 +103,14 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements JcrUtils.debug(curNode.getSession().getRootNode()); } // We remove those who are not part of the collection anymore - queryString = "//*[@" + ttrColProp + "='" + colId + "']"; - query = queryManager.createQuery(queryString, Query.XPATH); + String queryString = "//*[@" + ttrColProp + "='" + colId + "']"; + Query query = createQuery(queryString, Query.XPATH); log.debug("Query :" + queryString); NodeIterator ni = query.execute().getNodes(); int i = 0; while (ni.hasNext()) { log.debug("Node " + (++i)); - curNode = ni.nextNode(); + Node curNode = ni.nextNode(); String uuid = curNode.getProperty("uuid").getString(); boolean isPartOfTheSet = false; for (TreeTestResult ttr : ttrCollection.getResults()) { @@ -120,7 +126,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements } } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot update TreeTestResultCollection " + ttrCollection, e); } @@ -166,12 +172,10 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements String queryString; Node curNode; String colId = ttrc.getId(); - queryString = "//*[@uuid='" + resultUuid + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - curNode = JcrUtils.querySingleNode(query); + queryString = "//testresult[@uuid='" + resultUuid + "']"; + curNode = singleNode(queryString, Query.XPATH); if (curNode == null) { - throw new SlcException("Cannot add TreeTestResult of Id " - + resultUuid + " to collection " + colId); + throw new SlcException("Cannot find test result #" + resultUuid); } else curNode.setProperty(ttrColProp, colId); getSession().save(); @@ -185,25 +189,19 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements public void removeResultFromCollection(final TreeTestResultCollection ttrc, final String resultUuid) { try { - log.debug("remove result"); String queryString; Node curNode; - String colId = ttrc.getId(); - queryString = "//*[@uuid='" + resultUuid + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + queryString = "//testresult[@uuid='" + resultUuid + "' and " + + ttrColProp + "='" + ttrc.getId() + "']"; + Query query = createQuery(queryString, Query.XPATH); curNode = JcrUtils.querySingleNode(query); - log.debug("Query : " + queryString + " - Node retrieved " - + curNode.getPath()); if (curNode == null) { - throw new SlcException("Cannot remove TreeTestResult of Id " - + resultUuid + " from collection " + colId); + throw new SlcException("Cannot find test result #" + resultUuid); } else { curNode.getProperty(ttrColProp).remove(); - log.debug("Property removed : " - + curNode.getProperty(ttrColProp).getString()); } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot remove TreeTestResult of Id " + resultUuid + " from collection " + ttrc, e); } @@ -229,21 +227,6 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements } return list; - // throw new UnsupportedOperationException(); - // List list; - // if (collectionId == null) - // list = getHibernateTemplate().find( - // "select new org.argeo.slc.core.test.tree.ResultAttributes(ttr)" - // + " from TreeTestResult ttr"); - // else - // list = getHibernateTemplate() - // .find( - // "select new org.argeo.slc.core.test.tree.ResultAttributes(ttr) " - // + " from TreeTestResult ttr, TreeTestResultCollection ttrc " - // + " where ttr in elements(ttrc.results) and ttrc.id=?", - // collectionId); - // - // return list; } public List listResults(String collectionId, @@ -298,10 +281,10 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements String attributeValue) { String queryString; if (attributeKey != null) - queryString = "//testResult[@" + attributeKey + "='" + queryString = "//testresult[@" + attributeKey + "='" + attributeValue + "']"; else - queryString = "//testResult"; + queryString = "//testresult"; return query(queryString); } @@ -318,9 +301,9 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements try { if (log.isDebugEnabled()) log.debug("Retrieve nodes from query: " + query); - Query q = queryManager.createQuery(query, Query.XPATH); + Query q = createQuery(query, Query.XPATH); return q.execute().getNodes(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot load nodes from query: " + query); } } @@ -328,10 +311,15 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements private String property(Node node, String key) { try { return node.getProperty(key).getString(); - } catch (Exception e) { + } catch (RepositoryException e) { log.warn("Cannot retrieve property " + key + " of node " + node, e); return null; } } + private Node singleNode(String query, String queryType) { + Query q = createQuery(query, queryType); + return JcrUtils.querySingleNode(q); + } + }