X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjcr%2Fmvc%2FJcrBrowserController.java;fp=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjcr%2Fmvc%2FJcrBrowserController.java;h=cddc8b01e09aa0f4a5d77167999d2f4bfc9f16fb;hb=c69f105ffc363f6e425567fb705003408577162c;hp=298daeb3e96da0c81fa42fe4fbb41879393d837f;hpb=bc3dd777a21dbf4d6522c46de12064f2254dfa2b;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java index 298daeb3e..cddc8b01e 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java @@ -1,8 +1,19 @@ package org.argeo.server.jcr.mvc; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + import javax.jcr.Item; +import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.Value; +import javax.jcr.query.Query; +import javax.jcr.query.QueryResult; +import javax.jcr.query.Row; +import javax.jcr.query.RowIterator; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,4 +31,44 @@ public class JcrBrowserController implements JcrMvcConstants { RequestAttributes.SCOPE_REQUEST)).getItem(path); } + @RequestMapping("/queryJcrNodes.*") + public List queryJcrNodes(WebRequest webRequest, + @RequestParam("statement") String statement, + @RequestParam("language") String language) + throws RepositoryException { + Session session = ((Session) webRequest.getAttribute( + REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST)); + Query query = session.getWorkspace().getQueryManager().createQuery( + statement, language); + NodeIterator nit = query.execute().getNodes(); + List paths = new ArrayList(); + while (nit.hasNext()) { + paths.add(nit.nextNode().getPath()); + } + return paths; + } + + @RequestMapping("/queryJcrTable.*") + public List> queryJcrTable(WebRequest webRequest, + @RequestParam("statement") String statement, + @RequestParam("language") String language) + throws RepositoryException { + Session session = ((Session) webRequest.getAttribute( + REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST)); + Query query = session.getWorkspace().getQueryManager().createQuery( + statement, language); + QueryResult queryResult = query.execute(); + List> results = new ArrayList>(); + results.add(Arrays.asList(queryResult.getColumnNames())); + RowIterator rit = queryResult.getRows(); + + while (rit.hasNext()) { + Row row = rit.nextRow(); + List lst = new ArrayList(); + for (Value value : row.getValues()) { + lst.add(value.getString()); + } + } + return results; + } }