Author: tdraier
Date: Fri Jan 18 15:35:45 2008
New Revision: 19539

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19539&repname=
=3Djahia
Log:
-moved metadata and acl listener in rules listener
-added rules examples based on user properties
-added rule support for removal of node and properties
-added import drop box for file based import ( was slide  JahiaProductionLi=
stener )

Added:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/DeletedNodeWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/DeletedPropertyWrapper.java
Modified:
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/DefaultEventListener.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRSiteListener.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRStoreProvider.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/AutomationListener.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/NodeWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/PropertyWrapper.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/Service.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/User.java
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/jahia-nodetypes.cnd
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/rules.dsl
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/rules.dsrl
    branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/user.xml

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/DefaultEventListener.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/DefaultEvent=
Listener.java&rev=3D19539&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/DefaultEventListener.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/DefaultEventListener.java Fri Jan 18 15:35:45 2008
@@ -23,7 +23,6 @@
         propertiesToIgnore =3D new HashSet();
         propertiesToIgnore.add(Constants.LAST_MODIFIED);
         propertiesToIgnore.add(Constants.AUTHOR);
-        propertiesToIgnore.add(Constants.APPLY_ACL);
         propertiesToIgnore.add(Constants.LAST_AUTHOR);
         propertiesToIgnore.add(Constants.JCR_PRIMARYTYPE);
         propertiesToIgnore.add(Constants.JCR_UUID);

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/JCRSiteListener.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/JCRSiteListe=
ner.java&rev=3D19539&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/JCRSiteListener.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/JCRSiteListener.java Fri Jan 18 15:35:45 2008
@@ -36,7 +36,7 @@
 public class JCRSiteListener extends JahiaEventListener {
     public void siteAdded(JahiaEvent je) {
         try {
-            ServicesRegistry.getInstance().getJCRStoreService().getMainSto=
reProvider().deployNewSite((JahiaSite) je.getObject());
+            ServicesRegistry.getInstance().getJCRStoreService().getMainSto=
reProvider().deployNewSite((JahiaSite) je.getObject(), je.getProcessingCont=
ext().getUser());
         } catch (RepositoryException e) {
             e.printStackTrace();
         }

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=3D19539&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 Fri Jan 18 15:35:45 2008
@@ -141,10 +141,7 @@
         final Session session =3D getSystemSession();
         final Workspace workspace =3D session.getWorkspace();
 =

-        workspace.getObservationManager().addEventListener(new JCRMetadata=
Listener(this), Event.NODE_ADDED + Event.PROPERTY_ADDED + Event.PROPERTY_CH=
ANGED + Event.PROPERTY_REMOVED, "/", true, null,new String[] {Constants.JAH=
IAMIX_METADATA},false);
-        workspace.getObservationManager().addEventListener(new AutomationL=
istener(this), Event.NODE_ADDED + Event.PROPERTY_ADDED + Event.PROPERTY_CHA=
NGED + Event.PROPERTY_REMOVED, "/", true, null,null,false);
-        workspace.getObservationManager().addEventListener(new AclListener=
(this), Event.PROPERTY_ADDED, "/", true, null,new String[] {"jmix:acl"},fal=
se);
-        workspace.getObservationManager().addEventListener(new AxisListene=
r(this), Event.NODE_ADDED + Event.PROPERTY_ADDED + Event.PROPERTY_CHANGED +=
 Event.PROPERTY_REMOVED, "/", true, null,new String[] {Constants.NT_HIERARC=
HYNODE},false);
+        workspace.getObservationManager().addEventListener(new AutomationL=
istener(this), Event.NODE_ADDED + Event.NODE_REMOVED + Event.PROPERTY_ADDED=
 + Event.PROPERTY_CHANGED + Event.PROPERTY_REMOVED, "/", true, null,null,fa=
lse);
 =

         // The thread should always checks if the session is still alive a=
nd reconnect it if lost
         Thread t =3D new Thread() {
@@ -259,6 +256,17 @@
         return s;
     }
 =

+    public Session getSystemSession(String username) throws RepositoryExce=
ption {
+        Session s;
+        if (loginModuleActivated) {
+            s =3D repo.login(JahiaLoginModule.getSystemCredentials(usernam=
e));
+        } else {
+            s =3D repo.login(new SimpleCredentials(user, password.toCharAr=
ray()));
+        }
+        registerNamespaces(s.getWorkspace());
+        return s;
+    }
+
     protected void registerNamespaces(Workspace workspace) throws Reposito=
ryException {
         NamespaceRegistry namespaceRegistry =3D workspace.getNamespaceRegi=
stry();
         try {
@@ -319,49 +327,45 @@
     }
 =

 =

-    public void deployNewSite(JahiaSite site) throws RepositoryException {
-        Session session =3D getSystemSession();
-        try {
-            Query q =3D session.getWorkspace().getQueryManager().createQue=
ry("SELECT * FROM jmix:virtualsitesFolder", Query.SQL);
-            QueryResult qr =3D q.execute();
-            NodeIterator ni =3D qr.getNodes();
-            try {
-                while (ni.hasNext()) {
-                    Node sitesFolder =3D ni.nextNode();
-                    String options =3D "";
-                    if (sitesFolder.hasProperty("j:virtualsitesFolderConfi=
g")) {
-                        options =3D sitesFolder.getProperty("j:virtualsite=
sFolderConfig").getString();
-                    }
-
-                    Node f =3D getPathFolder(sitesFolder, site.getSiteKey(=
), options);
-                    try {
-                        f.getNode(site.getSiteKey());
-                    } catch (PathNotFoundException e) {
-                        if (sitesFolder.hasProperty("j:virtualsitesFolderS=
keleton")) {
-                            session.importXML(f.getPath(), new FileInputSt=
ream(Jahia.getSettings().getJahiaEtcDiskPath() + "/repository/"+ sitesFolde=
r.getProperty("j:virtualsitesFolderSkeleton").getString()),ImportUUIDBehavi=
or.IMPORT_UUID_CREATE_NEW);
-                            session.move(f.getPath()+"/site", f.getPath()+=
"/"+site.getSiteKey());
-                        } else {
-                            f.addNode(site.getSiteKey(), Constants.JAHIANT=
_VIRTUALSITE);
-                        }
+    public void deployNewSite(JahiaSite site, JahiaUser user) throws Repos=
itoryException {
+        Session session =3D getThreadSession(user);
 =

-                        Node siteNode =3D f.getNode(site.getSiteKey());
-                        siteNode.setProperty("j:name", site.getSiteKey());
-                        siteNode.setProperty("j:server", site.getServerNam=
e());
+        Query q =3D session.getWorkspace().getQueryManager().createQuery("=
SELECT * FROM jmix:virtualsitesFolder", Query.SQL);
+        QueryResult qr =3D q.execute();
+        NodeIterator ni =3D qr.getNodes();
+        try {
+            while (ni.hasNext()) {
+                Node sitesFolder =3D ni.nextNode();
+                String options =3D "";
+                if (sitesFolder.hasProperty("j:virtualsitesFolderConfig"))=
 {
+                    options =3D sitesFolder.getProperty("j:virtualsitesFol=
derConfig").getString();
+                }
 =

-                        session.save();
+                Node f =3D getPathFolder(sitesFolder, site.getSiteKey(), o=
ptions);
+                try {
+                    f.getNode(site.getSiteKey());
+                } catch (PathNotFoundException e) {
+                    if (sitesFolder.hasProperty("j:virtualsitesFolderSkele=
ton")) {
+                        session.importXML(f.getPath(), new FileInputStream=
(Jahia.getSettings().getJahiaEtcDiskPath() + "/repository/"+ sitesFolder.ge=
tProperty("j:virtualsitesFolderSkeleton").getString()),ImportUUIDBehavior.I=
MPORT_UUID_CREATE_NEW);
+                        session.move(f.getPath()+"/site", f.getPath()+"/"+=
site.getSiteKey());
+                    } else {
+                        f.addNode(site.getSiteKey(), Constants.JAHIANT_VIR=
TUALSITE);
                     }
+
+                    Node siteNode =3D f.getNode(site.getSiteKey());
+                    siteNode.setProperty("j:name", site.getSiteKey());
+                    siteNode.setProperty("j:server", site.getServerName());
+
+                    session.save();
                 }
-            } catch (IOException e) {
-                e.printStackTrace();
             }
-
-        } finally {
-            session.logout();
+        } catch (IOException e) {
+            e.printStackTrace();
         }
     }
 =

     private void deployNewUser(String username) throws RepositoryException=
 {
-        Session session =3D getSystemSession();
+        Session session =3D getSystemSession(username);
         try {
             Query q =3D session.getWorkspace().getQueryManager().createQue=
ry("SELECT * FROM jmix:usersFolder", Query.SQL);
             QueryResult qr =3D q.execute();
@@ -383,11 +387,9 @@
                             session.importXML(f.getPath(), new FileInputSt=
ream(Jahia.getSettings().getJahiaEtcDiskPath() + "/repository/" + usersFold=
erNode.getProperty("j:usersFolderSkeleton").getString()),ImportUUIDBehavior=
.IMPORT_UUID_CREATE_NEW);
                             session.move(f.getPath()+"/user", f.getPath()+=
"/"+username);
                         } else {
-                            f.addNode(username, Constants.JAHIANT_FOLDER);
+                            Node userNode =3D f.addNode(username, Constant=
s.JAHIANT_FOLDER);
+                            JCRFileNodeWrapper.changePermissions(userNode,=
 session, "u:"+username, "rw");
                         }
-                        Node userNode =3D f.getNode(username);
-                        session.save();
-                        JCRFileNodeWrapper.changePermissions(userNode, ses=
sion, "u:"+username, "rw");
                         session.save();
                     }
                 }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/automation/AutomationListener.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/automation/A=
utomationListener.java&rev=3D19539&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/automation/AutomationListener.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/AutomationListener.java Fri Jan 18 15:35:45 2008
@@ -12,15 +12,15 @@
 import org.jahia.api.Constants;
 import org.jahia.bin.Jahia;
 import org.jahia.jaas.JahiaLoginModule;
-import org.jahia.services.content.JCRStoreProvider;
 import org.jahia.services.content.DefaultEventListener;
+import org.jahia.services.content.JCRStoreProvider;
 =

 import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
 import javax.jcr.Session;
 import javax.jcr.observation.Event;
 import javax.jcr.observation.EventIterator;
-import javax.jcr.observation.EventListener;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
@@ -55,10 +55,15 @@
 =

     private void initRules() {
         try {
+            RuleBaseConfiguration conf =3D new RuleBaseConfiguration();
+            //conf.setAssertBehaviour( AssertBehaviour.IDENTITY );
+            //conf.setRemoveIdentities( true );
+            ruleBase =3D RuleBaseFactory.newRuleBase( conf );
+
             PackageBuilderConfiguration cfg =3D new PackageBuilderConfigur=
ation();
             JavaDialectConfiguration javaConf =3D (JavaDialectConfiguratio=
n) cfg.getDialectConfiguration( "java" );
             javaConf.setCompiler( JavaDialectConfiguration.JANINO );
-            =

+
             PackageBuilder builder =3D new PackageBuilder(cfg);
             InputStreamReader drl =3D new InputStreamReader(new FileInputS=
tream(Jahia.getSettings().getJahiaEtcDiskPath() + "/repository/rules.dsrl")=
);
             InputStreamReader dsl =3D new InputStreamReader(new FileInputS=
tream(Jahia.getSettings().getJahiaEtcDiskPath() + "/repository/rules.dsl"));
@@ -70,13 +75,11 @@
 =

             if (errors.getErrors().length =3D=3D 0) {
                 Package pkg =3D builder.getPackage();
-                RuleBaseConfiguration conf =3D new RuleBaseConfiguration();
-                //conf.setAssertBehaviour( AssertBehaviour.IDENTITY );
-                //conf.setRemoveIdentities( true );
-                ruleBase =3D RuleBaseFactory.newRuleBase( conf );
                 ruleBase.addPackage( pkg  );
             } else {
+                logger.error("--------------------------------------------=
-------------------------------------");
                 logger.error("Errors when compiling rules : "+errors.toStr=
ing());
+                logger.error("--------------------------------------------=
-------------------------------------");
             }
         } catch (ClassNotFoundException e) {
             e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
@@ -88,9 +91,12 @@
     public void onEvent(EventIterator eventIterator) {
         Map eventsMap =3D new HashMap();
 =

-        if (ruleBase =3D=3D null) {
-            return;
-        }
+//        if (ruleBase =3D=3D null) {
+            initRules();
+            if (ruleBase =3D=3D null) {
+                return;
+            }
+//        }
 =

         List list =3D new ArrayList();
 =

@@ -117,7 +123,7 @@
                                     list.add(rn);
 =

                                 }
-                            } else {
+                            } else if (event.getType() =3D=3D Event.PROPER=
TY_ADDED || event.getType() =3D=3D Event.PROPERTY_CHANGED) {
                                 String path =3D event.getPath();
                                 String propertyName =3D path.substring(pat=
h.lastIndexOf('/')+1);
                                 if (!propertiesToIgnore.contains(propertyN=
ame)) {
@@ -134,6 +140,24 @@
                                         list.add(new PropertyWrapper(rn, p=
));
                                     }
                                 }
+                            } else if (event.getType() =3D=3D Event.NODE_R=
EMOVED) {
+                                list.add(new DeletedNodeWrapper(event.getP=
ath()));
+                            } else if (event.getType() =3D=3D Event.PROPER=
TY_REMOVED) {
+                                String path =3D event.getPath();
+                                int index =3D path.lastIndexOf('/');
+                                String nodePath =3D path.substring(0, inde=
x);
+                                String propertyName =3D path.substring(ind=
ex +1);
+                                try {
+                                    Node n =3D (Node) s.getItem(nodePath);
+                                    NodeWrapper rn =3D (NodeWrapper) event=
sMap.get(n);
+                                    if (rn =3D=3D null) {
+                                        rn =3D new NodeWrapper(n);
+                                        eventsMap.put(n,rn);
+                                    }
+                                    list.add(new DeletedPropertyWrapper(rn=
,propertyName));
+                                } catch (PathNotFoundException e) {
+                                    // ignore if parent has also been dele=
ted ?
+                                }
                             }
                         }
                     } catch (Exception e) {
@@ -141,13 +165,12 @@
                     }
                 }
                 if (!list.isEmpty()) {
-                    list.add(new User(username));
-
                     logger.info("Executing rule for "+list);
                    =

                     StatelessSession session =3D ruleBase.newStatelessSess=
ion();
                     session.setGlobal("service",  Service.getInstance());
                     session.setGlobal("logger", logger);
+                    session.setGlobal("user", new User(username));
                     session.execute(list);
 =

                     logger.info("Rules executed for "+list);

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/automation/DeletedNodeWrapper.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/autom=
ation/DeletedNodeWrapper.java&rev=3D19539&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/automation/DeletedNodeWrapper.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/DeletedNodeWrapper.java Fri Jan 18 15:35:45 2008
@@ -0,0 +1,32 @@
+package org.jahia.services.content.automation;
+
+import org.drools.spi.KnowledgeHelper;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 17 janv. 2008
+ * Time: 15:17:58
+ * To change this template use File | Settings | File Templates.
+ */
+public class DeletedNodeWrapper {
+    private String path;
+
+    public DeletedNodeWrapper(NodeWrapper nodeWrapper, KnowledgeHelper dro=
ols) throws RepositoryException {
+        path =3D nodeWrapper.getPath();
+        nodeWrapper.getNode().remove();
+        drools.retract(nodeWrapper);
+
+        // should also retract properties and subnodes
+    }
+
+    public DeletedNodeWrapper(String path) throws RepositoryException {
+        this.path =3D path;
+    }
+
+    public String toString() {
+        return "deleted "+path;
+    }
+}

Added: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/s=
ervices/content/automation/DeletedPropertyWrapper.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/autom=
ation/DeletedPropertyWrapper.java&rev=3D19539&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/automation/DeletedPropertyWrapper.java (added)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/DeletedPropertyWrapper.java Fri Jan 18 15:35:45 2008
@@ -0,0 +1,44 @@
+package org.jahia.services.content.automation;
+
+import org.drools.spi.KnowledgeHelper;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 17 janv. 2008
+ * Time: 15:20:31
+ * To change this template use File | Settings | File Templates.
+ */
+public class DeletedPropertyWrapper {
+    private String nodePath;
+    private NodeWrapper node;
+    private String name;
+
+    public DeletedPropertyWrapper(PropertyWrapper property, KnowledgeHelpe=
r drools) throws RepositoryException {
+        name =3D property.getName();
+        node =3D property.getNode();
+        nodePath =3D node.getPath();
+        property.getProperty().remove();
+        drools.retract(property);
+    }
+
+    public DeletedPropertyWrapper(NodeWrapper node, String property) throw=
s RepositoryException {
+        this.node =3D node;
+        nodePath =3D node.getPath();
+        name =3D property;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public NodeWrapper getNode() {
+        return node;
+    }
+
+    public String toString() {
+        return "deleted "+nodePath+"/"+name;
+    }
+}

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/automation/NodeWrapper.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/automation/N=
odeWrapper.java&rev=3D19539&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/automation/NodeWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/NodeWrapper.java Fri Jan 18 15:35:45 2008
@@ -70,6 +70,7 @@
 =

     public List getTypes() throws RepositoryException {
         List r =3D new ArrayList();
+        r.add(node.getPrimaryNodeType().getName());
         NodeType[] nts =3D node.getMixinNodeTypes();
         for (int i =3D 0; i < nts.length; i++) {
             NodeType nt =3D nts[i];

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/automation/PropertyWrapper.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/automation/P=
ropertyWrapper.java&rev=3D19539&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/automation/PropertyWrapper.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/PropertyWrapper.java Fri Jan 18 15:35:45 2008
@@ -15,6 +15,8 @@
  * To change this template use File | Settings | File Templates.
  */
 public class PropertyWrapper {
+    private String path;
+
     private Property property;
 =

     private NodeWrapper nodeWrapper;
@@ -39,11 +41,13 @@
         } else if (o instanceof byte[]) {
             property =3D node.setProperty(name, new ByteArrayInputStream((=
byte[])o));
         }
+        path =3D property.getPath();
     }
 =

-    public PropertyWrapper(NodeWrapper nodeWrapper, Property property) {
+    public PropertyWrapper(NodeWrapper nodeWrapper, Property property) thr=
ows RepositoryException {
         this.nodeWrapper =3D nodeWrapper;
         this.property =3D property;
+        path =3D property.getPath();
     }
 =

     public String getName() throws RepositoryException {
@@ -72,13 +76,12 @@
         return nodeWrapper;
     }
 =

+    Property getProperty() {
+        return property;
+    }
+
     public String toString() {
-        try {
-            return property.getPath();
-        } catch (RepositoryException e) {
-            e.printStackTrace();  //To change body of catch statement use =
File | Settings | File Templates.
-        }
-        return "";
+        return path;
     }
 =

 }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/automation/Service.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/automation/S=
ervice.java&rev=3D19539&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/automation/Service.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/Service.java Fri Jan 18 15:35:45 2008
@@ -1,18 +1,34 @@
 package org.jahia.services.content.automation;
 =

+import org.apache.log4j.Logger;
 import org.drools.WorkingMemory;
 import org.drools.spi.KnowledgeHelper;
 import org.jahia.api.Constants;
 import org.jahia.bin.Jahia;
+import org.jahia.content.ContentObject;
+import org.jahia.content.ContentObjectKey;
+import org.jahia.params.ProcessingContext;
+import org.jahia.registries.ServicesRegistry;
+import org.jahia.services.content.JCRFileNodeWrapper;
+import org.jahia.services.importexport.ImportExportService;
+import org.jahia.services.importexport.ImportJob;
+import org.jahia.services.importexport.ProductionJob;
+import org.jahia.services.lock.LockKey;
+import org.jahia.services.lock.LockRegistry;
+import org.jahia.services.pages.ContentPage;
+import org.jahia.services.scheduler.BackgroundJob;
+import org.jahia.services.scheduler.SchedulerService;
+import org.jahia.services.sites.JahiaSite;
+import org.jahia.services.usermanager.JahiaUser;
 import org.jahia.tools.imageprocess.ImageProcess;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
 =

 import javax.jcr.Node;
+import javax.jcr.RepositoryException;
 import java.io.File;
 import java.io.FileInputStream;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -22,6 +38,7 @@
  * To change this template use File | Settings | File Templates.
  */
 public class Service {
+    private static Logger logger =3D Logger.getLogger(Service.class);
     private static Service instance;
 =

     private Map extractors;
@@ -78,4 +95,126 @@
             }
         }
     }
+
+    public void setPermissions(NodeWrapper node, String acl, KnowledgeHelp=
er drools) {
+        User user =3D (User) drools.getWorkingMemory().getGlobal("user");
+        StringTokenizer st =3D new StringTokenizer(acl,"|");
+        while (st.hasMoreTokens()) {
+            String ace =3D st.nextToken();
+            int colon =3D ace.lastIndexOf(':');
+            String userstring =3D ace.substring(0, colon);
+
+            if (userstring.equals("self")) {
+                userstring =3D "u:"+ user.getName();
+            }
+
+            Node jcrNode =3D node.getNode();
+            try {
+                JCRFileNodeWrapper.changePermissions(jcrNode, jcrNode.getS=
ession(), userstring, ace.substring(colon+1));
+            } catch (RepositoryException e) {
+                e.printStackTrace();  //To change body of catch statement =
use File | Settings | File Templates.
+            }
+        }
+    }
+
+    public void importNode(NodeWrapper node, KnowledgeHelper drools) throw=
s RepositoryException {
+        User user =3D (User) drools.getWorkingMemory().getGlobal("user");
+        String uri =3D node.getPath();
+        LockRegistry lockRegistry =3D LockRegistry.getInstance();
+        int i =3D uri.indexOf("importFromSite_");
+        if(i >-1) {
+            try {
+                logger.info("Export received from site "+uri);
+                ServicesRegistry registry =3D ServicesRegistry.getInstance=
();
+                ImportExportService importExportService =3D registry.getIm=
portExportService();
+//                String siteKey =3D m.getNamespaceAccessToken().getName();
+                JahiaSite siteByKey =3D registry.getJahiaSitesService().ge=
tSiteByKey("xx");
+                JahiaUser member =3D ServicesRegistry.getInstance().getJah=
iaSiteUserManagerService().getMember(siteByKey.getID(), user.getName());
+                ContentPage homeContentPage =3D siteByKey.getHomeContentPa=
ge();
+
+                ProcessingContext jParams =3D new ProcessingContext(Jahia.=
getSettings(), System.currentTimeMillis(), siteByKey, member, homeContentPa=
ge);
+                jParams.setCurrentLocale(Locale.getDefault());
+//                jParams.setServerName(m.getRequest().getServerName());
+                Class jobClass =3D ImportJob.class;
+                String dkey =3D homeContentPage.getObjectKey().toString();
+                JobDetail jobDetail =3D BackgroundJob.createJahiaJob("Prod=
uction job", jobClass, jParams);
+
+                SchedulerService schedulerServ =3D ServicesRegistry.getIns=
tance().getSchedulerService();
+
+                Set locks =3D new HashSet();
+                synchronized(lockRegistry) {
+                    // Export lock might have been set during differential=
 export with filename as lockkey
+                    LockKey lock =3D LockKey.composeLockKey(LockKey.IMPORT=
_ACTION + "_" + homeContentPage.getObjectKey().getType(), homeContentPage.g=
etID(), homeContentPage.getID());
+                    lockRegistry.release(lock, jParams.getUser(), uri.subs=
tring(i));
+                    // Upgrade to import lock
+                    lock =3D LockKey.composeLockKey(LockKey.IMPORT_ACTION =
+ "_" + homeContentPage.getObjectKey().getType(), homeContentPage.getID(), =
homeContentPage.getID());
+                    locks.add(lock);
+                    if (!lockRegistry.acquire(lock, jParams.getUser(), job=
Detail.getName(), BackgroundJob.getMaxExecutionTime(), false)) {
+                        logger.info("Cannot acquire lock, do not import");
+                        return;
+                    }
+                }
+
+                JobDataMap jobDataMap;
+                jobDataMap =3D jobDetail.getJobDataMap();
+                jobDataMap.put(BackgroundJob.JOB_LOCKS, locks);
+                jobDataMap.put(ImportJob.TARGET, dkey);
+                jobDataMap.put(BackgroundJob.JOB_DESTINATION_SITE, registr=
y.getJahiaSitesService().getSite(homeContentPage.getSiteID()).getSiteKey());
+                jobDataMap.put(ImportJob.URI, uri);
+                jobDataMap.put(ImportJob.CONTENT_TYPE,"application/zip");
+                jobDataMap.put(BackgroundJob.JOB_TYPE, ProductionJob.PRODU=
CTION_TYPE);
+                schedulerServ.scheduleJobNow(jobDetail);
+            } catch (Throwable e) {
+                logger.error("Error during import of file " + uri,e);
+                ServicesRegistry.getInstance().getCacheService().flushAllC=
aches();
+            }
+        }
+        if(uri.indexOf("importInto_")>-1) {
+            try {
+                logger.info("Import file "+uri);
+                ServicesRegistry registry =3D ServicesRegistry.getInstance=
();
+                ImportExportService importExportService =3D registry.getIm=
portExportService();
+
+                String destKey =3D uri.substring(uri.indexOf('_')+1, uri.l=
astIndexOf('_'));
+                ContentObject dest =3D ContentObject.getContentObjectInsta=
nce(ContentObjectKey.getInstance(destKey));
+                JahiaSite site =3D registry.getJahiaSitesService().getSite=
(dest.getSiteID());
+                JahiaUser member =3D ServicesRegistry.getInstance().getJah=
iaSiteUserManagerService().getMember(site.getID(), user.getName());
+                ContentPage page =3D ContentPage.getPage(dest.getPageID());
+
+                ProcessingContext jParams =3D new ProcessingContext(Jahia.=
getSettings(), System.currentTimeMillis(), site, member, page);
+//                jParams.setServerName(m.getRequest().getServerName());
+                jParams.setCurrentLocale(Locale.getDefault());
+                Class jobClass =3D ImportJob.class;
+
+                JobDetail jobDetail =3D BackgroundJob.createJahiaJob("Impo=
rt content to "+destKey, jobClass, jParams);
+
+                SchedulerService schedulerServ =3D ServicesRegistry.getIns=
tance().getSchedulerService();
+
+                if (dest !=3D null) {
+                    LockKey lock =3D LockKey.composeLockKey(LockKey.ADD_AC=
TION + "_" + dest.getObjectKey().getType(), dest.getID(), dest.getID());
+                    if (!lockRegistry.acquire(lock, jParams.getUser(), job=
Detail.getName(), BackgroundJob.getMaxExecutionTime())) {
+                        logger.info("Cannot acquire lock, do not import");
+                        return;
+                    }
+                }
+
+                JobDataMap jobDataMap;
+                jobDataMap =3D jobDetail.getJobDataMap();
+                jobDataMap.put(ImportJob.TARGET, destKey);
+                jobDataMap.put(BackgroundJob.JOB_DESTINATION_SITE, site.ge=
tID());
+                jobDataMap.put(ImportJob.URI, uri);
+                if (uri.toLowerCase().endsWith(".zip")) {
+                    jobDataMap.put("contentType","application/zip");
+                } else {
+                    jobDataMap.put("contentType","application/xml");
+                }
+                jobDataMap.put(BackgroundJob.JOB_TYPE,"import");
+                schedulerServ.scheduleJobNow(jobDetail);
+            } catch (Throwable e) {
+                logger.error("Error during import of file " + uri,e);
+                ServicesRegistry.getInstance().getCacheService().flushAllC=
aches();
+            }
+        }
+
+    }
 }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahi=
a/services/content/automation/User.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/automation/U=
ser.java&rev=3D19539&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/automation/User.java (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/java/org/jahia/serv=
ices/content/automation/User.java Fri Jan 18 15:35:45 2008
@@ -1,5 +1,6 @@
 package org.jahia.services.content.automation;
 =

+import org.jahia.jaas.JahiaLoginModule;
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.services.usermanager.JahiaGroup;
 import org.jahia.services.usermanager.JahiaGroupManagerService;
@@ -38,11 +39,14 @@
 =

     public List getProperties() {
         List r =3D new ArrayList();
-        Properties p =3D getJahiaUser().getProperties();
-        for (Iterator iterator =3D p.keySet().iterator(); iterator.hasNext=
();) {
-            String s =3D (String) iterator.next();
-            String v =3D p.getProperty(s);
-            r.add(new UserProperty(this, s, v));
+        JahiaUser jahiaUser =3D getJahiaUser();
+        if (jahiaUser !=3D null) {
+            Properties p =3D jahiaUser.getProperties();
+            for (Iterator iterator =3D p.keySet().iterator(); iterator.has=
Next();) {
+                String s =3D (String) iterator.next();
+                String v =3D p.getProperty(s);
+                r.add(new UserProperty(this, s,v));
+            }
         }
         return r;
     }
@@ -50,18 +54,23 @@
     public List getGroups() {
         List r =3D new ArrayList();
         JahiaGroupManagerService grpManager =3D ServicesRegistry.getInstan=
ce().getJahiaGroupManagerService();
-        List groups =3D grpManager.getUserMembership(getJahiaUser());
-        for (Iterator iterator =3D groups.iterator(); iterator.hasNext();)=
 {
-            String groupname =3D (String) iterator.next();
-            JahiaGroup group =3D grpManager.lookupGroup(groupname);
-            r.add(new Group(group));
+        JahiaUser jahiaUser =3D getJahiaUser();
+        if (jahiaUser !=3D null) {
+            List groups =3D grpManager.getUserMembership(jahiaUser);
+            for (Iterator iterator =3D groups.iterator(); iterator.hasNext=
();) {
+                String groupname =3D (String) iterator.next();
+                JahiaGroup group =3D grpManager.lookupGroup(groupname);
+                r.add(new Group(group));
+            }
         }
         return r;
     }
 =

     private JahiaUser getJahiaUser() {
         if (user =3D=3D null) {
-            user =3D ServicesRegistry.getInstance().getJahiaUserManagerSer=
vice().lookupUser(0,username);
+            if (!username.equals(JahiaLoginModule.SYSTEM) && !username.equ=
als(JahiaLoginModule.GUEST)) {
+                user =3D ServicesRegistry.getInstance().getJahiaUserManage=
rService().lookupUser(0,username);
+            }
         }
         return user;
     }

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-IN=
F/etc/repository/jahia-nodetypes.cnd
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/repository/jahia-nodetype=
s.cnd&rev=3D19539&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/webapp/WEB-INF/etc/=
repository/jahia-nodetypes.cnd (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/jahia-nodetypes.cnd Fri Jan 18 15:35:45 2008
@@ -80,6 +80,9 @@
  - j:name (string) jprotected
  - j:server (string) jprotected
 =

+[jnt:importDropBox] > jnt:folder
+ =

+
 // System types
 =

 [jnt:system]

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-IN=
F/etc/repository/rules.dsl
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/repository/rules.dsl&rev=
=3D19539&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/webapp/WEB-INF/etc/=
repository/rules.dsl (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/rules.dsl Fri Jan 18 15:35:45 2008
@@ -1,3 +1,6 @@
+[when]The current user belongs to a group=3Dg : Group (groupName : name) f=
rom user.groups
+[when]The current user has a property named {userproperty}=3DuserProperty =
: UserProperty( name =3D=3D "{userproperty}", propertyValue : value ) from =
user.properties
+
 [when]A new node is created=3Dnode : NodeWrapper ( )
 [when]- the mimetype is {mimetype}=3DmimeType =3D=3D "{mimetype}"
 [when]- the mimetype matches {mimetype}=3DmimeType matches "{mimetype}"
@@ -7,32 +10,39 @@
 =

 [when]The type {name} has been assigned to a node=3Dm : PropertyWrapper ( =
name =3D=3D "jcr:mixinTypes", stringValues contains "{name}", node : node )
 =

+[when]The {node} has a property {property}=3Dproperty : PropertyWrapper ( =
name =3D=3D "{property}" , propertyValue : stringValue ) from {node}.proper=
ties
 [when]The property {property} is not defined for the {node}=3Dnot ( Proper=
tyWrapper ( name =3D=3D "{property}" ) from {node}.properties )
+
+[when]A property has been set on a node=3Dproperty : PropertyWrapper ( pro=
pertyName : name, propertyValue : stringValue , node : node )
 [when]A property {property} has been set on a node=3Dproperty : PropertyWr=
apper ( name =3D=3D "{property}" , propertyValue : stringValue , node : nod=
e )
-[when]The {node} has a property {property}=3Dproperty : PropertyWrapper ( =
name =3D=3D "{property}" , propertyValue : stringValue ) from {node}.proper=
ties
 =

 [when]The node has a parent=3Dparent : NodeWrapper () from node.parent
+[when]- the mimetype is {mimetype}=3DmimeType =3D=3D "{mimetype}"
+[when]- the mimetype matches {mimetype}=3DmimeType matches "{mimetype}"
+[when]- it has the extension type {type}=3Dtypes contains "{type}"
 =

 [when]The {node} has a child=3Dchild : NodeWrapper ( ) from node.childNodes
 [when]- the mimetype is {mimetype}=3DmimeType =3D=3D "{mimetype}"
 [when]- the mimetype matches {mimetype}=3DmimeType matches "{mimetype}"
 [when]- it has the extension type {type}=3Dtypes contains "{type}"
 =

-[when]A user did this action=3Du : User ()
-[when]This user belongs to a group=3Dg : Group (groupName : name) from u.g=
roups
-[when]This user has a property named {property}=3Dp : UserProperty ( name =
=3D=3D "{property}", propertyValue : value ) from u.properties
-
 [then]Add the type {type}=3Dnode.addType ( "{type}", drools );
 =

+[then]Set the property {property} of the {node} with the name of the curre=
nt user=3Dinsert (new PropertyWrapper({node}, "{property}", user.getName())=
);
 [then]Set the property {property} of the {node} with the value of that pro=
perty=3Dinsert (new PropertyWrapper({node}, "{property}", propertyValue));
+[then]Set the property {property} of the {node} with the current time=3Din=
sert (new PropertyWrapper({node}, "{property}", new java.util.Date()));
 [then]Set the property {property} of the {node} with the value of {variabl=
e}=3Dinsert (new PropertyWrapper({node}, "{property}", {variable}));
 [then]Set the property {property} of the {node} with the value "{value}"=
=3Dinsert (new PropertyWrapper({node}, "{property}", "{value}"));
+[then]Remove this property=3Dinsert (new DeletedPropertyWrapper(property, =
drools));
 =

-[then]Assign permissions "{perms}" on the {node} to this group=3Dinsert (n=
ew PropertyWrapper({node}, "j:applyAcl", "g:" + groupName + ":{perms}"));
-[then]Assign permissions "{perms}" on the {node} to a group matching that =
property=3Dinsert (new PropertyWrapper({node}, "j:applyAcl", "g:" + propert=
yValue + ":{perms}"));
-[then]Assign permissions "{perms}" on the {node} to the group {group}=3Din=
sert (new PropertyWrapper({node}, "j:applyAcl", "g:" + {group} + ":{perms}"=
));
+[then]Assign permissions "{perms}" on the {node} to this group=3Dservice.s=
etPermissions({node},"g:" + groupName + ":{perms}", drools);
+[then]Assign permissions "{perms}" on the {node} to a group matching that =
property=3Dservice.setPermissions({node},"g:" + propertyValue + ":{perms}",=
 drools);
+[then]Assign permissions "{perms}" on the {node} to the group {group}=3Dse=
rvice.setPermissions({node},"g:" + {group} + ":{perms}", drools);
+[then]Assign permissions on the {node} from the property value=3Dservice.s=
etPermissions({node},propertyValue, drools);
 =

 [then]Extract the properties from the file=3Dservice.extractProperties(nod=
e, drools);
 [then]Create a thumbnail of size {size}=3Dservice.addThumbnail(node, {size=
});
 =

+[then]Import the node=3Dservice.importNode(node,drools);
+
 [then]Log {message} =3D logger.info({message});

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-IN=
F/etc/repository/rules.dsrl
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/repository/rules.dsrl&rev=
=3D19539&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/webapp/WEB-INF/etc/=
repository/rules.dsrl (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/rules.dsrl Fri Jan 18 15:35:45 2008
@@ -8,10 +8,42 @@
 expander rules.dsl
 =

 #declare any global variables here
+global User user
 global Service service
 global Logger logger
 =

-// First match
+rule "Metadata update / file created"
+    salience -10
+    no-loop
+    when
+        A new node is created
+        The node has a parent
+    then
+               Log "Metadata update / file created" + node
+        Set the property j:author of the node with the name of the current=
 user
+        Set the property j:lastAuthor of the parent with the name of the c=
urrent user
+        Set the property j:lastModified of the parent with the current time
+end
+
+rule "Metadata update / property modified"
+    salience -10
+    no-loop
+    when
+        A property has been set on a node
+    then
+               Log "Metadata update / file udpated" + node + " / " + property
+        Set the property j:lastModified of the node with the current time
+        Set the property j:lastAuthor of the node with the name of the cur=
rent user
+end
+
+rule "Set acl by property"
+    when
+        A property j:applyAcl has been set on a node
+    then
+        Log "Set acl by property"
+               Assign permissions on the node from the property value
+               Remove this property
+end
 =

 rule "Word type"
     salience 50
@@ -96,8 +128,7 @@
 rule "Assign acl to all my groups"
     when
         A new node is created
-        A user did this action
-        This user belongs to a group
+        The current user belongs to a group
     then
                Log "Assign acl to my group "+groupName
                Assign permissions "rw" on the node to this group
@@ -106,10 +137,9 @@
 rule "Assign acl to my service"
     when
         A new node is created
-        A user did this action
-        This user has a property named service
+        The current user has a property named service
     then
-               Log "Assign acl to my service"
+               Log "Assign acl to my service" +userProperty.getValue()
                Assign permissions "rw" on the node to a group matching that 
property
 end
 =

@@ -138,3 +168,12 @@
         Set the property j:status of the child with the value of that prop=
erty
 end
 =

+rule "Import file"
+    when
+        A new node is created
+        The node has a parent
+             - it has the extension type jnt:importDropBox
+    then
+               Import the node
+               Log "Import file"
+end

Modified: branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-IN=
F/etc/repository/user.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-3-=
DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/repository/user.xml&rev=
=3D19539&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/webapp/WEB-INF/etc/=
repository/user.xml (original)
+++ branches/JAHIA-5-0-3-DMS-JACKRABBIT-BRANCH/core/src/webapp/WEB-INF/etc/=
repository/user.xml Fri Jan 18 15:35:45 2008
@@ -1,8 +1,12 @@
 <user jcr:primaryType=3D"jnt:folder"
            xmlns:jcr=3D"http://www.jcp.org/jcr/1.0";
            xmlns:j=3D"http://www.jahia.org/jahia/1.0";
-           xmlns:jnt=3D"http://www.jahia.org/jahia/nt/1.0";>
+           xmlns:jnt=3D"http://www.jahia.org/jahia/nt/1.0"; j:applyAcl=3D"s=
elf:RW">
 =

-    <private jcr:primaryType=3D"jnt:folder" j:applyAcl=3D"g:guest:--" />
+    <private jcr:primaryType=3D"jnt:folder" j:applyAcl=3D"g:guest:--" >
+
+        <imports jcr:primaryType=3D"jnt:importDropBox" />
+
+    </private>
 =

 </user>
\ No newline at end of file

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

Reply via email to