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;
  

Reply via email to