knguyen 2005/08/12 16:55:12 CEST
Modified files:
core/src/java/org/jahia/services/metadata/core/listeners
ContentLastModificationDateListener.java
Log:
- field, container last modification date are now propagated to the
containing page
Revision Changes Path
1.8 +44 -25
jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java.diff?r1=1.7&r2=1.8&f=h
Index: ContentLastModificationDateListener.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/metadata/core/listeners/ContentLastModificationDateListener.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ContentLastModificationDateListener.java 5 Jul 2005 15:46:28 -0000
1.7
+++ ContentLastModificationDateListener.java 12 Aug 2005 14:55:12 -0000
1.8
@@ -7,6 +7,7 @@
import org.jahia.bin.Jahia;
import org.jahia.content.ContentObject;
import org.jahia.content.JahiaObject;
+import org.jahia.content.PageReferenceableInterface;
import org.jahia.data.events.JahiaEvent;
import org.jahia.data.events.JahiaEventListener;
import org.jahia.data.fields.FieldsEditHelper;
@@ -22,6 +23,7 @@
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.services.workflow.WorkflowEvent;
import org.jahia.services.fields.ContentField;
+import org.jahia.services.pages.ContentPage;
import org.jahia.utils.LanguageCodeConverters;
import org.jahia.exceptions.JahiaException;
@@ -71,38 +73,55 @@
}
}
try {
- JahiaObject jahiaObject =
contentObject.getMetadata(this.getMetadataName());
- if ( jahiaObject == null ){
- return;
- }
- ContentObject metadata =
ContentObject.getContentObjectInstance(jahiaObject.getObjectKey());
+
updateMetadata(contentObject,Jahia.getThreadParamBean(),theEvent);
- String languageCode = theEvent.getLanguageCode();
- if ( languageCode == null ){
- return;
- }
- Locale locale =
LanguageCodeConverters.languageCodeToLocale(languageCode);
- ArrayList locales = new ArrayList();
- locales.add(locale);
- EntryLoadRequest entryLoadRequest = new
EntryLoadRequest(EntryLoadRequest.STAGING_WORKFLOW_STATE,
- 0,locales);
-
- JahiaSite site =
ServicesRegistry.getInstance().getJahiaSitesService()
- .getSite(contentObject.getSiteID());
- ProcessingContext jParams = Jahia.getThreadParamBean();
-
- JahiaField jahiaField =
ServicesRegistry.getInstance().getJahiaFieldService()
-
.loadField(metadata.getID(),LoadFlags.ALL,jParams,entryLoadRequest);
- if ( jahiaField == null ){
- return;
+ // propagate to parent page
+ if ( contentObject instanceof PageReferenceableInterface ){
+ PageReferenceableInterface pageRefObj =
(PageReferenceableInterface)contentObject;
+ try {
+ ContentPage parentPage = pageRefObj.getPage();
+
updateMetadata(parentPage,Jahia.getThreadParamBean(),theEvent);
+ } catch ( Throwable t){
+ logger.debug("exception occured updating last modif date
metadata",t);
+ }
}
- jahiaField.setObject(String.valueOf(theEvent.getEventTime()));
- jahiaField.save(jParams);
+
+
} catch ( Throwable t ){
logger.debug(t);
}
}
+ private void updateMetadata(ContentObject
contentObject,ProcessingContext jParams, WorkflowEvent theEvent)
+ throws Exception {
+ JahiaObject jahiaObject =
contentObject.getMetadata(this.getMetadataName());
+ if ( jahiaObject == null ){
+ return;
+ }
+ ContentObject metadata =
ContentObject.getContentObjectInstance(jahiaObject.getObjectKey());
+
+ String languageCode = theEvent.getLanguageCode();
+ if ( languageCode == null ){
+ return;
+ }
+ Locale locale =
LanguageCodeConverters.languageCodeToLocale(languageCode);
+ ArrayList locales = new ArrayList();
+ locales.add(locale);
+ EntryLoadRequest entryLoadRequest = new
EntryLoadRequest(EntryLoadRequest.STAGING_WORKFLOW_STATE,
+ 0,locales);
+
+ JahiaSite site =
ServicesRegistry.getInstance().getJahiaSitesService()
+ .getSite(contentObject.getSiteID());
+
+ JahiaField jahiaField =
ServicesRegistry.getInstance().getJahiaFieldService()
+
.loadField(metadata.getID(),LoadFlags.ALL,jParams,entryLoadRequest);
+ if ( jahiaField == null ){
+ return;
+ }
+ jahiaField.setObject(String.valueOf(theEvent.getEventTime()));
+ jahiaField.save(jParams);
+ }
+
public void processEvent (String eventName, JahiaEvent theEvent) {
if ( metadataName == null || theEvent == null ){
return;