Author: tdraier
Date: Tue Jun 26 18:20:37 2007
New Revision: 17780

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17780&repname=
=3Djahia
Log:
precalculate workflow states in database

Added:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/dao/Jahi=
aLanguagesStatesDAO.java   (contents, props changed)
      - copied, changed from r17710, branches/JAHIA-5-0-SP-BRANCH/core/src/=
java/org/jahia/hibernate/dao/JahiaWorkflowDAO.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaLanguagesStatesManager.java
      - copied, changed from r17710, branches/JAHIA-5-0-SP-BRANCH/core/src/=
java/org/jahia/hibernate/manager/JahiaWorkflowManager.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStates.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStatesPK.java
Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowEventListener.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java

Copied: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/dao/=
JahiaLanguagesStatesDAO.java (from r17710, branches/JAHIA-5-0-SP-BRANCH/cor=
e/src/java/org/jahia/hibernate/dao/JahiaWorkflowDAO.java)
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.java&=
rev=3D17780&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-SP-BRANCH/core/src/java/org/jahia/hibernate/dao/Jahi=
aWorkflowDAO.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/dao/Jahi=
aLanguagesStatesDAO.java Tue Jun 26 18:20:37 2007
@@ -20,21 +20,17 @@
 package org.jahia.hibernate.dao;
 =

 import org.jahia.hibernate.model.JahiaWorkflow;
+import org.jahia.hibernate.model.JahiaLanguagesStates;
+import org.jahia.hibernate.model.JahiaLanguagesStatesPK;
 import org.springframework.orm.hibernate3.HibernateTemplate;
 import org.hibernate.exception.ConstraintViolationException;
 =

 import java.util.List;
 import java.util.Iterator;
 =

-/**
- * Created by IntelliJ IDEA.
- * User: Rincevent
- * Date: 21 avr. 2005
- * Time: 10:27:23
- * To change this template use File | Settings | File Templates.
- */
-public class JahiaWorkflowDAO extends AbstractGeneratorDAO {
-    public void save(JahiaWorkflow workflow) {
+public class JahiaLanguagesStatesDAO extends AbstractGeneratorDAO {
+
+    public void save(JahiaLanguagesStates workflow) {
         HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
         hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);
         try {
@@ -46,38 +42,33 @@
         }
     }
 =

-    public void update(JahiaWorkflow workflow) {
+    public void update(JahiaLanguagesStates ls) {
         HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
         hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);
-        hibernateTemplate.merge(workflow);
+        hibernateTemplate.merge(ls);
         hibernateTemplate.flush();
     }
 =

-    public JahiaWorkflow findByPK(String objectKey) {
+    public JahiaLanguagesStates findByPK(String objectKey, String language=
Code) {
         HibernateTemplate template =3D getHibernateTemplate();
         template.setCacheQueries(true);
-        return (JahiaWorkflow) template.load(JahiaWorkflow.class,objectKey=
);
+        return (JahiaLanguagesStates) template.load(JahiaLanguagesStates.c=
lass,new JahiaLanguagesStatesPK(objectKey, languageCode));
     }
 =

-    public List getLinkedObjectForMain(String mainObjectKey) {
-        String hql =3D "select w.objectKey from JahiaWorkflow w where w.ma=
inObjectkey=3D?";
+    public List findByObjectKey(String objectKey) {
+        String hql =3D "from JahiaLanguagesStates l where l.comp_id.object=
key=3D?";
         final HibernateTemplate template =3D getHibernateTemplate();
         template.setCacheQueries(true);
-        return template.find(hql, new Object[]{mainObjectKey});
-
+        template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+        return template.find(hql, new Object[]{objectKey});
     }
 =

-    public void clearMainObject(String objectKey) {
-        String hql =3D "from JahiaWorkflow w where w.mainObjectkey=3D?";
+    public void clearEntries(String objectKey) {
+        String hql =3D "from JahiaLanguagesStates l where l.comp_id.object=
key=3D?";
         final HibernateTemplate template =3D getHibernateTemplate();
         template.setCacheQueries(true);
         template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
-        List l =3D  template.find(hql, new Object[]{objectKey});
-        for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
-            JahiaWorkflow jahiaWorkflow =3D (JahiaWorkflow) iterator.next(=
);
-            jahiaWorkflow.setMainObjectkey(null);
-            template.update(jahiaWorkflow);
-        }
-
+        template.deleteAll(template.find(hql, new Object[]{objectKey}));
     }
-}
+
+}
\ No newline at end of file

Copied: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/mana=
ger/JahiaLanguagesStatesManager.java (from r17710, branches/JAHIA-5-0-SP-BR=
ANCH/core/src/java/org/jahia/hibernate/manager/JahiaWorkflowManager.java)
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesStatesManag=
er.java&rev=3D17780&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-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaWorkflowManager.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaLanguagesStatesManager.java Tue Jun 26 18:20:37 2007
@@ -19,19 +19,17 @@
  */
 package org.jahia.hibernate.manager;
 =

-import org.apache.commons.collections.FastHashMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.jahia.exceptions.JahiaInitializationException;
-import org.jahia.hibernate.dao.JahiaWorkflowDAO;
-import org.jahia.hibernate.model.JahiaWorkflow;
-import org.jahia.services.cache.Cache;
+import org.jahia.hibernate.dao.JahiaLanguagesStatesDAO;
+import org.jahia.hibernate.model.JahiaLanguagesStates;
+import org.jahia.hibernate.model.JahiaLanguagesStatesPK;
 import org.jahia.services.cache.CacheService;
-import org.jahia.services.workflow.WorkflowService;
-import org.hibernate.ObjectNotFoundException;
 =

 import java.util.Map;
 import java.util.List;
+import java.util.HashMap;
+import java.util.Iterator;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -40,15 +38,14 @@
  * Time: 10:19:06
  * To change this template use File | Settings | File Templates.
  */
-public class JahiaWorkflowManager {
-    public static final String WORKFLOW_CACHE_NAME =3D "JahiaWorkflowManag=
erCache";
-    private JahiaWorkflowDAO dao =3D null;
-    private Log log =3D LogFactory.getLog(JahiaWorkflowManager.class);
-    private Cache fast =3D null;
+public class JahiaLanguagesStatesManager {
+    private JahiaLanguagesStatesDAO dao =3D null;
+    private Log log =3D LogFactory.getLog(JahiaLanguagesStatesManager.clas=
s);
+
     private CacheService cacheService =3D null;
 =

 =

-    public void setJahiaWorkflowDAO(JahiaWorkflowDAO dao) {
+    public void setJahiaLanguagesStatesDAO(JahiaLanguagesStatesDAO dao) {
         this.dao =3D dao;
     }
 =

@@ -56,111 +53,38 @@
         this.cacheService =3D cacheService;
     }
 =

-    public void createWorkflowEntry(String objectKey, int mode, String wor=
kflowName, String processId) {
-        JahiaWorkflow workflow =3D new JahiaWorkflow(objectKey, new Intege=
r(mode), workflowName, processId);
-        dao.save(workflow);
-        if (fast =3D=3D null) {
-            try {
-                fast =3D cacheService.createCacheInstance(WORKFLOW_CACHE_N=
AME);
-            } catch (JahiaInitializationException e) {
-                log.error("Cannot get cache",e);
-            }
+    public Map getLanguagesStates(String objectKey) {
+        List l =3D dao.findByObjectKey(objectKey);
+        Map results =3D new HashMap();
+        for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
+            JahiaLanguagesStates jahiaLanguagesStates =3D (JahiaLanguagesS=
tates) iterator.next();
+            results.put(jahiaLanguagesStates.getComp_id().getLanguageCode(=
), jahiaLanguagesStates.getWorkflowState());
         }
-        if (fast !=3D null)
-            fast.remove(objectKey);
+        return results;
     }
 =

-    public void updateWorkflowEntry(String objectKey, int mode, String wor=
kflowName, String processId) {
-        JahiaWorkflow workflow =3D null;
-        synchronized(this) {
-            try {
-                workflow =3D dao.findByPK(objectKey);
-                workflow.setMode(new Integer(mode));
-                workflow.setExternalname(workflowName);
-                workflow.setExternalprocess(processId);
-                dao.update(workflow);
-            } catch (Exception e) {
-                workflow =3D new JahiaWorkflow(objectKey, new Integer(mode=
), workflowName, processId);
-                dao.save(workflow);
-            }
-        }
-        =

-        if (fast =3D=3D null) {
-            try {
-                fast =3D cacheService.createCacheInstance(WORKFLOW_CACHE_N=
AME);
-            } catch (JahiaInitializationException e) {
-                log.error("Cannot get cache",e);
-            }
-        }
-        if (fast !=3D null)
-        fast.remove(objectKey);
+    public void clearEntries(String objectKey) {
+        dao.clearEntries(objectKey);
     }
 =

-    public void updateWorkflowEntry(String objectKey, String main) {
-        JahiaWorkflow workflow =3D null;
+    public void updateLanguagesStates(String objectKey, String languageCod=
e, int value) {
+        JahiaLanguagesStates ls =3D null;
         synchronized(this) {
             try {
-                workflow =3D dao.findByPK(objectKey);
-                workflow.setMainObjectkey(main);
-                dao.update(workflow);
-            } catch (Exception e) {
-                workflow =3D new JahiaWorkflow(objectKey, null,null,null);
-                workflow.setMainObjectkey(main);
-                dao.save(workflow);
-            }
-        }
-
-        if (fast =3D=3D null) {
-            try {
-                fast =3D cacheService.createCacheInstance(WORKFLOW_CACHE_N=
AME);
-            } catch (JahiaInitializationException e) {
-                log.error("Cannot get cache",e);
-            }
-        }
-        if (fast !=3D null)
-        fast.remove(objectKey);
-    }
-
-    public Map getWorkflowEntry(String objectKey) {
-        if (log.isDebugEnabled()) {
-            log.debug("getWorkflowEntry for object key : " + objectKey);
-        }
-        Map map =3D null;
-        if (fast =3D=3D null) {
-            try {
-                fast =3D cacheService.createCacheInstance(WORKFLOW_CACHE_N=
AME);
-            } catch (JahiaInitializationException e) {
-                log.error("Cannot get cache",e);
-            }
-        }
-        if (fast !=3D null)
-            map =3D (Map) fast.get(objectKey);
-        if (map =3D=3D null) {
-            JahiaWorkflow workflow =3D null;
-            map =3D new FastHashMap(3);
-            try {
-                workflow =3D dao.findByPK(objectKey);
-                if (workflow !=3D null) {
-                    map.put(WorkflowService.FIELD_MODE, workflow.getMode()=
);
-                    map.put(WorkflowService.FIELD_EXTERNAL_NAME, workflow.=
getExternalname());
-                    map.put(WorkflowService.FIELD_EXTERNAL_PROCESS, workfl=
ow.getExternalprocess());
-                    map.put(WorkflowService.FIELD_MAIN, workflow.getMainOb=
jectkey());
+                ls =3D dao.findByPK(objectKey, languageCode);
+                Integer workflowState =3D new Integer(value);
+                if (!ls.getWorkflowState().equals(workflowState)) {
+                    ls.setWorkflowState(workflowState);
+                    dao.update(ls);
                 }
             } catch (Exception e) {
-                log.debug("no entry for key " + objectKey, e);
+                ls =3D new JahiaLanguagesStates(new JahiaLanguagesStatesPK=
(objectKey, languageCode), new Integer(value));
+                dao.save(ls);
             }
-            if (fast !=3D null)
-                fast.put(objectKey, map);
         }
-        return map;
     }
 =

-    public List getLinkedObjectForMain(String mainObjectKey) {
-        return dao.getLinkedObjectForMain(mainObjectKey);
-    }
+    public void updateLanguagesStates(String objectKey, int value) {
 =

-    public void clearMainObject(String objectKey) {
-        dao.clearMainObject(objectKey);
-        fast.flush();
     }
-}
+}
\ No newline at end of file

Added: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model=
/JahiaLanguagesStates.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/JahiaLanguagesStates=
.java&rev=3D17780&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-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStates.java (added)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStates.java Tue Jun 26 18:20:37 2007
@@ -0,0 +1,77 @@
+package org.jahia.hibernate.model;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import java.io.Serializable;
+
+/**
+ * @hibernate.class table=3D"jahia_languages_states" lazy=3D"false"
+ * @hibernate.cache usage=3D"nonstrict-read-write"
+ */
+public class JahiaLanguagesStates implements Serializable {
+
+    private JahiaLanguagesStatesPK comp_id;
+
+    private Integer workflowState;
+
+
+    public JahiaLanguagesStates(JahiaLanguagesStatesPK comp_id, Integer wo=
rkflowState) {
+        this.comp_id =3D comp_id;
+        this.workflowState =3D workflowState;
+    }
+
+    public JahiaLanguagesStates() {
+    }
+
+    /**
+     * @hibernate.id generator-class=3D"assigned"
+     * @return composite key with object key and language
+     */
+    public JahiaLanguagesStatesPK getComp_id() {
+        return this.comp_id;
+    }
+
+    public void setComp_id(JahiaLanguagesStatesPK comp_id) {
+        this.comp_id =3D comp_id;
+    }
+
+    /**
+     * @hibernate.property column=3D"WORKLOWSTATE"
+     * @return the workflow state value
+     */
+    public Integer getWorkflowState() {
+        return workflowState;
+    }
+
+    public void setWorkflowState(Integer workflowState) {
+        this.workflowState =3D workflowState;
+    }
+
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("comp_id", getComp_id())
+                .toString();
+    }
+
+    public boolean equals(Object obj) {
+        if (this =3D=3D obj) return true;
+
+        if (obj !=3D null && this.getClass() =3D=3D obj.getClass()) {
+            final JahiaLanguagesStates castOther =3D (JahiaLanguagesStates=
) obj;
+            return new EqualsBuilder()
+                .append(this.getComp_id(), castOther.getComp_id())
+                .isEquals();
+        }
+        return false;
+    }
+
+    public int hashCode() {
+        return new HashCodeBuilder()
+                .append(getComp_id())
+                .toHashCode();
+    }
+
+
+}

Added: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model=
/JahiaLanguagesStatesPK.java
URL: https://svndev.jahia.net/websvn/filedetails.php?path=3D/branches/JAHIA=
-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/JahiaLanguagesStates=
PK.java&rev=3D17780&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-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStatesPK.java (added)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/model/Ja=
hiaLanguagesStatesPK.java Tue Jun 26 18:20:37 2007
@@ -0,0 +1,84 @@
+package org.jahia.hibernate.model;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import java.io.Serializable;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: toto
+ * Date: 25 juin 2007
+ * Time: 11:51:26
+ * To change this template use File | Settings | File Templates.
+ */
+public class JahiaLanguagesStatesPK extends CachedPK implements Serializab=
le {
+    /**
+     * identifier field
+     */
+    private String objectkey;
+
+    private String languageCode;
+
+
+    public JahiaLanguagesStatesPK(String objectkey, String languageCode) {
+        this.objectkey =3D objectkey;
+        this.languageCode =3D languageCode;
+    }
+
+    public JahiaLanguagesStatesPK() {
+    }
+
+    /**
+     * @hibernate.property column=3D"WORKLOWSTATE"
+     * type=3D"java.lang.String" length=3D"40" column=3D"OBJECTKEY"
+     */
+    public String getObjectkey() {
+        return objectkey;
+    }
+
+    public void setObjectkey(String objectkey) {
+        this.objectkey =3D objectkey;
+    }
+
+    /**
+     * @hibernate.property column=3D"WORKLOWSTATE"
+     * type=3D"java.lang.String" length=3D"10" column=3D"LANGUAGE"
+     */
+    public String getLanguageCode() {
+        return languageCode;
+    }
+
+    public void setLanguageCode(String languageCode) {
+        this.languageCode =3D languageCode;
+    }
+
+    public String effectiveToString() {
+        return new ToStringBuilder(this)
+                .append("objectKey", getObjectkey())
+                .append("languageCode", getLanguageCode())
+                .toString();
+    }
+
+    public boolean equals(Object obj) {
+        if (this =3D=3D obj) return true;
+
+        if (obj !=3D null && this.getClass() =3D=3D obj.getClass()) {
+            final JahiaLanguagesStatesPK castOther =3D (JahiaLanguagesStat=
esPK) obj;
+            return new EqualsBuilder()
+                .append(this.getObjectkey(), castOther.getObjectkey())
+                .append(this.getLanguageCode(), castOther.getLanguageCode(=
))
+                .isEquals();
+        }
+        return false;
+    }
+
+    public int hashCode() {
+        return new HashCodeBuilder()
+                .append(getObjectkey())
+                .append(getLanguageCode())
+                .toHashCode();
+    }
+
+}
\ No newline at end of file

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/WorkflowEventListener.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/WorkflowEventListener.jav=
a&rev=3D17780&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-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowEventListener.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowEventListener.java Tue Jun 26 18:20:37 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: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/wor=
kflow/WorkflowService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/workflow/WorkflowService.java&rev=
=3D17780&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-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/workflow/=
WorkflowService.java Tue Jun 26 18:20:37 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,
@@ -1250,9 +1276,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

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

Reply via email to