cmailleux 2005/10/10 17:28:17 CEST
Modified files:
core/src/java/org/jahia/hibernate/dao JahiaFieldsDataDAO.java
core/src/java/org/jahia/hibernate/manager
JahiaFieldsDataManager.java
Log:
Correct bug when we try to update value and versionId in the same time
(tipycally when moving a page)
Revision Changes Path
1.18 +11 -0
jahia/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java.diff?r1=1.17&r2=1.18&f=h
1.20 +17 -1
jahia/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.java.diff?r1=1.19&r2=1.20&f=h
Index: JahiaFieldsDataDAO.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- JahiaFieldsDataDAO.java 10 Oct 2005 10:00:02 -0000 1.17
+++ JahiaFieldsDataDAO.java 10 Oct 2005 15:28:17 -0000 1.18
@@ -716,5 +716,16 @@
template.setCacheQueries(true);
return template.find(hql.toString(),new
Object[]{siteID,sourceUri,sourceUriExtendedSearch});
}
+
+ public JahiaFieldsData
findJahiaFieldsDataByIdAndWorkflowStateAndLanguage(Integer containerID, Integer
workflowState, String languageCode) {
+ String hql = "from JahiaFieldsData f where f.comp_id.id=? and
f.comp_id.workflowState = ? and f.comp_id.languageCode=?";
+ final HibernateTemplate template = getHibernateTemplate();
+ template.setCacheQueries(true);
+ List list = template.find(hql.toString(), new Object[]{containerID,
workflowState, languageCode});
+ if(list.size()>0) {
+ return (JahiaFieldsData) list.get(0);
+ }
+ return null;
+ }
}
Index: JahiaFieldsDataManager.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- JahiaFieldsDataManager.java 6 Oct 2005 15:56:03 -0000 1.19
+++ JahiaFieldsDataManager.java 10 Oct 2005 15:28:17 -0000 1.20
@@ -612,14 +612,30 @@
}
public void updateValue(ContentField contentField,
ContentObjectEntryState newEntryState, String value) {
- JahiaFieldsData fieldsData = findJahiaFieldsData(contentField,
newEntryState);
+ JahiaFieldsData fieldsData =
findJahiaFieldsDataWithoutVersionId(contentField, newEntryState);
if(fieldsData!=null) {
+
if(fieldsData.getComp_id().getVersionId().intValue()!=newEntryState.getVersionID())
{
+ try {
+ JahiaFieldsData fieldsData2 = (JahiaFieldsData)
fieldsData.clone();
+ dao.deleteJahiaField(fieldsData);
+ fieldsData2.getComp_id().setVersionId(new
Long(newEntryState.getVersionID()));
+ fieldsData = fieldsData2;
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace(); //To change body of catch
statement use File | Settings | File Templates.
+ }
+ }
fieldsData.setValue(value);
dao.update(fieldsData);
flushCache(contentField.getID(),fieldsData.getSite()!=null?fieldsData.getSite().getId().intValue():0,
fieldsData.getContainerId().intValue());
}
}
+ private JahiaFieldsData findJahiaFieldsDataWithoutVersionId(ContentField
contentField, ContentObjectEntryState newEntryState) {
+ return dao.findJahiaFieldsDataByIdAndWorkflowStateAndLanguage(new
Integer(contentField.getID()),
+ new
Integer(newEntryState.getWorkflowState()),
+
newEntryState.getLanguageCode());
+ }
+
private void fillCache(List list, Cache cacheFields) throws
JahiaException {
if (list.size() > 0) {
final ContentFieldTools instance =
ContentFieldTools.getInstance();