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

Reply via email to