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);
  

Reply via email to