]> git.argeo.org Git - lgpl/argeo-commons.git/blob - server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java
Fix list mapping
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jcr / src / main / java / org / argeo / server / jcr / mvc / JcrBrowserController.java
1 package org.argeo.server.jcr.mvc;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.List;
6
7 import javax.jcr.Item;
8 import javax.jcr.NodeIterator;
9 import javax.jcr.RepositoryException;
10 import javax.jcr.Session;
11 import javax.jcr.Value;
12 import javax.jcr.query.Query;
13 import javax.jcr.query.QueryResult;
14 import javax.jcr.query.Row;
15 import javax.jcr.query.RowIterator;
16
17 import org.springframework.stereotype.Controller;
18 import org.springframework.web.bind.annotation.RequestMapping;
19 import org.springframework.web.bind.annotation.RequestParam;
20 import org.springframework.web.context.request.RequestAttributes;
21 import org.springframework.web.context.request.WebRequest;
22
23 @Controller
24 public class JcrBrowserController implements JcrMvcConstants {
25
26 @RequestMapping("/getJcrItem.*")
27 public Item getJcrItem(WebRequest webRequest,
28 @RequestParam("path") String path) throws RepositoryException {
29 return ((Session) webRequest.getAttribute(REQUEST_ATTR_SESSION,
30 RequestAttributes.SCOPE_REQUEST)).getItem(path);
31 }
32
33 @RequestMapping("/queryJcrNodes.*")
34 public List<String> queryJcrNodes(WebRequest webRequest,
35 @RequestParam("statement") String statement,
36 @RequestParam("language") String language)
37 throws RepositoryException {
38 Session session = ((Session) webRequest.getAttribute(
39 REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST));
40 Query query = session.getWorkspace().getQueryManager().createQuery(
41 statement, language);
42 NodeIterator nit = query.execute().getNodes();
43 List<String> paths = new ArrayList<String>();
44 while (nit.hasNext()) {
45 paths.add(nit.nextNode().getPath());
46 }
47 return paths;
48 }
49
50 @RequestMapping("/queryJcrTable.*")
51 public List<List<String>> queryJcrTable(WebRequest webRequest,
52 @RequestParam("statement") String statement,
53 @RequestParam("language") String language)
54 throws RepositoryException {
55 Session session = ((Session) webRequest.getAttribute(
56 REQUEST_ATTR_SESSION, RequestAttributes.SCOPE_REQUEST));
57 Query query = session.getWorkspace().getQueryManager().createQuery(
58 statement, language);
59 QueryResult queryResult = query.execute();
60 List<List<String>> results = new ArrayList<List<String>>();
61 results.add(Arrays.asList(queryResult.getColumnNames()));
62 RowIterator rit = queryResult.getRows();
63
64 while (rit.hasNext()) {
65 Row row = rit.nextRow();
66 List<String> lst = new ArrayList<String>();
67 for (Value value : row.getValues()) {
68 lst.add(value.getString());
69 }
70 }
71 return results;
72 }
73 }