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