]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
Playing with CMIS queries.
authorRichard Millet <remillet@berkeley.edu>
Mon, 30 Apr 2012 20:14:39 +0000 (13:14 -0700)
committerRichard Millet <remillet@berkeley.edu>
Mon, 30 Apr 2012 20:14:39 +0000 (13:14 -0700)
pom.xml
services/common/pom.xml
services/common/src/main/java/org/collectionspace/services/nuxeo/client/java/RepositoryJavaClientImpl.java

diff --git a/pom.xml b/pom.xml
index a0bb1827c237182ef40361ed282f27a0fe3cd994..ca333075ae0f4797e9c429aa852415d7b6c831c2 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
        <properties>\r
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\r
                \r
-               <nuxeo.general.release>5.5-RC1</nuxeo.general.release>\r
+               <nuxeo.general.release>5.5</nuxeo.general.release>\r
                <nuxeo.shell.version>${nuxeo.general.release}</nuxeo.shell.version>\r
                <nuxeo.platform.version>${nuxeo.general.release}</nuxeo.platform.version>\r
                <nuxeo.core.version>${nuxeo.general.release}</nuxeo.core.version>               \r
index ebf68c57745e46a88040b447d3b3311817c2d771..036f44da757352be4f01ccd2395dd439b0fac6e6 100644 (file)
             <artifactId>nuxeo-runtime-osgi</artifactId>\r
             <version>${nuxeo.core.version}</version>\r
         </dependency>\r
+        <dependency>\r
+            <groupId>org.nuxeo.ecm.core</groupId>\r
+               <artifactId>nuxeo-opencmis-bindings</artifactId>\r
+            <version>${nuxeo.core.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.apache.chemistry.opencmis</groupId>\r
+            <artifactId>chemistry-opencmis-server-bindings</artifactId>\r
+            <version>0.6.0</version>\r
+            <classifier>classes</classifier>\r
+        </dependency>        \r
         <dependency>\r
             <groupId>org.osgi</groupId>\r
             <artifactId>org.osgi.core</artifactId>\r
             <name>External release repository of the EL4J project</name>\r
             <url>http://public-el4.elca-services.ch/el4j/maven2repository</url>\r
         </repository>\r
+        <repository>\r
+            <snapshots>\r
+                <enabled>false</enabled>\r
+            </snapshots>\r
+            <releases>\r
+                <enabled>true</enabled>\r
+            </releases>\r
+            <id>Apache</id>\r
+            <name>External release repository of the Apache projects</name>\r
+            <url>https://repository.apache.org/content/groups/public/</url>\r
+        </repository>\r
     </repositories>\r
 \r
     <build>\r
index c80800b91de52369ed2544faf26323bf33844029..99e8e84c68a0227358c9cd63b1d5337156edd7e0 100644 (file)
  */
 package org.collectionspace.services.nuxeo.client.java;
 
+import java.io.Serializable;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 
 import javax.ws.rs.WebApplicationException;
@@ -48,12 +50,21 @@ import org.nuxeo.common.utils.IdUtils;
 import org.nuxeo.ecm.core.api.ClientException;
 import org.nuxeo.ecm.core.api.DocumentModel;
 import org.nuxeo.ecm.core.api.DocumentModelList;
+import org.nuxeo.ecm.core.api.IterableQueryResult;
 import org.nuxeo.ecm.core.api.impl.DocumentModelListImpl;
 import org.nuxeo.ecm.core.api.DocumentRef;
 import org.nuxeo.ecm.core.api.IdRef;
 import org.nuxeo.ecm.core.api.PathRef;
 import org.nuxeo.ecm.core.api.repository.RepositoryInstance;
 
+//
+// CSPACE-5036 - How to make CMISQL queries from Nuxeo
+//
+import org.apache.chemistry.opencmis.commons.server.CallContext;
+import org.apache.chemistry.opencmis.server.impl.CallContextImpl;
+import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoCmisService;
+import org.nuxeo.ecm.core.opencmis.impl.server.NuxeoRepository;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -685,7 +696,41 @@ public class RepositoryJavaClientImpl implements RepositoryClient<PoxPayloadIn,
         return uri;
     }
 
-
+    /*
+     * See CSPACE-5036 - How to make CMISQL queries from Nuxeo
+     */
+    private void makeCMISQLQuery(RepositoryInstance repoSession) {
+       // the NuxeoRepository should be constructed only once, then cached
+        // (its construction is expensive)
+        try {
+                       NuxeoRepository repo = new NuxeoRepository(repoSession.getRepositoryName(),
+                                       repoSession.getRootDocument().getId());
+                       logger.debug("Repository ID:" + repo.getId() + " Root folder:" + repo.getRootFolderId());
+                       
+                       CallContextImpl callContext = new CallContextImpl(CallContext.BINDING_LOCAL,
+                                       repo.getId(), false);
+                                       callContext.put(CallContext.USERNAME, repoSession.getPrincipal().getName());
+                                       NuxeoCmisService cmisService = new NuxeoCmisService(repo, callContext, repoSession);
+
+                                       // do a query
+//                                     String query = "SELECT cmis:objectId, dc:title FROM cmis:document WHERE dc:title = 'REMBlobs'"; // try eaee111c-a8d8-48c7-95cb
+                                       String query = "SELECT cmis:objectId, cmis:name, dc:title, nuxeo:lifecycleState FROM Dimension WHERE dc:title = 'REMBlobs'"; // try eaee111c-a8d8-48c7-95cb
+//                                     String query = "SELECT * from Dimension D JOIN Relation R ON D.cmis:name = R.relations_common:objectcsid";
+//                                     String query = "SELECT * FROM cmis:document WHERE dc:title = 'REMBlobs'"; // try eaee111c-a8d8-48c7-95cb
+                                       IterableQueryResult result = repoSession.queryAndFetch(query, "CMISQL", cmisService);
+                                       for (Map<String, Serializable> row : result) {
+                                               logger.debug("dc:title is: " + (String)row.get("dc:title")
+                                                               + " Hierarchy Table ID is:" + row.get("cmis:objectId")
+                                                               + " cmis:name is: " + row.get("cmis:name")
+                                                               + " nuxeo:lifecycleState is: " + row.get("nuxeo:lifecycleState")
+                                                               ); 
+                                       }                       
+               } catch (ClientException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+    }
+     
     /**
      * getFiltered get all documents for an entity service from the Document repository,
      * given filter parameters specified by the handler. 
@@ -709,6 +754,11 @@ public class RepositoryJavaClientImpl implements RepositoryClient<PoxPayloadIn,
         try {
             handler.prepare(Action.GET_ALL);
             repoSession = getRepositorySession();
+            //
+            // CSPACE-5036 - How to make CMISQL queries from Nuxeo
+            //
+            makeCMISQLQuery(repoSession);
+            
             DocumentModelList docList = null;
             String query = NuxeoUtils.buildNXQLQuery(ctx, queryContext);