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