X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2FJcrUtils.java;h=91ca780b132b6d2eccaeb784e41f3340b2be4020;hb=3049428581e087f337011c4a5095b68513e84721;hp=5a46a763792d3db39c55432c4e83b78de8e141cf;hpb=ff2edf71a6223a88a10d2f6c51db2797bfb0c4b9;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java index 5a46a7637..91ca780b1 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jcr/JcrUtils.java @@ -1,5 +1,6 @@ package org.argeo.jcr; +import java.util.Calendar; import java.util.StringTokenizer; import javax.jcr.Node; @@ -9,6 +10,8 @@ import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Value; +import javax.jcr.query.Query; +import javax.jcr.query.QueryResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -17,6 +20,25 @@ import org.argeo.ArgeoException; public class JcrUtils { private final static Log log = LogFactory.getLog(JcrUtils.class); + public static Node querySingleNode(Query query) { + NodeIterator nodeIterator; + try { + QueryResult queryResult = query.execute(); + nodeIterator = queryResult.getNodes(); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot execute query " + query, e); + } + Node node; + if (nodeIterator.hasNext()) + node = nodeIterator.nextNode(); + else + return null; + + if (nodeIterator.hasNext()) + throw new ArgeoException("Query returned more than one node."); + return node; + } + public static String parentPath(String path) { if (path.equals("/")) throw new ArgeoException("Root path '/' has no parent path"); @@ -30,6 +52,24 @@ public class JcrUtils { return pathT.substring(0, index); } + public static String dateAsPath(Calendar cal) { + StringBuffer buf = new StringBuffer(11); + buf.append(cal.get(Calendar.YEAR));// 4 + buf.append('/');// 1 + int month = cal.get(Calendar.MONTH) + 1; + if (month < 10) + buf.append(0); + buf.append(month);// 2 + buf.append('/');// 1 + int day = cal.get(Calendar.DAY_OF_MONTH); + if (day < 10) + buf.append(0); + buf.append(day);// 2 + buf.append('/');// 1 + return buf.toString(); + + } + public static String lastPathElement(String path) { if (path.charAt(path.length() - 1) == '/') throw new ArgeoException("Path " + path + " cannot end with '/'"); @@ -40,6 +80,10 @@ public class JcrUtils { return path.substring(index + 1); } + public static Node mkdirs(Session session, String path) { + return mkdirs(session, path, null, false); + } + public static Node mkdirs(Session session, String path, String type, Boolean versioning) { try {