tdraier     2005/10/06 12:50:38 CEST

  Modified files:
    core/src/java/org/jahia/services/importexport 
                                                  ImportHandler.java 
    core/src/webapp/WEB-INF/var/shared_templates 
                                                 corporate_portal_templates.jar 
  Log:
  changed container definitions check (might work with aliased subcontainerlist)
  
  Revision  Changes      Path
  1.24      +116 -27     
jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java.diff?r1=1.23&r2=1.24&f=h
  1.58      +1443 -1420  
jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar.diff?r1=1.57&r2=1.58&f=h
  
  
  
  Index: ImportHandler.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ImportHandler.java        4 Oct 2005 16:43:06 -0000       1.23
  +++ ImportHandler.java        6 Oct 2005 10:50:35 -0000       1.24
  @@ -4,14 +4,9 @@
   import org.jahia.content.ContentObject;
   import org.jahia.content.ContentObjectKey;
   import org.jahia.content.FieldDefinitionKey;
  -import org.jahia.data.containers.JahiaContainer;
  -import org.jahia.data.containers.JahiaContainerDefinition;
  -import org.jahia.data.containers.JahiaContainerList;
  -import org.jahia.data.containers.JahiaContentContainerFacade;
  -import org.jahia.data.fields.FieldTypes;
  -import org.jahia.data.fields.JahiaField;
  -import org.jahia.data.fields.JahiaFieldDefinition;
  -import org.jahia.data.fields.LoadFlags;
  +import org.jahia.content.ContentDefinition;
  +import org.jahia.data.containers.*;
  +import org.jahia.data.fields.*;
   import org.jahia.data.files.JahiaFileField;
   import org.jahia.exceptions.JahiaException;
   import org.jahia.hibernate.manager.SpringContextSingleton;
  @@ -176,7 +171,9 @@
                                   objects.push(currentObject);
                               }
                               ContentObject parent = (ContentObject) 
objects.peek();
  -                            currentObject = createObject(parent, 
namespaceURI, localName, atts);
  +                            if (parent != null) {
  +                                currentObject = createObject(parent, 
namespaceURI, localName, atts);
  +                            }
                           } else {
                               if (currentObject == null) {
                                   ContentObject parent = (ContentObject) 
objects.peek();
  @@ -419,16 +416,15 @@
               if (htmlCache != null) {
                   htmlCache.invalidatePageEntries(Integer.toString(pageID));
               }
  -        }
  -
   
  -        String linkkey = atts.getValue(ImportExportBaseService.JAHIA_URI, 
"linkkey");
  -        if (linkkey != null) {
  -            try {
  -                ContentObject source = 
ContentObject.getContentObjectInstance(ContentObjectKey.getInstance(linkkey));
  -                source.addPickerObject(jParams, object);
  -            } catch (ClassNotFoundException e) {
  -                //...
  +            String linkkey = 
atts.getValue(ImportExportBaseService.JAHIA_URI, "linkkey");
  +            if (linkkey != null) {
  +                try {
  +                    ContentObject source = 
ContentObject.getContentObjectInstance(ContentObjectKey.getInstance(linkkey));
  +                    source.addPickerObject(jParams, object);
  +                } catch (ClassNotFoundException e) {
  +                    //...
  +                }
               }
           }
   
  @@ -436,17 +432,107 @@
       }
   
       private ContentObject getOrCreateContainerListOrField(String localName, 
String namespaceURI, Attributes atts, ContentObject parent, int pageID, int 
containerID) throws JahiaException {
  -        ContentObject object;
  +        ContentObject object = null;
   
  -        JahiaContainerDefinition jcd = null;
  +        boolean isContainerList = false;
  +        boolean isField = false;
  +
  +        int ctnDefId = 0;
  +        int pageDefId = 0;
  +        if (parent instanceof ContentContainer) {
  +            ctnDefId = ((ContentContainer)parent).getDefinitionID(elr);
  +            pageDefId = 
ContentPage.getPage(((ContentContainer)parent).getPageID()).getDefinitionID(elr);
  +        } else {
  +            pageDefId = ((ContentPage)parent).getDefinitionID(elr);
  +        }
  +
  +        ContentDefinition def;
           if (localName.endsWith("List")) {
  -            jcd = 
JahiaContainerDefinitionsRegistry.getInstance().getDefinition(site.getID(), 
localName.substring(0,localName.length()-4));
  +            def = 
JahiaContainerDefinitionsRegistry.getInstance().getDefinition(site.getID(), 
localName.substring(0,localName.length()-4));
  +            if (def != null) {
  +                JahiaContainerSubDefinition sd = 
(JahiaContainerSubDefinition) 
((JahiaContainerDefinition)def).getSubDefs().get(new Integer(pageDefId));
  +                if (sd != null) {
  +                    isContainerList = true;
  +                }
  +            }
  +
  +//            if (jcd == null) {
  +//                String importedPt = 
atts.getValue(ImportExportService.JCR_URI, "primaryType");
  +//                if (importedPt != null && importedPt.endsWith("List")) {
  +//                    String containerAlias = 
importedPt.substring(importedPt.indexOf(':')+1, importedPt.length() - 4);
  +//                    List l = 
ServicesRegistry.getInstance().getJahiaContainersService().loadContainerDefinitionsByAlias(site.getID(),
 containerAlias);
  +//                    logger.debug("Found aliases for "+containerAlias + " 
-> "+l);
  +//
  +//                    for (Iterator iterator = l.iterator(); 
iterator.hasNext();) {
  +//                        def = (JahiaContainerDefinition) iterator.next();
  +//                        JahiaContainerSubDefinition sd = 
(JahiaContainerSubDefinition) def.getSubDefs().get(new Integer(pageDefId));
  +//                        if (sd != null) {
  +//                            jcd = def;
  +//                            break;
  +//                        }
  +//                    }
  +//                }
  +//            }
  +        } else {
  +            def = 
JahiaFieldDefinitionsRegistry.getInstance().getDefinition(site.getID(), 
localName);
  +            if (def != null) {
  +                JahiaFieldSubDefinition sd = (JahiaFieldSubDefinition) 
((JahiaFieldDefinition)def).getSubDefs().get(new Integer(pageDefId));
  +                if (sd != null) {
  +                    isField = true;
  +                }
  +            }
           }
  -        boolean isContainerList = (jcd != null);
  -        JahiaFieldDefinition jfd = 
JahiaFieldDefinitionsRegistry.getInstance().getDefinition(site.getID(), 
localName);
   
  -        if (jfd == null && jcd == null) {
  -            logger.warn("Definitions not found");
  +        if (def != null && parent instanceof ContentContainer) {
  +            JahiaContainerDefinition parentDef = 
JahiaContainerDefinitionsRegistry.getInstance().getDefinition(ctnDefId);
  +            JahiaContainerSubDefinition parentSd = 
(JahiaContainerSubDefinition) parentDef.getSubDefs().get(new 
Integer(pageDefId));
  +            List struct = parentSd.getStructure();
  +            boolean found = false;
  +            for (Iterator iterator = struct.iterator(); iterator.hasNext() 
&& !found;) {
  +                ContentDefinition contentDefinition = (ContentDefinition) 
((JahiaContainerStructure) iterator.next()).getObjectDef();
  +                if 
(contentDefinition.getObjectKey().equals(def.getObjectKey())) {
  +                    found = true;
  +                }
  +            }
  +            if (!found) {
  +                isContainerList = false;
  +                isField = false;
  +            }
  +        }
  +
  +        if (!isField && !isContainerList) {
  +            logger.debug("Definitions not found, checking aliases");
  +
  +            String importedPt = atts.getValue(ImportExportService.JCR_URI, 
"primaryType");
  +            if (importedPt != null && importedPt.endsWith("List")) {
  +                String containerAlias = 
importedPt.substring(importedPt.indexOf(':')+1, importedPt.length() - 4);
  +
  +                List struct = null;
  +                if (parent instanceof ContentContainer) {
  +                    JahiaContainerDefinition parentDef = 
JahiaContainerDefinitionsRegistry.getInstance().getDefinition(ctnDefId);
  +                    JahiaContainerSubDefinition sd = 
(JahiaContainerSubDefinition) parentDef.getSubDefs().get(new 
Integer(pageDefId));
  +                    struct = sd.getStructure();
  +                } else {
  +                    JahiaPageDefinition pageDef = 
ServicesRegistry.getInstance().getJahiaPageTemplateService().lookupPageTemplate(pageDefId);
  +                    /// ... ??
  +                }
  +                if (struct != null) {
  +                    for (Iterator iterator = struct.iterator(); 
iterator.hasNext();) {
  +                        ContentDefinition contentDefinition = 
(ContentDefinition) ((JahiaContainerStructure) iterator.next()).getObjectDef();
  +                        if (contentDefinition instanceof 
JahiaContainerDefinition) {
  +                            String[] aliases = ((JahiaContainerDefinition) 
contentDefinition).getAliasName();
  +                            for (int i = 0; i < aliases.length; i++) {
  +                                String alias = aliases[i];
  +                                JahiaContainerSubDefinition subDef = 
(JahiaContainerSubDefinition) ((JahiaContainerDefinition) 
contentDefinition).getSubDefs().get(new Integer(pageDefId));
  +                                if (alias != null && 
alias.equals(containerAlias) && subDef != null) {
  +                                    def = contentDefinition;
  +                                    isContainerList = true;
  +                                }
  +                            }
  +                        }
  +                    }
  +                }
  +            }
           }
   
           // Field or containerlist inside a container or page
  @@ -472,13 +558,14 @@
   
               if (cc == null) {
                   // ContainerList definition
  -                JahiaContainerList newList = new JahiaContainerList (0, 
containerID, pageID, jcd.getID(), 0);
  +                JahiaContainerList newList = new JahiaContainerList (0, 
containerID, pageID, ((JahiaContainerDefinition)def).getID(), 0);
                   ServicesRegistry.getInstance ().getJahiaContainersService ().
                           saveContainerListInfo (newList, 
parent.getAclID(),jParams);
                   cc = newList.getContentContainerList();
               }
               object = cc;
  -        } else {
  +        } else if (isField) {
  +            JahiaFieldDefinition jfd = ((JahiaFieldDefinition)def);
               ContentField cf = null;
               if (parent instanceof ContentContainer) {
                   JahiaContainer jahiaContainer = ((ContentContainer) 
parent).getJahiaContainer(jParams, elr);
  @@ -521,6 +608,8 @@
                   cf = field.getContentField();
               }
               object = cf;
  +        } else {
  +            logger.warn("Definitions not found");
           }
   
           return object;
  
  
  
  Index: corporate_portal_templates.jar
  ===================================================================
        <<Binary file>>
  

Reply via email to