tdraier     2006/01/09 12:11:29 CET

  Modified files:
    core/src/java/org/jahia/services/importexport 
                                                  
ActivationContentPickerJob.java 
                                                  
ActivationContentPickerListener.java 
  Log:
  content pick as a job
  
  Revision  Changes    Path
  1.2       +95 -6     
jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerJob.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerJob.java.diff?r1=1.1&r2=1.2&f=h
  1.3       +16 -99    
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.2&r2=1.3&f=h
  
  
  
  Index: ActivationContentPickerJob.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerJob.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ActivationContentPickerJob.java   6 Jan 2006 13:11:08 -0000       1.1
  +++ ActivationContentPickerJob.java   9 Jan 2006 11:11:29 -0000       1.2
  @@ -20,13 +20,14 @@
   import org.jahia.services.scheduler.BackgroundJob;
   
   import java.util.*;
  +import java.io.OutputStreamWriter;
   
   /**
    * Created by IntelliJ IDEA.
    * Date: 25 oct. 2005 - 16:34:07
    *
    * @author toto
  - * @version $Id: ActivationContentPickerJob.java,v 1.1 2006/01/06 13:11:08 
tdraier Exp $
  + * @version $Id: ActivationContentPickerJob.java,v 1.2 2006/01/09 11:11:29 
tdraier Exp $
    */
   public class ActivationContentPickerJob extends BackgroundJob {
       private static org.apache.log4j.Logger logger =
  @@ -34,20 +35,108 @@
   
       private static ThreadLocal isInContentPickJob = new ThreadLocal();
   
  -    public synchronized void executeJahiaJob(JobExecutionContext 
jobExecutionContext, ProcessingContext context) throws Exception {
  +    public synchronized void executeJahiaJob(JobExecutionContext 
jobExecutionContext, ProcessingContext jParams) throws Exception {
           JobDataMap jobDataMap = 
jobExecutionContext.getJobDetail().getJobDataMap();
   
           ImportExportService ie = 
ServicesRegistry.getInstance().getImportExportService();
  -        String eventType = (String) jobDataMap.get("event");
   
  -        String language = context.getCurrentLocale().toString();
  +        String pickerKey = (String) jobDataMap.get("picker");
  +        ContentObject picker = 
ContentObject.getContentObjectInstance(ObjectKey.getInstance(pickerKey));
  +        Set langs = (Set) jobDataMap.get("langs");
  +
  +        DataWriter dw = new DataWriter(new OutputStreamWriter(System.out, 
"UTF-8"));
  +
  +        ContentObject pickedObject = 
picker.getPickedObject(StructuralRelationship.ACTIVATION_PICKER_LINK);
  +
  +        Set files = new HashSet();
  +        JahiaUser oldUser = jParams.getUser();
  +        try {
  +            JahiaSite destSite = 
ServicesRegistry.getInstance().getJahiaSitesService().getSite(picker.getSiteID());
  +            setUser(picker, destSite, jParams, oldUser);
  +
  +            checkFilesInChildren(pickedObject, jParams, ie, destSite);
  +
  +            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, 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);
  +        }
  +    }
  +
  +    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);
  +        }
  +    }
  +
  +
   
  -        JahiaUser oldUser = context.getUser();
  +    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();) {
  +            ContentObject child = (ContentObject) iterator.next();
  +            getFroms(m, lang, child, jParams);
  +        }
  +
  +        String name;
  +        if (o.isShared()) {
  +            name = "lastPickedVersion";
  +        } else {
  +            name = "lastPickedVersion-" + lang;
  +        }
  +        String last = o.getProperty(name);
  +        if (last != null) {
  +            m.put(o.getProperty("uuid"), new 
EntryLoadRequest(EntryLoadRequest.VERSIONED_WORKFLOW_STATE, 
Integer.parseInt(last), jParams.getLocales()));
  +        }
       }
   
   }
   /**
    *$Log: ActivationContentPickerJob.java,v $
  + *Revision 1.2  2006/01/09 11:11:29  tdraier
  + *content pick as a job
  + *
    *Revision 1.1  2006/01/06 13:11:08  tdraier
    *content picker and workflow updates
    *
  
  
  
  Index: ActivationContentPickerListener.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ActivationContentPickerListener.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ActivationContentPickerListener.java      6 Jan 2006 18:21:43 -0000       
1.2
  +++ ActivationContentPickerListener.java      9 Jan 2006 11:11:29 -0000       
1.3
  @@ -32,7 +32,7 @@
    * User: toto
    * Date: 26 avr. 2005
    * Time: 12:15:52
  - * @version $Id: ActivationContentPickerListener.java,v 1.2 2006/01/06 
18:21:43 tdraier Exp $
  + * @version $Id: ActivationContentPickerListener.java,v 1.3 2006/01/09 
11:11:29 tdraier Exp $
    */
   public class ActivationContentPickerListener extends JahiaEventListener {
       private static org.apache.log4j.Logger logger =
  @@ -67,54 +67,19 @@
   
                               ContentObject parentPicker = 
picker.getParent(null, EntryLoadRequest.STAGED, null);
                               if (parentPicker != null && 
parentPicker.getPickedObject(StructuralRelationship.ACTIVATION_PICKER_LINK) == 
null) {
  +                                Set langs = event.getLanguageCodes();
   
  -//                                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();
  -                                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, 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);
  -                                }
  +                                String pickerKey = 
picker.getObjectKey().toString();
   
  +                                JobDetail jobDetail = 
BackgroundJob.createJahiaJob("Propagate changes to "+pickerKey, 
ActivationContentPickerJob.class, jParams);
  +
  +                                JobDataMap jobDataMap;
  +                                jobDataMap = jobDetail.getJobDataMap();
  +                                jobDataMap.put("langs", langs);
  +                                jobDataMap.put("picker", 
picker.getObjectKey().toString());
  +
  +                                SchedulerService schedulerServ = 
ServicesRegistry.getInstance().getSchedulerService();
  +                                schedulerServ.scheduleJobNow(jobDetail);
                                   break;
                               }
                               picker = parentPicker;
  @@ -127,58 +92,6 @@
           }
        }
   
  -    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();) {
  -            ContentObject child = (ContentObject) iterator.next();
  -            getFroms(m, lang, child, jParams);
  -        }
  -
  -        String name;
  -        if (o.isShared()) {
  -            name = "lastPickedVersion";
  -        } else {
  -            name = "lastPickedVersion-" + lang;
  -        }
  -        String last = o.getProperty(name);
  -        if (last != null) {
  -            m.put(o.getProperty("uuid"), new 
EntryLoadRequest(EntryLoadRequest.VERSIONED_WORKFLOW_STATE, 
Integer.parseInt(last), jParams.getLocales()));
  -        }
  -    }
  -
       public void contentActivation(ContentActivationEvent theEvent) {
   
           try {
  @@ -193,10 +106,14 @@
               logger.error("Error",e);
           }
       }
  +
   }
   
   /**
   * $Log: ActivationContentPickerListener.java,v $
  +* Revision 1.3  2006/01/09 11:11:29  tdraier
  +* content pick as a job
  +*
   * Revision 1.2  2006/01/06 18:21:43  tdraier
   * multi-sites and user fix
   *
  

Reply via email to