Author: tdraier
Date: Wed Dec 19 17:07:20 2007
New Revision: 19386

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19386&repname=
=3Djahia
Log:
alfresco support

Added:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoFileNodeWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoStoreProvider.java
Modified:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/JCRStoreProvider.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/JCRStoreProv=
ider.java&rev=3D19386&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java Wed Dec 19 17:07:20 2007
@@ -9,18 +9,24 @@
 import org.jahia.services.sites.JahiaSite;
 import org.jahia.services.usermanager.JahiaUser;
 import org.jahia.services.usermanager.JahiaUserManagerService;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
 =

 import javax.jcr.*;
+import javax.jcr.nodetype.NodeTypeIterator;
+import javax.jcr.nodetype.NodeType;
 import javax.jcr.observation.Event;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import javax.naming.Reference;
 import javax.naming.StringRefAddr;
-import javax.naming.NamingException;
 import javax.naming.spi.ObjectFactory;
 import javax.servlet.ServletRequest;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.ArrayList;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -38,11 +44,11 @@
     private String factory;
     private String url;
     private String webdavPath;
-    private String user;
-    private String password;
+    protected String user;
+    protected String password;
     private boolean loginModuleActivated =3D true;
 =

-    private Repository repo =3D null;
+    protected Repository repo =3D null;
 =

     private boolean isMainStorage =3D false;
     private ThreadLocal systemSession =3D new ThreadLocal();
@@ -252,7 +258,7 @@
         return s;
     }
 =

-    private void registerNamespaces(Workspace workspace) throws Repository=
Exception {
+    protected void registerNamespaces(Workspace workspace) throws Reposito=
ryException {
         NamespaceRegistry namespaceRegistry =3D workspace.getNamespaceRegi=
stry();
         try {
             namespaceRegistry.getURI(Constants.JAHIA_PREF);
@@ -273,6 +279,23 @@
         }
     }
 =

+    public NodeType getNodeType(String name) throws RepositoryException {
+        return getSystemSession().getWorkspace().getNodeTypeManager().getN=
odeType(name);
+    }
+
+    public List getAvailableTypes() throws RepositoryException {
+        List types =3D new ArrayList();
+        NodeTypeIterator nti =3D getSystemSession().getWorkspace().getNode=
TypeManager().getMixinNodeTypes();
+        while (nti.hasNext()) {
+            NodeType nt =3D nti.nextNodeType();
+            if (nt.isNodeType(Constants.JAHIAMIX_EXTENSION) && !Constants.=
JAHIAMIX_EXTENSION.equals(nt.getName())) {
+                types.add(nt.getName());
+            }
+        }
+        return types;
+
+    }
+
     public JCRFileNodeWrapper getFileNodeWrapper(String localPath, JahiaUs=
er user, Session session) {
         return new JCRFileNodeWrapper(localPath, user, session, this);
     }
@@ -318,6 +341,16 @@
         isMainStorage =3D mainStorage;
     }
 =

+    public void exportDocumentView(String path, ContentHandler ch, JahiaUs=
er user, boolean noRecurse) {
+        try {
+            getSession(user).exportDocumentView(path, ch, true, noRecurse);
+        } catch (SAXException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+    }
+
     private void dump (Node n) throws RepositoryException {
         System.out.println(n.getPath());
         PropertyIterator pit=3Dn.getProperties();

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/alfresco/AlfrescoFileNodeWrapper.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/=
alfresco/AlfrescoFileNodeWrapper.java&rev=3D19386&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoFileNodeWrapper.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoFileNodeWrapper.java Wed Dec 19 17:07:20=
 2007
@@ -0,0 +1,160 @@
+package org.jahia.services.content.impl.alfresco;
+
+import org.jahia.services.content.FileNode;
+import org.jahia.services.content.JCRFileNodeWrapper;
+import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.content.JCRStoreService;
+import org.jahia.services.usermanager.JahiaUser;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 6 d=C3=83=C2=A9c. 2007
+ * Time: 17:07:16
+ * To change this template use File | Settings | File Templates.
+ */
+public class AlfrescoFileNodeWrapper extends JCRFileNodeWrapper {
+    public AlfrescoFileNodeWrapper(String localPath, JahiaUser user, Sessi=
on session, JCRStoreProvider provider) {
+        super(localPath, user, session, provider);
+    }
+
+    public boolean isCollection() {
+        if (exception !=3D null) {
+            return false;
+        }
+        try {
+            return objectNode.isNodeType("cm:folder") || objectNode.getPat=
h().equals("/") || objectNode.isNodeType("sys:store_root");
+        } catch (RepositoryException e) {            =

+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    public String getName () {
+        if (exception !=3D null) {
+            return null;
+        }
+        try {
+            if (objectNode.getPath().equals("/") && provider.getMountPoint=
().length()>1) {
+                return provider.getMountPoint().substring(1);
+            } else {
+                return objectNode.getProperty("cm:name").getString();
+            }
+        } catch (RepositoryException e) {
+            logger.error("Repository error",e);
+        }
+        return null;
+    }
+
+    public long getContentLength() {
+        try {
+            return objectNode.getProperty("cm:content").getLength();
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return 0L;
+    }
+
+    public String getCreationUser() {
+        try {
+            return objectNode.getProperty("cm:author").getString();
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return null;
+    }
+
+    public Date getCreationDateAsDate() {
+        try {
+            return objectNode.getProperty("cm:created").getDate().getTime(=
);
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return null;
+    }
+
+    public String getModificationUser() {
+        try {
+            return objectNode.getProperty("cm:modifier").getString();
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return null;
+
+    }
+
+    public Date getLastModifiedAsDate() {
+        try {
+            return objectNode.getProperty("cm:modified").getDate().getTime=
();
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return null;
+    }
+
+    public String getUrl() {
+        if (objectNode !=3D null) {
+            try {
+                return jcrProvider.getContextPath() + "/d/d/workspace/" + =
objectNode.getSession().getWorkspace().getName() + "/" + objectNode.getUUID=
() + "/" + getName();
+            } catch (RepositoryException e) {
+                logger.error("Cannot get file path",e);
+            }
+        }
+        return "";
+    }
+
+    public FileNode createCollection(String name) {
+        name =3D JCRStoreService.cleanTitle(name);
+        try {
+            Node n =3D objectNode.addNode(name, "cm:folder");
+            n.setProperty("cm:name", name);
+            return jcrProvider.getFileNodeWrapper(n.getPath(), user, sessi=
on);
+        } catch (RepositoryException e) {
+            logger.error("Repository error",e);
+        }
+        return null;
+    }
+
+    public String uploadFile(String name, InputStream is, String contentTy=
pe) {
+        try {
+            if (is !=3D null) {
+                Node node =3D objectNode.addNode(name, "cm:content");
+
+                try {
+                    node.setProperty("cm:content", is);
+                } finally {
+                    is.close();
+                }
+                node.setProperty("cm:name", name);
+                node.setProperty("cm:modified", new GregorianCalendar());
+
+            }
+
+            return name;
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return null;
+        } catch (IOException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+            return null;
+        }
+    }
+
+    public InputStream downloadFile() {
+        try {
+            return objectNode.getProperty("cm:content").getStream();
+        } catch (RepositoryException e) {
+            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
+        }
+        return null;
+    }
+}

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/impl/alfresco/AlfrescoStoreProvider.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/services/content/impl/=
alfresco/AlfrescoStoreProvider.java&rev=3D19386&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoStoreProvider.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/impl/alfresco/AlfrescoStoreProvider.java Wed Dec 19 17:07:20 2=
007
@@ -0,0 +1,42 @@
+package org.jahia.services.content.impl.alfresco;
+
+import org.jahia.api.Constants;
+import org.jahia.services.content.JCRStoreProvider;
+import org.jahia.services.content.JCRFileNodeWrapper;
+import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.jaas.JahiaLoginModule;
+
+import javax.jcr.*;
+import java.lang.reflect.Method;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 5 d=C3=83=C2=A9c. 2007
+ * Time: 13:57:39
+ * To change this template use File | Settings | File Templates.
+ */
+public class AlfrescoStoreProvider extends JCRStoreProvider {
+
+
+    public JCRFileNodeWrapper getFileNodeWrapper(String path, JahiaUser us=
er, Session session) {
+        return new AlfrescoFileNodeWrapper(path, user, session, this);
+    }
+
+    // Alfresco does not support NS registration at workspace level, NS mu=
st be registered
+    // on session level (non standard)
+    protected void registerNamespaces(Workspace workspace) throws Reposito=
ryException {
+//        NamespaceRegistry ns =3D workspace.getNamespaceRegistry();
+//        try {
+//            Object s =3D ns.getClass().getMethod("getNamespaceService", =
new Class[] {}).invoke(ns, new Object[]{});
+//            Method m =3D s.getClass().getMethod("registerNamespace", new=
 Class[] {String.class, String.class});
+//            m.invoke(s, new Object[] {Constants.JAHIA_PREF, Constants.JA=
HIA_NS});
+//            m.invoke(s, new Object[] {Constants.JAHIANT_PREF, Constants.=
JAHIANT_NS});
+//            m.invoke( s, new Object[] {Constants.JAHIAMIX_PREF, Constant=
s.JAHIAMIX_NS});
+//        } catch (Exception e) {
+//            e.printStackTrace();  //To change body of catch statement us=
e File | Settings | File Templates.
+//        }
+//        super.registerNamespaces(workspace);
+    }
+
+}

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to