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
*