Author: sshyrkov
Date: Mon Dec 10 15:00:06 2007
New Revision: 19355
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19355&repname=
=3Djahia
Log:
VOD-54: delete the language states entries first before update. In rare cas=
es there can be an inconsistency, if the entries are only updated
Modified:
trunk/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.java
trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesStatesMan=
ager.java
trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java
Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesD=
AO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaLanguagesStatesDAO.java&rev=3D19355&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/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.jav=
a (original)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaLanguagesStatesDAO.jav=
a Mon Dec 10 15:00:06 2007
@@ -40,6 +40,13 @@
}
}
=
+ public void saveOrUpdate(JahiaLanguagesStates workflow) {
+ HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
+ hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);
+ hibernateTemplate.saveOrUpdate(workflow);
+ hibernateTemplate.flush();
+ }
+
public void update(JahiaLanguagesStates ls) {
HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);
@@ -86,11 +93,16 @@
}
=
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);
- template.deleteAll(template.find(hql, new Object[]{objectKey}));
+ List entries =3D template.find(
+ "from JahiaLanguagesStates l where l.comp_id.objectkey=3D?=
",
+ new Object[] { objectKey });
+
+ final HibernateTemplate deleteTemplate =3D getHibernateTemplate();
+ deleteTemplate.setCacheQueries(false);
+ deleteTemplate.setFlushMode(HibernateTemplate.FLUSH_EAGER);
+ deleteTemplate.deleteAll(entries);
}
-
}
\ No newline at end of file
Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesSta=
tesManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaLanguagesStatesManager.java&rev=3D19355&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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesStatesMan=
ager.java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaLanguagesStatesMan=
ager.java Mon Dec 10 15:00:06 2007
@@ -61,23 +61,40 @@
dao.clearEntries(objectKey);
}
=
- public void updateLanguagesStates(final String objectKey,
+ public void updateLanguagesState(final String objectKey,
final String languageCode,
final int value,
final int siteID) {
- synchronized (this) {
- try {
- final JahiaLanguagesStates ls =3D dao.findByPK(objectKey, =
languageCode);
- final Integer workflowState =3D new Integer(value);
- if (!ls.getWorkflowState().equals(workflowState)) {
- ls.setWorkflowState(workflowState);
- ls.setSiteID(new Integer(siteID));
- dao.update(ls);
- }
- } catch (Exception e) {
- final JahiaLanguagesStates ls =3D new JahiaLanguagesStates(
- new JahiaLanguagesStatesPK(objectKey, languageCode=
), new Integer(value), new Integer(siteID));
- dao.save(ls);
+ try {
+ final Integer workflowState =3D new Integer(value);
+ final JahiaLanguagesStates ls =3D dao.findByPK(objectKey,
+ languageCode);
+ if (!ls.getWorkflowState().equals(workflowState)) {
+ ls.setWorkflowState(workflowState);
+ ls.setSiteID(new Integer(siteID));
+ dao.update(ls);
+ }
+ } catch (Exception e) {
+ final JahiaLanguagesStates ls =3D new JahiaLanguagesStates(
+ new JahiaLanguagesStatesPK(objectKey, languageCode),
+ new Integer(value), new Integer(siteID));
+ dao.save(ls);
+ }
+ }
+
+ public void updateLanguagesStates(final String objectKey,
+ final Map languageStates, final int siteID) {
+ clearEntries(objectKey);
+ if (!languageStates.isEmpty()) {
+ Integer siteIdObj =3D new Integer(siteID);
+ for (Iterator iterator =3D languageStates.entrySet().iterator(=
); iterator
+ .hasNext();) {
+ Map.Entry entry =3D (Map.Entry) iterator.next();
+ JahiaLanguagesStates ls =3D new JahiaLanguagesStates(
+ new JahiaLanguagesStatesPK(objectKey, (String) ent=
ry
+ .getKey()), (Integer) entry.getValue(),
+ siteIdObj);
+ dao.saveOrUpdate(ls);
}
}
}
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=3D19355&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 Mo=
n Dec 10 15:00:06 2007
@@ -801,7 +801,7 @@
GroupCacheKey mainCacheKey =3D null;
if (!main.equals(object)) {
mainCacheKey =3D new GroupCacheKey(main.toString()+"_"+des=
cendInAllSubGroups+"_"+checkParents, new HashSet());
- l =3D (List[]) linkedObjectsCache.get(mainCacheKey);
+ l =3D (List[]) linkedObjectsCache.get(mainCacheKey);
}
cacheKey.getGroups().add(object.toString());
cacheKey.getGroups().add(MAINPREFIX + main.toString());
@@ -814,9 +814,9 @@
l[1].removeAll(l[0]);
linkedObjectsCache.put(cacheKey, l);
if (mainCacheKey !=3D null) {
- mainCacheKey.getGroups().add(main.toString());
- mainCacheKey.getGroups().add(MAINPREFIX + main.toStrin=
g());
- linkedObjectsCache.put(mainCacheKey, l);
+ mainCacheKey.getGroups().add(main.toString());
+ mainCacheKey.getGroups().add(MAINPREFIX + main.toString());
+ linkedObjectsCache.put(mainCacheKey, l);
}
}
}
@@ -1303,16 +1303,12 @@
=
public Map storeLanguageState(final ContentObjectKey key, final int si=
teID) throws JahiaException {
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(), siteID);
- }
+ languagesStatesManager.updateLanguagesStates(key.toString(), m, si=
teID);
return m;
}
=
public void storeLanguageState(final ContentObjectKey key, final Strin=
g languageCode, final int value, final int siteID) {
- languagesStatesManager.updateLanguagesStates(key.toString(), langu=
ageCode, value, siteID);
+ languagesStatesManager.updateLanguagesState(key.toString(), langua=
geCode, value, siteID);
}
=
=
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list