Author: tdraier
Date: Thu Aug  2 16:04:42 2007
New Revision: 18097

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18097&repname=
=3Djahia
Log:
-improved metadata load
-do not resave properties when changing state
 (port 18020)

Modified:
    trunk/core/src/java/org/jahia/content/ContentObject.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java

Modified: trunk/core/src/java/org/jahia/content/ContentObject.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/content/ContentObject.java&rev=3D18097&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/content/ContentObject.java (original)
+++ trunk/core/src/java/org/jahia/content/ContentObject.java Thu Aug  2 16:=
04:42 2007
@@ -1462,16 +1462,7 @@
      * @return a JahiaObject
      */
     public ContentField getMetadata(String name, boolean forceLoadFromDB) =
throws JahiaException {
-        Integer id =3D jahiaFieldsDataManager.findMetadataByOwnerAndName(n=
ame,this.getObjectKey());
-        if ( id =3D=3D null ){
-            return null;
-        }
-        try {
-            return ContentField.getField(id.intValue(), forceLoadFromDB);
-        } catch (Throwable t) {
-            logger.warn(t);
-        }
-        return null;
+        return jahiaFieldsDataManager.loadMetadataByOwnerAndName(name,this=
.getObjectKey(), forceLoadFromDB);
     }
 =

     /**

Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.ja=
va
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaFieldsDataDAO.java&rev=3D18097&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/hibernate/dao/JahiaFieldsDataDAO.java (or=
iginal)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java Thu=
 Aug  2 16:04:42 2007
@@ -782,6 +782,22 @@
         return retVal;
     }
 =

+    public List loadAllMetadataActiveOrStagedFieldEntryByOwnerAndName(Stri=
ng name, JahiaObjectPK owner) {
+        String hql =3D "from JahiaFieldsData f where f.fieldDefinition.nam=
e=3D? AND f.metadataOwnerId=3D? AND f.metadataOwnerType=3D? and f.comp_id.w=
orkflowState>=3D1";
+        final HibernateTemplate template =3D getHibernateTemplate();
+        template.setCacheQueries(true);
+        template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+        return template.find(hql, new Object[]{name, owner.getId(), owner.=
getType()});
+    }
+
+    public List loadAllMetadataInactiveVersionedFieldsByOwnerAndName(Strin=
g name, JahiaObjectPK owner) {
+        String hql =3D "from JahiaFieldsData f where f.fieldDefinition.nam=
e=3D? AND f.metadataOwnerId=3D? AND f.metadataOwnerType=3D? and f.comp_id.w=
orkflowState<=3D0";
+        final HibernateTemplate template =3D getHibernateTemplate();
+        template.setCacheQueries(true);
+        template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+        return template.find(hql, new Object[]{name, owner.getId(), owner.=
getType()});
+    }
+
     public List loadAllActiveOrStagedFieldInContainer(Integer containerId)=
 {
         List retVal =3D null;
         String hql =3D "from JahiaFieldsData f where f.containerId=3D? and=
 f.comp_id.workflowState>=3D1 order by f.comp_id.id";
@@ -915,6 +931,14 @@
         return data;
     }
 =

+    public synchronized JahiaFieldsData saveNewVersion(JahiaFieldsData dat=
a) {
+        final HibernateTemplate hibernateTemplate =3D getHibernateTemplate=
();
+        hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);
+        hibernateTemplate.save(data);
+        hibernateTemplate.flush();
+        return data;
+    }
+
     public synchronized void update(JahiaFieldsData data) {
         final HibernateTemplate hibernateTemplate =3D getHibernateTemplate=
();
         hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_AUTO);

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataMa=
nager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaFieldsDataManager.java&rev=3D18097&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/hibernate/manager/JahiaFieldsDataManager.=
java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java Thu Aug  2 16:04:42 2007
@@ -177,7 +177,7 @@
                     JahiaFieldsData fieldsData =3D (JahiaFieldsData) data.=
clone();
                     dao.deleteJahiaField(data);
                     fieldsData.setComp_id(pk);
-                    dao.save(fieldsData);
+                    dao.saveNewVersion(fieldsData);
                     flushCache(contentField.getID(),contentField.getSiteID=
(), contentField.getContainerID());
                 }
             }
@@ -284,7 +284,7 @@
                 try {
                     ObjectKey key =3D new JahiaObjectPK(data.getMetadataOw=
nerType(), data.getMetadataOwnerId()).toObjectKey();
                     contentFieldInstance.setMetadataOwnerObjectKey(key);
-                    fieldCache.put(MD_KEY_PREFIX+key+fieldDefinition.getNa=
me(), new Integer(contentFieldInstance.getID()));
+                    fieldCache.put(MD_KEY_PREFIX+key+fieldDefinition.getNa=
me(), contentFieldInstance);
                 } catch ( Throwable t ){
                 }
             }
@@ -567,25 +567,6 @@
         return dao.findFieldsIdInPageByType(new Integer(pageID), new Integ=
er(FieldTypes.PAGE));
     }
 =

-    public Integer findMetadataByOwnerAndName(String name, ObjectKey objec=
tKey) {
-        if(fieldCache =3D=3D null) {
-            try {
-                fieldCache =3D cacheService.createCacheInstance(CACHE_NAME=
);
-            } catch (JahiaInitializationException e) {
-            }
-        }
-        Integer i =3D (Integer) fieldCache.get(MD_KEY_PREFIX+objectKey+nam=
e);
-        if (i =3D=3D null) {
-            i =3D dao.findMetadataByOwnerAndName(name,new JahiaObjectPK(ob=
jectKey.getType(),
-                    new Integer(objectKey.getIdInType())));
-            if(i=3D=3Dnull)
-                i=3Dnew Integer(0);
-            fieldCache.put(MD_KEY_PREFIX+objectKey+name,i);
-        }
-
-        return i.intValue()=3D=3D0?null:i;
-    }
-
     public List findMetadatasByOwner(ObjectKey objectKey) {
         return dao.findMetadatasByOwner(new JahiaObjectPK(objectKey.getTyp=
e(),
                 new Integer(objectKey.getIdInType())));
@@ -685,6 +666,53 @@
         return null;
     }
 =

+    public ContentField loadMetadataByOwnerAndName(String name, ObjectKey =
objectKey, boolean forceLoadFromDB) {
+        try {
+            if(fieldCache =3D=3D null) {
+                fieldCache =3D cacheService.createCacheInstance(CACHE_NAME=
);
+            }
+            if (!forceLoadFromDB) {
+                ContentField retContentField =3D (ContentField) fieldCache=
.get(MD_KEY_PREFIX+objectKey+name);
+                if (retContentField !=3D null) {
+                    return retContentField;
+                }
+            }
+            JahiaObjectPK jpk =3D new JahiaObjectPK(objectKey.getType(), n=
ew Integer(objectKey.getIdInType()));
+            List list =3D dao.loadAllMetadataActiveOrStagedFieldEntryByOwn=
erAndName(name, jpk);
+            List activeEntryStates =3D new FastArrayList(53);
+            Map activeValues =3D new FastHashMap(53);
+            JahiaFieldsData data =3D null;
+            if (list.size() =3D=3D 0) {
+                list =3D dao.loadAllMetadataInactiveVersionedFieldsByOwner=
AndName(name, jpk);
+            }
+            if ( list.size() > 0 ){
+                for (int i =3D 0; i < list.size(); i++) {
+                    data =3D (JahiaFieldsData) list.get(i);
+                    ContentObjectEntryState entryState =3D new ContentObje=
ctEntryState(
+                            data.getComp_id().getWorkflowState().intValue(=
),
+                            data.getComp_id().getVersionId().intValue(),
+                            data.getComp_id().getLanguageCode());
+                    activeEntryStates.add(entryState);
+                    String value =3D data.getValue();
+                    if (value =3D=3D null) {
+                        // this ugly hack is necessary because Oracle is i=
ncapable of
+                        // distinguishing between NULL and empty string va=
lues.
+                        value =3D org.jahia.data.constants.JahiaConstants.=
NULL_STRING_MARKER;
+                    }
+                    activeValues.put(entryState, value);
+                }
+                if (data !=3D null) {
+                    ContentField f =3D fillCache(data, activeEntryStates, =
activeValues);
+                    fieldCache.put(MD_KEY_PREFIX+objectKey+name,f);
+                    return f;
+                }
+            }
+        } catch (JahiaException e) {
+            log.warn("Exception during load of metadata " + name + " / "+o=
bjectKey, e);
+        }
+        return null;
+    }
+
     public List loadOldEntryStates(int id) {
         List list =3D dao.findOldEntryState(new Integer(id));
         List retList =3D null;

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

Reply via email to