tdraier     2006/01/06 19:21:43 CET

  Modified files:
    core/src/java/org/jahia/services/importexport 
                                                  
ActivationContentPickerListener.java 
  Log:
  multi-sites and user fix
  
  Revision  Changes    Path
  1.2       +87 -17    
jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerListener.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerListener.java.diff?r1=1.1&r2=1.2&f=h
  
  
  
  Index: ActivationContentPickerListener.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerListener.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ActivationContentPickerListener.java      6 Jan 2006 13:11:08 -0000       
1.1
  +++ ActivationContentPickerListener.java      6 Jan 2006 18:21:43 -0000       
1.2
  @@ -5,6 +5,15 @@
   import org.jahia.services.workflow.WorkflowEvent;
   import org.jahia.services.workflow.WorkflowService;
   import org.jahia.services.version.EntryLoadRequest;
  +import org.jahia.services.scheduler.BackgroundJob;
  +import org.jahia.services.scheduler.SchedulerService;
  +import org.jahia.services.sites.JahiaSite;
  +import org.jahia.services.usermanager.JahiaUser;
  +import org.jahia.services.usermanager.JahiaGroup;
  +import org.jahia.services.usermanager.JahiaGroupManagerService;
  +import org.jahia.services.containers.ContentContainer;
  +import org.jahia.services.fields.ContentFileField;
  +import org.jahia.services.webdav.DAVFileAccess;
   import org.jahia.content.ContentObject;
   import org.jahia.content.StructuralRelationship;
   import org.jahia.content.events.ContentActivationEvent;
  @@ -12,6 +21,8 @@
   import org.jahia.params.ProcessingContext;
   import org.jahia.exceptions.JahiaException;
   import org.jahia.bin.Jahia;
  +import org.quartz.JobDetail;
  +import org.quartz.JobDataMap;
   
   import java.util.*;
   import java.io.OutputStreamWriter;
  @@ -21,7 +32,7 @@
    * User: toto
    * Date: 26 avr. 2005
    * Time: 12:15:52
  - * @version $Id: ActivationContentPickerListener.java,v 1.1 2006/01/06 
13:11:08 tdraier Exp $
  + * @version $Id: ActivationContentPickerListener.java,v 1.2 2006/01/06 
18:21:43 tdraier Exp $
    */
   public class ActivationContentPickerListener extends JahiaEventListener {
       private static org.apache.log4j.Logger logger =
  @@ -56,29 +67,52 @@
   
                               ContentObject parentPicker = 
picker.getParent(null, EntryLoadRequest.STAGED, null);
                               if (parentPicker != null && 
parentPicker.getPickedObject(StructuralRelationship.ACTIVATION_PICKER_LINK) == 
null) {
  +
  +//                                String pickerKey = 
picker.getObjectKey().toString();
  +//
  +//                                JobDetail jobDetail = 
BackgroundJob.createJahiaJob("Propagate changes to "+pickerKey, 
ActivationContentPickerJob.class, jParams);
  +//
  +//                                JobDataMap jobDataMap;
  +//                                jobDataMap = jobDetail.getJobDataMap();
  +//                                jobDataMap.put("langs", 
event.getLanguageCodes());
  +//                                jobDataMap.put("picker", 
picker.getObjectKey().toString());
  +//
  +//                                SchedulerService schedulerServ = 
ServicesRegistry.getInstance().getSchedulerService();
  +//                                schedulerServ.scheduleJobNow(jobDetail);
  +
                                   DataWriter dw = new DataWriter(new 
OutputStreamWriter(System.out, "UTF-8"));
   
                                   ContentObject pickedObject = 
picker.getPickedObject(StructuralRelationship.ACTIVATION_PICKER_LINK);
   
                                   Set files = new HashSet();
  -
  -                                Set langs = event.getLanguageCodes();
  -                                for (Iterator iterator2 = langs.iterator(); 
iterator2.hasNext();) {
  -                                    String lang = (String) iterator2.next();
  -
  -                                    Map froms = new HashMap();
  -                                    getFroms(froms, lang, picker, jParams);
  -
  -                                    long now = System.currentTimeMillis() / 
1000;
  -                                    EntryLoadRequest toLoadRequest = new 
EntryLoadRequest(EntryLoadRequest.VERSIONED_WORKFLOW_STATE, new 
Long(now).intValue(),  jParams.getLocales());
  -                                    toLoadRequest.setWithDeleted(true);
  +                                JahiaUser oldUser = jParams.getUser();
  +                                try {
  +                                    JahiaSite destSite = 
ServicesRegistry.getInstance().getJahiaSitesService().getSite(picker.getSiteID());
  +                                    setUser(picker, destSite, jParams, 
oldUser);
  +
  +                                    checkFilesInChildren(pickedObject, 
jParams, ie, destSite);
  +
  +                                    Set langs = event.getLanguageCodes();
  +                                    for (Iterator iterator2 = 
langs.iterator(); iterator2.hasNext();) {
  +                                        String lang = (String) 
iterator2.next();
  +
  +                                        Map froms = new HashMap();
  +                                        getFroms(froms, lang, picker, 
jParams);
  +
  +                                        long now = 
System.currentTimeMillis() / 1000;
  +                                        EntryLoadRequest toLoadRequest = new 
EntryLoadRequest(EntryLoadRequest.VERSIONED_WORKFLOW_STATE, new 
Long(now).intValue(),  jParams.getLocales());
  +                                        toLoadRequest.setWithDeleted(true);
   //                                    System.out.println("----------> 
"+froms);
   //                                    System.out.println("----------> 
"+toLoadRequest);
  -                                    ie.export(pickedObject, lang, dw, files, 
jParams, null, toLoadRequest, froms, 
StructuralRelationship.ACTIVATION_PICKER_LINK);
  -
  -                                    ImportHandler handler = new 
ImportHandler(picker,jParams, lang);
  -                                    handler.setCopyUuid(true);
  -                                    ie.export(pickedObject, lang, handler, 
files, jParams, null, toLoadRequest, froms, 
StructuralRelationship.ACTIVATION_PICKER_LINK);
  +                                        ie.export(pickedObject, lang, dw, 
files, jParams, null, toLoadRequest, froms, 
StructuralRelationship.ACTIVATION_PICKER_LINK);
  +                                        ImportHandler handler = new 
ImportHandler(picker,jParams, lang, destSite);
  +                                        handler.setCopyUuid(true);
  +                                        ie.export(pickedObject, lang, 
handler, files, jParams, null, toLoadRequest, froms, 
StructuralRelationship.ACTIVATION_PICKER_LINK);
  +                                    }
  +                                } catch (Throwable t) {
  +                                    logger.error("Error when content picking 
content",t);
  +                                } finally {
  +                                    jParams.setTheUser(oldUser);
                                   }
   
                                   break;
  @@ -93,6 +127,39 @@
           }
        }
   
  +    private void checkFilesInChildren(ContentObject source, 
ProcessingContext context, ImportExportService ie, JahiaSite destSite) throws 
JahiaException {
  +        if (source instanceof ContentFileField) {
  +            JahiaSite sourceSite = 
ServicesRegistry.getInstance().getJahiaSitesService().getSite(source.getSiteID());
  +            String path = ((ContentFileField)source).getValue(context, 
EntryLoadRequest.CURRENT);
  +            DAVFileAccess sourceFile = new DAVFileAccess(context, 
sourceSite, context.getUser(), path);
  +            ie.ensureFile(sourceFile, context, destSite);
  +        }
  +        List childs = 
source.getChilds(null,context.getEntryLoadRequest(),null);
  +        for (Iterator iterator1 = childs.iterator(); iterator1.hasNext();) {
  +            ContentObject child = (ContentObject) iterator1.next();
  +            checkFilesInChildren(child, context, ie, destSite);
  +        }
  +    }
  +
  +
  +
  +    private void setUser(ContentObject picker, JahiaSite site, 
ProcessingContext jParams, JahiaUser oldUser) throws JahiaException {
  +        ContentObject container = picker;
  +        while (!(container instanceof ContentContainer) && container != 
null) {
  +            container = container.getParent(null);
  +        }
  +
  +        JahiaGroup admins = 
ServicesRegistry.getInstance().getJahiaGroupManagerService().lookupGroup(site.getID(),
 JahiaGroupManagerService.ADMINISTRATORS_GROUPNAME);
  +        JahiaUser admin = (JahiaUser) admins.members().nextElement();
  +
  +        if (admin != null) {
  +            jParams.setTheUser(admin);
  +        } else {
  +            jParams.setTheUser(oldUser);
  +        }
  +    }
  +
  +
       private void getFroms (Map m, String lang, ContentObject o, 
ProcessingContext jParams) throws JahiaException {
           List l = o.getChilds(null, EntryLoadRequest.STAGED, null);
           for (Iterator iterator = l.iterator(); iterator.hasNext();) {
  @@ -130,6 +197,9 @@
   
   /**
   * $Log: ActivationContentPickerListener.java,v $
  +* Revision 1.2  2006/01/06 18:21:43  tdraier
  +* multi-sites and user fix
  +*
   * Revision 1.1  2006/01/06 13:11:08  tdraier
   * content picker and workflow updates
   *
  

Reply via email to