Author: tdraier
Date: Fri Jul 6 12:17:30 2007
New Revision: 17895
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17895&repname=
=3Djahia
Log:
precalculate workflow states in database (backport 17780 17781)
Added:
trunk/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.jav=
a (contents, props changed)
- copied, changed from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src/=
java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.java
trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesStatesMan=
ager.java (contents, props changed)
- copied, changed from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src/=
java/org/jahia/hibernate/manager/JahiaLanguagesStatesManager.java
trunk/core/src/java/org/jahia/hibernate/model/JahiaLanguagesStates.java
- copied unchanged from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src=
/java/org/jahia/hibernate/model/JahiaLanguagesStates.java
trunk/core/src/java/org/jahia/hibernate/model/JahiaLanguagesStatesPK.ja=
va
- copied unchanged from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src=
/java/org/jahia/hibernate/model/JahiaLanguagesStatesPK.java
Modified:
trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava
trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java
trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-dao.xml
trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml
trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-manager.xml
trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-services.xml
Copied: trunk/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO=
.java (from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hi=
bernate/dao/JahiaLanguagesStatesDAO.java)
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaLanguagesStatesDAO.java&rev=3D17895&repname=3Dj=
ahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
(empty)
Copied: trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesState=
sManager.java (from r17785, branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/=
jahia/hibernate/manager/JahiaLanguagesStatesManager.java)
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaLanguagesStatesManager.java&rev=3D17895&rep=
name=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
(empty)
Modified: trunk/core/src/java/org/jahia/services/workflow/WorkflowEventList=
ener.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/workflow/WorkflowEventListener.java&rev=3D17895&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
--- trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava (original)
+++ trunk/core/src/java/org/jahia/services/workflow/WorkflowEventListener.j=
ava Fri Jul 6 12:17:30 2007
@@ -53,7 +53,7 @@
public void objectChanged(WorkflowEvent je) {
ContentObject object =3D (ContentObject) je.getObject();
if (object !=3D null) {
- ContentObjectKey.flushCache(object);
+ ContentObjectKey.flushCache(object);
}
}
=
@@ -107,6 +107,11 @@
}
=
mode =3D service.getInheritedMode(mainObject);
+
+ if (mode !=3D WorkflowService.INACTIVE) {
+ service.storeLanguageState((ContentObjectKey) mainObject.g=
etObjectKey(),languageCode,EntryLoadRequest.STAGING_WORKFLOW_STATE);
+ }
+
//JahiaSite site =3D ServicesRegistry.getInstance().getJahiaS=
itesService().getSite(mainObject.getSiteID());
JahiaSite site =3D ServicesRegistry.getInstance().getJahiaSit=
esService().getSite(object.getSiteID());
if (user =3D=3D null) {
Modified: trunk/core/src/java/org/jahia/services/workflow/WorkflowService.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/workflow/WorkflowService.java&rev=3D17895&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
--- trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java Fr=
i Jul 6 12:17:30 2007
@@ -24,6 +24,7 @@
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.hibernate.manager.JahiaWorkflowManager;
import org.jahia.hibernate.manager.SpringContextSingleton;
+import org.jahia.hibernate.manager.JahiaLanguagesStatesManager;
import org.jahia.params.ProcessingContext;
import org.jahia.registries.ServicesRegistry;
import org.jahia.services.JahiaService;
@@ -79,6 +80,7 @@
=
private Map externals;
JahiaWorkflowManager workflowManager;
+ JahiaLanguagesStatesManager languagesStatesManager;
public static final String WORKFLOWLANGUAGESSTATES_CACHENAME =3D "Work=
flowServiceCache";
public static final String WORKFLOWMODE_CACHENAME =3D "WorkflowModeCac=
he";
public static final String WORKFLOWHARDLINKEDOBJECTS_CACHENAME =3D "Wo=
rkflowHardLinkedObjectsCache";
@@ -102,6 +104,10 @@
this.workflowManager =3D workflowManager;
}
=
+ public void setLanguagesStatesManager(JahiaLanguagesStatesManager lang=
uagesStatesManager) {
+ this.languagesStatesManager =3D languagesStatesManager;
+ }
+
public void setCacheService(CacheService cacheService) {
this.cacheService =3D cacheService;
}
@@ -153,15 +159,15 @@
}
=
private void preload(ContentObjectKey k, int level) throws JahiaExcept=
ion {
- if (level-- =3D=3D 0) {
- return;
- }
- getLanguagesStates(k);
- List l =3D getUnlinkedContentObjects(k);
- for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
- ContentObjectKey contentObjectKey =3D (ContentObjectKey) itera=
tor.next();
- preload(contentObjectKey, level);
- }
+// if (level-- =3D=3D 0) {
+// return;
+// }
+// getLanguagesStates(k);
+// List l =3D getUnlinkedContentObjects(k);
+// for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
+// ContentObjectKey contentObjectKey =3D (ContentObjectKey) ite=
rator.next();
+// preload(contentObjectKey, level);
+// }
}
=
public void stop() {
@@ -422,7 +428,8 @@
all =3D getAllInheritedObjects(object);
}
=
- ContentObjectKey oldMainObject =3D null;
+ ContentObjectKey oldMainObject =3D getMainLinkObject(object);
+ boolean detach =3D false;
int oldInheritedMode =3D getInheritedMode(object);
=
if (oldInheritedMode =3D=3D WorkflowService.EXTERNAL) {
@@ -441,14 +448,15 @@
}
} else {
// Detach a group from old main group
- oldMainObject =3D getMainLinkObject(object);
+ detach =3D true;
}
}
=
if (mode =3D=3D LINKED) {
workflowManager.clearMainObject(workflowMainObject.toString());
+ languagesStatesManager.clearEntries(oldMainObject.toString());
} else if (oldMode =3D=3D LINKED) {
- workflowManager.clearMainObject(getMainLinkObject(object).toSt=
ring());
+ workflowManager.clearMainObject(oldMainObject.toString());
}
=
if (mode =3D=3D LINKED || oldMode =3D=3D LINKED) {
@@ -527,7 +535,7 @@
schedulerServ.scheduleJobNow(jobDetail);
}
=
- if (oldMainObject !=3D null) {
+ if (detach) {
String name =3D getInheritedExternalWorkflowName(oldMainObject=
);
ExternalWorkflow workflow =3D getExternalWorkflow(name);
String inheritedExternalWorkflowProcessId =3D getInheritedExte=
rnalWorkflowProcessId(oldMainObject);
@@ -550,6 +558,14 @@
if (oldMode =3D=3D LINKED || mode =3D=3D LINKED) {
ServicesRegistry.getInstance().getJahiaSiteMapService().resetS=
iteMap();
}
+ if (oldMode =3D=3D LINKED) {
+ storeLanguageState(oldMainObject);
+ storeLanguageState(object);
+ }
+ if (mode =3D=3D LINKED) {
+ storeLanguageState(getMainLinkObject(object));
+ languagesStatesManager.clearEntries(object.toString());
+ }
}
=
public boolean hasChanged(ContentObjectKey object, int mode, String wo=
rkflowName, String processId) throws JahiaException {
@@ -971,6 +987,14 @@
}
=
public Map getLanguagesStates(ContentObjectKey contentObject) throws J=
ahiaException {
+ Map r =3D languagesStatesManager.getLanguagesStates(contentObject.=
toString());
+ if (r.isEmpty()) {
+ r =3D storeLanguageState(getMainLinkObject(contentObject));
+ }
+ return r;
+ }
+
+ public Map evalLanguagesStates(ContentObjectKey contentObject) throws =
JahiaException {
Map results =3D null;
GroupCacheKey cacheKey =3D new GroupCacheKey(WORKFLOWSERVICE_KEYPR=
EFIX+contentObject.toString(), new HashSet());
results =3D (Map) cache.get(cacheKey);
@@ -1062,6 +1086,8 @@
}
cache.flushGroup(MAINPREFIX +getTopLinkedObject(object).toStri=
ng());
}
+
+ storeLanguageState(getMainLinkObject(object));
}
=
public ActivationTestResults isValidForActivation(ContentObject object,
@@ -1252,9 +1278,25 @@
ContentActivationEvent event =3D new ContentActivationEvent(conten=
tObject,objectKey, jParams.getUser(), languageCodes, true, saveVersion, jPa=
rams, stateModifContext, testActivationResults);
ServicesRegistry.getInstance().getJahiaEventService().fireAfterGro=
upActivation(event);
=
+ storeLanguageState(getMainLinkObject(objectKey));
+
return activationResults;
}
=
+ public Map storeLanguageState(ContentObjectKey key) throws JahiaExcept=
ion {
+ Map m =3D evalLanguagesStates(key);
+ for (Iterator iterator =3D m.keySet().iterator(); iterator.hasNext=
();) {
+ String lang =3D (String) iterator.next();
+ Integer value =3D (Integer) m.get(lang);
+ languagesStatesManager.updateLanguagesStates(key.toString(), l=
ang, value.intValue());
+ }
+ return m;
+ }
+
+ public void storeLanguageState(ContentObjectKey key, String languageCo=
de, int value) {
+ languagesStatesManager.updateLanguagesStates(key.toString(), langu=
ageCode, value);
+ }
+
=
/**
* Performs an undo staging rollback on the given content object
Modified: trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-dao.x=
ml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/WEB-INF/etc/spring/applicationcontext-dao.xml&rev=3D17895&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
--- trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-dao.xml (or=
iginal)
+++ trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-dao.xml Fri=
Jul 6 12:17:30 2007
@@ -186,6 +186,11 @@
<ref bean=3D"sessionFactory"/>
</property>
</bean>
+ <bean id=3D"jahiaLanguagesStatesDAO" class=3D"org.jahia.hibernate.dao.=
JahiaLanguagesStatesDAO" parent=3D"abstractGeneratorDAO">
+ <property name=3D"sessionFactory">
+ <ref bean=3D"sessionFactory"/>
+ </property>
+ </bean>
<bean id=3D"nstepUserDAO" class=3D"org.jahia.workflow.nstep.dao.hibern=
ate.UserDAOHibernate" parent=3D"abstractGeneratorDAO">
<property name=3D"sessionFactory">
<ref bean=3D"sessionFactory"/>
Modified: trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hiber=
nate.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/WEB-INF/etc/spring/applicationcontext-hibernate.xml&rev=3D17895&repname=3D=
jahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml (original)
+++ trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml Fri Jul 6 12:17:30 2007
@@ -99,6 +99,7 @@
<value>org/jahia/hibernate/model/JahiaUser.hbm.xml</value>
<value>org/jahia/hibernate/model/JahiaUserProp.hbm.xml</va=
lue>
<value>org/jahia/hibernate/model/JahiaWorkflow.hbm.xml</va=
lue>
+ <value>org/jahia/hibernate/model/JahiaLanguagesStates.hbm.=
xml</value>
<value>org/jahia/workflow/nstep/model/User.hbm.xml</value>
<value>org/jahia/workflow/nstep/model/Workflow.hbm.xml</va=
lue>
<value>org/jahia/workflow/nstep/model/WorkflowStep.hbm.xml=
</value>
Modified: trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-manag=
er.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/WEB-INF/etc/spring/applicationcontext-manager.xml&rev=3D17895&repname=3Dja=
hia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-manager.xml=
(original)
+++ trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-manager.xml=
Fri Jul 6 12:17:30 2007
@@ -571,6 +571,18 @@
</bean>
</property>
</bean>
+ <bean id=3D"org.jahia.hibernate.manager.JahiaLanguagesStatesManager" p=
arent=3D"txProxyTemplate">
+ <property name=3D"target">
+ <bean class=3D"org.jahia.hibernate.manager.JahiaLanguagesState=
sManager">
+ <property name=3D"jahiaLanguagesStatesDAO">
+ <ref bean=3D"jahiaLanguagesStatesDAO"/>
+ </property>
+ <property name=3D"cacheService">
+ <ref bean=3D"JahiaCacheService"/>
+ </property>
+ </bean>
+ </property>
+ </bean>
<bean id=3D"org.jahia.hibernate.manager.JahiaBigTextDataManager" paren=
t=3D"txProxyTemplate">
<property name=3D"target">
<bean class=3D"org.jahia.hibernate.manager.JahiaBigTextDataMan=
ager">
Modified: trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-servi=
ces.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/WEB-INF/etc/spring/applicationcontext-services.xml&rev=3D17895&repname=3Dj=
ahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-services.xm=
l (original)
+++ trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-services.xm=
l Fri Jul 6 12:17:30 2007
@@ -726,6 +726,9 @@
<property name=3D"workflowManager">
<ref bean=3D"org.jahia.hibernate.manager.JahiaWorkflow=
Manager"/>
</property>
+ <property name=3D"languagesStatesManager">
+ <ref bean=3D"org.jahia.hibernate.manager.JahiaLanguage=
sStatesManager"/>
+ </property>
<property name=3D"cacheService">
<ref bean=3D"JahiaCacheService"/>
</property>
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list