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