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

Reply via email to