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