Author: sshyrkov
Date: Mon Nov 12 08:20:08 2007
New Revision: 19115
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19115&repname=
=3Djahia
Log:
Add support for template descriptor serrialization
Modified:
branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/services/temp=
lates/JahiaTemplatesPackageHandler.java
Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/service=
s/templates/JahiaTemplatesPackageHandler.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/services/templates/JahiaTemplatesPacka=
geHandler.java&rev=3D19115&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/services/temp=
lates/JahiaTemplatesPackageHandler.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/services/temp=
lates/JahiaTemplatesPackageHandler.java Mon Nov 12 08:20:08 2007
@@ -24,13 +24,20 @@
=
package org.jahia.services.templates;
=
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Iterator;
+
import org.apache.log4j.Logger;
+import org.jahia.data.templates.JahiaTemplateDef;
import org.jahia.data.templates.JahiaTemplatesPackage;
import org.jahia.exceptions.JahiaException;
+import org.jahia.exceptions.JahiaTemplateServiceException;
+import org.jahia.services.importexport.DataWriter;
import org.jahia.utils.zip.JahiaArchiveFileHandler;
-
-import java.io.File;
-import java.io.IOException;
+import org.xml.sax.helpers.AttributesImpl;
=
/**
* This class is responsible for loading data from a Template Jar File
@@ -42,6 +49,14 @@
=
private static Logger logger =3D Logger
.getLogger(JahiaTemplatesPackageHandler.class);
+ =
+ private static final String NS_URI_DEF =3D "http://www.w3.org/2000/xml=
ns/";
+
+ private static final String NS_URI_XSI =3D "http://www.w3.org/2001/XML=
Schema-instance";
+
+ private static final String NS_URI_JAHIA =3D "http://www.jahia.net/jah=
ia/templates";
+ =
+ private static final String SCHEMA_LOCATION =3D "http://www.jahia.net/=
jahia/templates http://intranet.jahia.com/jahia/webdav/site/intranet/users/=
sergiy/public/tmp/templates_2_0.xsd";
=
/**
* The full path to the Template Jar File *
@@ -89,16 +104,24 @@
public JahiaTemplatesPackageHandler(String filePath)
throws JahiaException {
=
- m_FilePath =3D filePath;
+ this(new File(filePath));
+ }
+ =
+ /**
+ * Constructor is initialized with the template File
+ */
+ public JahiaTemplatesPackageHandler(File file)
+ throws JahiaException {
+
+ m_FilePath =3D file.getPath();
=
- File tmpFile =3D new File(filePath);
boolean isFile =3D true;
=
- if (tmpFile.isFile() && tmpFile.canWrite()) {
+ if (file.isFile() && file.canWrite()) {
=
try {
=
- m_ArchFile =3D new JahiaArchiveFileHandler(filePath);
+ m_ArchFile =3D new JahiaArchiveFileHandler(m_FilePath);
=
} catch (IOException e) {
=
@@ -237,5 +260,124 @@
}
}
=
+ static void serializeTemplateDescriptor(JahiaTemplatesPackage pkg,
+ File templateSetFolder) throws JahiaTemplateServiceException {
+
+ try {
+ serializeTemplateDescriptor(pkg, new FileWriter(new File(
+ templateSetFolder, TEMPLATES_XML_FILE)));
+ } catch (IOException e) {
+ logger.error(
+ "Unable to persist template deployment desriptor for p=
ackage '"
+ + pkg.getName(), e);
+ throw new JahiaTemplateServiceException(
+ "Unable to persist template deployment desriptor for p=
ackage '"
+ + pkg.getName(), e);
+ }
+ }
+
+ static void serializeTemplateDescriptor(JahiaTemplatesPackage pkg,
+ Writer writer) throws JahiaTemplateServiceException {
+ try {
+ DataWriter ch =3D new DataWriter(writer);
+ ch.startDocument();
+
+ AttributesImpl emptyAttr =3D new AttributesImpl();
+ AttributesImpl attr =3D new AttributesImpl();
+ attr.addAttribute(NS_URI_DEF, "xsi", "xmlns:xsi", "CDATA",
+ NS_URI_XSI);
+ attr.addAttribute("", "xmlns", "xmlns", "CDATA", NS_URI_JAHIA);
+ attr.addAttribute(NS_URI_XSI, "schemaLocation",
+ "xsi:schemaLocation", "CDATA", SCHEMA_LOCATION);
+
+ ch.startElement(NS_URI_JAHIA, "template-set", "template-set", =
attr);
=
-} // End Class JahiaTemplatePackage
+ ch.dataElement("package-name", pkg.getName());
+
+ if (pkg.getExtends() !=3D null) {
+ ch.dataElement("extends", pkg.getExtends());
+ }
+
+ ch.dataElement("root-folder", pkg.getRootFolder());
+
+ if (pkg.getClassesFile() !=3D null) {
+ ch.dataElement("classes-file", pkg.getClassesFile());
+ }
+
+ if (pkg.getClassesRoot() !=3D null) {
+ ch.dataElement("classes-root", pkg.getClassesRoot());
+ }
+
+ if (pkg.getInitialImport() !=3D null) {
+ ch.dataElement("initial-import", pkg.getInitialImport());
+ }
+
+ if (pkg.getProvider() !=3D null) {
+ ch.dataElement("provider", pkg.getProvider());
+ }
+
+ if (pkg.getThumbnail() !=3D null) {
+ ch.dataElement("thumbnail", pkg.getThumbnail());
+ }
+
+ if (pkg.getDescription() !=3D null) {
+ ch.dataElement("description", pkg.getDescription());
+ }
+
+ // common pages
+ if (pkg.getMySettingsPageName() !=3D null
+ || pkg.getSearchResultsPageName() !=3D null) {
+ ch.startElement(NS_URI_JAHIA, "common-pages", "common-page=
s",
+ emptyAttr);
+ if (pkg.getMySettingsPageName() !=3D null) {
+ ch.dataElement("my-settings", pkg.getMySettingsPageNam=
e());
+ }
+ if (pkg.getSearchResultsPageName() !=3D null) {
+ ch.dataElement("search-results", pkg
+ .getSearchResultsPageName());
+ }
+ ch.endElement(NS_URI_JAHIA, "common-pages", "common-pages"=
);
+ }
+
+ // templates
+ attr =3D new AttributesImpl();
+ if (pkg.getDefaultPageName() !=3D null) {
+ attr.addAttribute("", "default", "default", "CDATA", pkg
+ .getDefaultPageName());
+ }
+ if (pkg.getHomePageName() !=3D null) {
+ attr.addAttribute("", "homepage", "homepage", "CDATA", pkg
+ .getHomePageName());
+ }
+ ch.startElement(NS_URI_JAHIA, "templates", "templates", attr);
+ for (Iterator iterator =3D pkg.getTemplates().iterator(); iter=
ator
+ .hasNext();) {
+ JahiaTemplateDef template =3D (JahiaTemplateDef) iterator.=
next();
+ attr =3D new AttributesImpl();
+ attr.addAttribute("", "name", "name", "CDATA", template.ge=
tName());
+ if (template.getDisplayName() !=3D null) {
+ attr.addAttribute("", "display-name", "display-name", =
"CDATA", template
+ .getDisplayName());
+ }
+ attr.addAttribute("", "filename", "filename", "CDATA", tem=
plate
+ .getFileName());
+ if (!template.isVisible()) {
+ attr.addAttribute("", "visible", "visible", "CDATA", "=
false");
+ }
+ ch.emptyElement(NS_URI_JAHIA, "template", "template", attr=
);
+ }
+ ch.endElement(NS_URI_JAHIA, "templates", "templates");
+
+ ch.endElement(NS_URI_JAHIA, "template-set", "template-set");
+ ch.endDocument();
+ ch.flush();
+ } catch (Exception e) {
+ logger.error(
+ "Unable to persist template deployment desriptor for p=
ackage '"
+ + pkg.getName(), e);
+ throw new JahiaTemplateServiceException(
+ "Unable to persist template deployment desriptor for p=
ackage '"
+ + pkg.getName(), e);
+ }
+ }
+}
\ No newline at end of file
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list