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();
  

Reply via email to