/** SpagoBI, the Open Source Business Intelligence suite Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. **/ package it.eng.spagobi.studio.documentcomposition.util; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Document; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.DocumentComposition; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.DocumentsConfiguration; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameter; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameters; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Refresh; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.RefreshDocLinked; import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Style; import java.util.Vector; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer; public class XmlTemplateGenerator { public static void setAlias(XStream xstream){ xstream.alias("DOCUMENTS_COMPOSITION", DocumentComposition.class); xstream.useAttributeFor(DocumentComposition.class, "templateValue"); xstream.aliasField("template_value", DocumentComposition.class, "templateValue"); xstream.aliasField("DOCUMENTS_CONFIGURATION", DocumentComposition.class, "documentsConfiguration"); xstream.useAttributeFor(DocumentsConfiguration.class, "videoWidth"); xstream.aliasField("video_width", DocumentsConfiguration.class, "videoWidth"); xstream.useAttributeFor(DocumentsConfiguration.class, "videoHeight"); xstream.aliasField("video_height", DocumentsConfiguration.class, "videoHeight"); xstream.addImplicitCollection(DocumentsConfiguration.class, "documents", "DOCUMENT", Document.class); xstream.useAttributeFor(Document.class, "sbiObjLabel"); xstream.aliasField("sbi_obj_label", Document.class, "sbiObjLabel"); try{ xstream.useAttributeFor(Document.class, "localFileName"); xstream.aliasField("local_file_name", Document.class, "localFileName"); } catch (Exception e) { // if not treated } xstream.aliasField("STYLE", Document.class, "style"); xstream.useAttributeFor(Style.class, "style"); xstream.useAttributeFor(Style.class, "mode"); xstream.aliasField("style", Style.class, "style"); xstream.aliasField("PARAMETERS", Document.class, "parameters"); xstream.addImplicitCollection(Parameters.class, "parameter", "PARAMETER", Parameter.class); xstream.omitField(Parameter.class, "bo"); xstream.useAttributeFor(Parameter.class, "navigationName"); xstream.aliasField("navigationName", Parameter.class, "navigationName"); xstream.useAttributeFor(Parameter.class, "type"); xstream.aliasField("type", Parameter.class, "type"); xstream.useAttributeFor(Parameter.class, "id"); xstream.aliasField("id", Parameter.class, "id"); xstream.useAttributeFor(Parameter.class, "sbiParLabel"); xstream.aliasField("sbi_par_label", Parameter.class, "sbiParLabel"); xstream.useAttributeFor(Parameter.class, "defaultVal"); xstream.aliasField("default_value", Parameter.class, "defaultVal"); xstream.aliasField("REFRESH", Parameter.class, "refresh"); xstream.addImplicitCollection(Refresh.class, "refreshDocLinked", "REFRESH_DOC_LINKED", RefreshDocLinked.class); xstream.useAttributeFor(RefreshDocLinked.class, "labelDoc"); xstream.aliasField("labelDoc", RefreshDocLinked.class, "labelDoc"); xstream.useAttributeFor(RefreshDocLinked.class, "labelParam"); xstream.aliasField("labelParam", RefreshDocLinked.class, "labelParam"); xstream.useAttributeFor(RefreshDocLinked.class, "idParam"); xstream.aliasField("idParam", RefreshDocLinked.class, "idParam"); } public static String transformToXml(Object bean) { XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("_", "_"); XStream xstream = new XStream(new DomDriver("UTF-8", replacer)); xstream.setMode(XStream.NO_REFERENCES); setAlias(xstream); String xml = xstream.toXML(bean); //System.out.println(xml); return xml; } /** populate the documentComposition Object from template*/ public static DocumentComposition readXml(IFile file) throws CoreException{ XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("grfthscv", "_"); XStream xstream = new XStream(new DomDriver("UTF-8", replacer)); setAlias(xstream); DocumentComposition objFromXml = (DocumentComposition)xstream.fromXML(file.getContents()); objFromXml.setTemplateValue("/jsp/engines/documentcomposition/template/dynamicTemplate.jsp"); return objFromXml; } public static void main(String[] args) { // // DocumentComposition docComp = new DocumentComposition(); // // DocumentsConfiguration documentsConfiguration = new DocumentsConfiguration(); // // RefreshDocLinked refreshDocLinked = new RefreshDocLinked(); // refreshDocLinked.setLabelDoc("doc1"); // refreshDocLinked.setLabelParam("i1"); // // // Vector rv = new Vector(); // rv.add(refreshDocLinked); // // Refresh refresh = new Refresh(); // refresh.setRefreshDocLinked(rv); // Parameter i1= new Parameter(); // i1.setDefaultVal(""); // // i1.setSbiParLabel("sb1"); // i1.setType("IN"); // i1.setRefresh(refresh); // // Parameter i1= new Parameter(); // i1.setDefaultVal(""); // i1.setSbiParLabel("sb1"); // i1.setType("IN"); // i1.setRefresh(refresh); // Parameter i2= new Parameter(); // i2.setDefaultVal(""); // // i2.setSbiParLabel("sb2"); // i2.setType("IN"); // i2.setRefresh(refresh); // // Parameter i2= new Parameter(); // i2.setDefaultVal(""); // i2.setSbiParLabel("sb2"); // i2.setType("IN"); // i2.setRefresh(refresh); // // Vector p = new Vector(); // p.add(i1); // p.add(i2); // // Parameters parameters = new Parameters(); // parameters.setParameter(p); // // Style style = new Style(); // style.setStyle("float:left; width:49%;"); // Document doc1 = new Document(); // // doc1.setSbiObjLabel("sbi doc1 label"); // doc1.setStyle(style); // doc1.setParameters(parameters); // // Document doc1 = new Document(); // doc1.setSbiObjLabel("sbi doc1 label"); // doc1.setStyle(style); // doc1.setParameters(parameters); // Document doc2 = new Document(); // // doc2.setSbiObjLabel("sbi doc2 label"); // doc2.setStyle(style); // // Document doc2 = new Document(); // doc2.setSbiObjLabel("sbi doc2 label"); // doc2.setStyle(style); // Document doc3 = new Document(); // // doc3.setSbiObjLabel("sbi doc3 label"); // doc3.setStyle(style); // // Document doc3 = new Document(); // doc3.setSbiObjLabel("sbi doc3 label"); // doc3.setStyle(style); // // Vector docsVector = new Vector(); // docsVector.add(doc1); // docsVector.add(doc2); // docsVector.add(doc3); // // // documentsConfiguration.setVideoWidth("1400"); // documentsConfiguration.setVideoHeight("1050"); // documentsConfiguration.setDocuments(docsVector); // // // docComp.setTemplateValue("xxx.jsp"); // docComp.setDocumentsConfiguration(documentsConfiguration); // // // // transformToXml(docComp); } }