tdraier 2005/10/21 12:19:39 CEST
Modified files:
core/src/java/org/jahia/services/importexport
ImportExportBaseService.java
Log:
copy files on virtual sites
Revision Changes Path
1.37 +55 -13
jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java.diff?r1=1.36&r2=1.37&f=h
Index: ImportExportBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- ImportExportBaseService.java 20 Oct 2005 16:30:31 -0000 1.36
+++ ImportExportBaseService.java 21 Oct 2005 10:19:39 -0000 1.37
@@ -25,10 +25,7 @@
import org.jahia.services.acl.JahiaACLException;
import org.jahia.services.containers.ContentContainer;
import org.jahia.services.containers.ContentContainerList;
-import org.jahia.services.fields.ContentField;
-import org.jahia.services.fields.ContentFieldTypes;
-import org.jahia.services.fields.ContentPageField;
-import org.jahia.services.fields.ContentApplicationField;
+import org.jahia.services.fields.*;
import org.jahia.services.pages.ContentPage;
import org.jahia.services.pages.JahiaPage;
import org.jahia.services.pages.PageProperty;
@@ -422,6 +419,44 @@
}
}
+ private void getFiles(ContentObject object, String language, Set files,
ProcessingContext jParams, Set included, EntryLoadRequest toLoadRequest) throws
JahiaException {
+ if (!object.checkReadAccess(jParams.getUser())) {
+ return;
+ }
+
+ ContentObjectEntryState entryState = getEntryState(object, language,
toLoadRequest);
+
+ if (entryState == null) {
+ return;
+ }
+
+ if (object instanceof ContentFileField) {
+ ContentField contentField = (ContentField) object;
+ String value = contentField.getValue(jParams, entryState);
+
+ DAVFileAccess file = new DAVFileAccess(jParams,
ServicesRegistry.getInstance().getJahiaSitesService().getSite(contentField.getSiteID()),
jParams.getUser(), value);
+ if (file.isValid() && !files.contains(file)) {
+ files.add(file);
+ }
+ }
+
+ // Recurse on children
+ EntryLoadRequest withDeleted = new EntryLoadRequest(toLoadRequest);
+ withDeleted.setWithMarkedForDeletion(true);
+ List l = object.getChilds(jParams.getUser(), withDeleted,
jParams.getOperationMode());
+
+ if (object instanceof ContentContainerList) {
+ ImportExportUtils.orderContainerList(l, jParams);
+ }
+
+ for (Iterator iterator = l.iterator(); iterator.hasNext();) {
+ ContentObject child = (ContentObject) iterator.next();
+ if (included == null || included.contains(child.getObjectKey()))
{
+ getFiles(child, language, files, jParams, included,
toLoadRequest);
+ }
+ }
+ }
+
private void exportAcl(JahiaBaseACL acl, String attrName, AttributesImpl
attr, boolean top) throws JahiaACLException {
String perms = "";
Vector users = acl.getUsernameList(null);
@@ -774,28 +809,35 @@
JahiaGroup admins =
ServicesRegistry.getInstance().getJahiaGroupManagerService().lookupGroup(destSite.getID(),
JahiaGroupManagerService.ADMINISTRATORS_GROUPNAME);
JahiaUser user = (JahiaUser) admins.members().nextElement();
jParams.setUser(user);
+
+ Set files = new HashSet();
+
+ if (source.getSiteID() != parentDest.getSiteID()) {
+ for (Iterator iterator = languages.iterator();
iterator.hasNext();) {
+ String lang = (String) iterator.next();
+ getFiles(source, lang, files, jParams, null,
loadRequest);
+ }
+ for (Iterator fiterator = files.iterator();
fiterator.hasNext();) {
+ DAVFileAccess file = (DAVFileAccess) fiterator.next();
+ ensureFile(file, jParams, destSite);
+ }
+ }
+
Iterator iterator = languages.iterator();
String lang = (String) iterator.next();
// Copy first lang only
ImportHandler handler = new ImportHandler(parentDest,jParams,
lang);
- Set files = new HashSet();
- export(source, lang, handler, files, jParams, null, loadRequest,
null, link);
+ export(source, lang, handler, null, jParams, null, loadRequest,
null, link);
ContentObject main = handler.getLastObject();
for (;iterator.hasNext();) {
String nextLang = (String) iterator.next();
handler = new ImportHandler(main, jParams, nextLang);
handler.setUpdateOnly(true);
- export(source, nextLang, handler, files, jParams, null,
loadRequest, null, link);
+ export(source, nextLang, handler, null, jParams, null,
loadRequest, null, link);
}
- if (source.getSiteID() != parentDest.getSiteID()) {
- for (Iterator fiterator = files.iterator();
fiterator.hasNext();) {
- DAVFileAccess file = (DAVFileAccess) fiterator.next();
- ensureFile(file, jParams, destSite);
- }
- }
return main;
} catch (Throwable e) {
logger.error("Error during copying",e);