/** 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.geo.util; import it.eng.spagobi.studio.geo.editors.model.geo.Colours; import it.eng.spagobi.studio.geo.editors.model.geo.Column; import it.eng.spagobi.studio.geo.editors.model.geo.CrossNavigation; import it.eng.spagobi.studio.geo.editors.model.geo.DatamartProvider; import it.eng.spagobi.studio.geo.editors.model.geo.Defaults; import it.eng.spagobi.studio.geo.editors.model.geo.Format; import it.eng.spagobi.studio.geo.editors.model.geo.GEODocument; import it.eng.spagobi.studio.geo.editors.model.geo.GuiParam; import it.eng.spagobi.studio.geo.editors.model.geo.GuiSettings; import it.eng.spagobi.studio.geo.editors.model.geo.Hierarchies; import it.eng.spagobi.studio.geo.editors.model.geo.Hierarchy; import it.eng.spagobi.studio.geo.editors.model.geo.KPI; import it.eng.spagobi.studio.geo.editors.model.geo.Label; import it.eng.spagobi.studio.geo.editors.model.geo.Labels; import it.eng.spagobi.studio.geo.editors.model.geo.Layer; import it.eng.spagobi.studio.geo.editors.model.geo.Layers; import it.eng.spagobi.studio.geo.editors.model.geo.Level; import it.eng.spagobi.studio.geo.editors.model.geo.Link; import it.eng.spagobi.studio.geo.editors.model.geo.LinkParam; import it.eng.spagobi.studio.geo.editors.model.geo.MapProvider; import it.eng.spagobi.studio.geo.editors.model.geo.MapRenderer; import it.eng.spagobi.studio.geo.editors.model.geo.Measures; import it.eng.spagobi.studio.geo.editors.model.geo.Metadata; import it.eng.spagobi.studio.geo.editors.model.geo.Param; import it.eng.spagobi.studio.geo.editors.model.geo.Tresholds; import it.eng.spagobi.studio.geo.editors.model.geo.Window; import it.eng.spagobi.studio.geo.editors.model.geo.Windows; import it.eng.spagobi.studio.geo.util.xml.CdataPrettyPrintWriter; import it.eng.spagobi.studio.geo.util.xml.ParamConverter; import java.io.Writer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer; public class XmlTemplateGenerator { public static void setAlias(XStream xstream){ xstream.registerConverter(new ParamConverter()); xstream.alias("MAP", GEODocument.class); xstream.aliasField("MAP_PROVIDER", GEODocument.class, "mapProvider"); xstream.useAttributeFor(MapProvider.class, "className"); xstream.aliasField("class_name", MapProvider.class, "className"); xstream.useAttributeFor(MapProvider.class, "mapName"); xstream.aliasField("map_name", MapProvider.class, "mapName"); xstream.aliasField("DATAMART_PROVIDER", GEODocument.class, "datamartProvider"); xstream.useAttributeFor(DatamartProvider.class, "className"); xstream.aliasField("class_name", DatamartProvider.class, "className"); xstream.useAttributeFor(DatamartProvider.class, "hierarchy"); xstream.aliasField("hierarchy", DatamartProvider.class, "hierarchy"); xstream.useAttributeFor(DatamartProvider.class, "level"); xstream.aliasField("level", DatamartProvider.class, "level"); /**figli di datamart provider**/ xstream.aliasField("CROSS_NAVIGATION", DatamartProvider.class, "crossNavigation"); xstream.addImplicitCollection(CrossNavigation.class, "links", "LINK", Link.class); xstream.useAttributeFor(Link.class, "hierarchy"); xstream.aliasField("hierarchy", Link.class, "hierarchy"); xstream.useAttributeFor(Link.class, "level"); xstream.aliasField("level", Link.class, "level"); xstream.addImplicitCollection(Link.class, "param", "PARAM", LinkParam.class); xstream.omitField(Link.class, "id"); xstream.useAttributeFor(LinkParam.class, "name"); xstream.aliasField("name", LinkParam.class, "name"); xstream.useAttributeFor(LinkParam.class, "value"); xstream.aliasField("value", LinkParam.class, "value"); xstream.useAttributeFor(LinkParam.class, "scope"); xstream.aliasField("scope", LinkParam.class, "scope"); xstream.useAttributeFor(LinkParam.class, "type"); xstream.aliasField("type", LinkParam.class, "type"); xstream.omitField(DatamartProvider.class, "DATASET"); /* xstream.aliasField("DATASET", DatamartProvider.class, "dataset"); xstream.aliasField("QUERY", Dataset.class, "query"); xstream.aliasField("DATASOURCE", Dataset.class, "datasource"); xstream.useAttributeFor(Datasource.class, "type"); xstream.aliasField("type", Datasource.class, "type"); xstream.useAttributeFor(Datasource.class, "driver"); xstream.aliasField("driver", Datasource.class, "driver"); xstream.useAttributeFor(Datasource.class, "url"); xstream.aliasField("url", Datasource.class, "url"); xstream.useAttributeFor(Datasource.class, "user"); xstream.aliasField("user", Datasource.class, "user"); xstream.useAttributeFor(Datasource.class, "password"); xstream.aliasField("password", Datasource.class, "password");*/ xstream.aliasField("METADATA", DatamartProvider.class, "metadata"); xstream.useAttributeFor(Metadata.class, "dataset"); xstream.aliasField("dataset", Metadata.class, "dataset"); xstream.addImplicitCollection(Metadata.class, "column", "COLUMN", Column.class); xstream.useAttributeFor(Column.class, "type"); xstream.aliasField("type", Column.class, "type"); xstream.useAttributeFor(Column.class, "columnId"); xstream.aliasField("column_id", Column.class, "columnId"); xstream.useAttributeFor(Column.class, "hierarchy"); xstream.aliasField("hierarchy", Column.class, "hierarchy"); xstream.useAttributeFor(Column.class, "level"); xstream.aliasField("level", Column.class, "level"); xstream.useAttributeFor(Column.class, "aggFunction"); xstream.aliasField("agg_func", Column.class, "aggFunction"); xstream.useAttributeFor(Column.class, "choosenForTemplate"); xstream.aliasField("choosenForTemplate", Column.class, "choosenForTemplate"); xstream.aliasField("HIERARCHIES", DatamartProvider.class, "hierarchies"); xstream.addImplicitCollection(Hierarchies.class, "hierarchy", "HIERARCHY", Hierarchy.class); xstream.useAttributeFor(Hierarchy.class, "name"); xstream.aliasField("name", Hierarchy.class, "name"); xstream.useAttributeFor(Hierarchy.class, "type"); xstream.aliasField("type", Hierarchy.class, "type"); xstream.addImplicitCollection(Hierarchy.class, "levels", "LEVEL", Level.class); xstream.useAttributeFor(Level.class, "name"); xstream.aliasField("name", Level.class, "name"); xstream.useAttributeFor(Level.class, "columnId"); xstream.aliasField("column_id", Level.class, "columnId"); xstream.useAttributeFor(Level.class, "columnDesc"); xstream.aliasField("column_desc", Level.class, "columnDesc"); xstream.useAttributeFor(Level.class, "featureName"); xstream.aliasField("feature_name", Level.class, "featureName"); xstream.aliasField("MAP_RENDERER", GEODocument.class, "mapRenderer"); xstream.useAttributeFor(MapRenderer.class, "className"); xstream.aliasField("class_name", MapRenderer.class, "className"); xstream.aliasField("MEASURES", MapRenderer.class, "measures"); xstream.useAttributeFor(Measures.class, "defaultKpi"); xstream.aliasField("default_kpi", Measures.class, "defaultKpi"); xstream.addImplicitCollection(Measures.class, "kpi", "KPI", KPI.class); xstream.useAttributeFor(KPI.class, "columnId"); xstream.aliasField("column_id", KPI.class, "columnId"); xstream.useAttributeFor(KPI.class, "description"); xstream.aliasField("description", KPI.class, "description"); xstream.useAttributeFor(KPI.class, "aggFunct"); xstream.aliasField("agg_funct", KPI.class, "aggFunct"); xstream.useAttributeFor(KPI.class, "color"); xstream.aliasField("colour", KPI.class, "color"); xstream.aliasField("TRESHOLDS", KPI.class, "tresholds"); xstream.useAttributeFor(Tresholds.class, "type"); xstream.aliasField("type", Tresholds.class, "type"); xstream.useAttributeFor(Tresholds.class, "lbValue"); xstream.aliasField("lb_value", Tresholds.class, "lbValue"); xstream.useAttributeFor(Tresholds.class, "ubValue"); xstream.aliasField("ub_value", Tresholds.class, "ubValue"); xstream.aliasField("PARAM", Tresholds.class, "param"); xstream.useAttributeFor(Param.class, "name"); xstream.aliasField("name", Param.class, "name"); xstream.useAttributeFor(Param.class, "value"); xstream.aliasField("value", Param.class, "value"); xstream.aliasField("COLOURS", KPI.class, "colours"); xstream.useAttributeFor(Colours.class, "type"); xstream.aliasField("type", Colours.class, "type"); xstream.useAttributeFor(Colours.class, "outboundColour"); xstream.aliasField("outbound_colour", Colours.class, "outboundColour"); xstream.useAttributeFor(Colours.class, "nullValuesColor"); xstream.aliasField("null_values_color", Colours.class, "nullValuesColor"); xstream.aliasField("PARAM", Colours.class, "param"); xstream.useAttributeFor(Param.class, "name"); xstream.aliasField("name", Param.class, "name"); xstream.useAttributeFor(Param.class, "value"); xstream.aliasField("value", Param.class, "value"); xstream.aliasField("LAYERS", MapRenderer.class, "layers"); xstream.useAttributeFor(Layers.class, "mapName"); xstream.aliasField("mapName", Layers.class, "mapName"); xstream.addImplicitCollection(Layers.class, "layer", "LAYER", Layer.class); xstream.useAttributeFor(Layer.class, "name"); xstream.aliasField("name", Layer.class, "name"); xstream.useAttributeFor(Layer.class, "defaultFillColour"); xstream.aliasField("default_fill_color", Layer.class, "defaultFillColour"); xstream.useAttributeFor(Layer.class, "description"); xstream.aliasField("description", Layer.class, "description"); xstream.useAttributeFor(Layer.class, "selected"); xstream.aliasField("selected", Layer.class, "selected"); xstream.useAttributeFor(Layer.class, "choosenForTemplate"); xstream.aliasField("choosenForTemplate", Layer.class, "choosenForTemplate"); //gui settings xstream.aliasField("GUI_SETTINGS", MapRenderer.class, "guiSettings"); xstream.addImplicitCollection(GuiSettings.class, "params", "PARAM", GuiParam.class); xstream.useAttributeFor(GuiParam.class, "name"); xstream.aliasField("name", GuiParam.class, "name"); xstream.aliasField("WINDOWS", GuiSettings.class, "windows"); xstream.addImplicitCollection(Windows.class, "window", "WINDOW", Window.class); xstream.useAttributeFor(Window.class, "name"); xstream.aliasField("name", Window.class, "name"); xstream.addImplicitCollection(Window.class, "params", "PARAM", GuiParam.class); xstream.useAttributeFor(GuiParam.class, "name"); xstream.aliasField("name", GuiParam.class, "name"); xstream.aliasField("DEFAULTS", Windows.class, "defaults"); xstream.addImplicitCollection(Defaults.class, "params", "PARAM", GuiParam.class); xstream.useAttributeFor(GuiParam.class, "name"); xstream.aliasField("name", GuiParam.class, "name"); xstream.aliasField("LABELS", GuiSettings.class, "labels"); xstream.addImplicitCollection(Labels.class, "label", "LABEL", Label.class); xstream.useAttributeFor(Label.class, "position"); xstream.aliasField("position", Label.class, "position"); xstream.useAttributeFor(Label.class, "className"); xstream.aliasField("class_name", Label.class, "className"); xstream.aliasField("TEXT", Label.class, "text"); xstream.addImplicitCollection(Label.class, "params", "PARAM", GuiParam.class); xstream.aliasField("FORMAT", Label.class, "format"); xstream.useAttributeFor(Format.class, "day"); xstream.aliasField("day", Format.class, "day"); xstream.useAttributeFor(Format.class, "hour"); xstream.aliasField("hour", Format.class, "hour"); } public static String transformToXml(Object bean) { final XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("_", "_"); //XStream xstream = new XStream(new DomDriver("UTF-8", replacer)); XStream xstream = new XStream(new DomDriver("UTF-8", replacer) { public HierarchicalStreamWriter createWriter(Writer out) { return new CdataPrettyPrintWriter(out, replacer) { protected void writeText(QuickWriter writer, String text) { writer.write(text); } }; } }); xstream.setMode(XStream.NO_REFERENCES); setAlias(xstream); String xml = xstream.toXML(bean); // System.out.println(xml); return xml; } public static GEODocument readXml(IFile file) throws CoreException{ XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("grfthscv", "_"); XStream xstream = new XStream(new DomDriver("UTF-8", replacer)); setAlias(xstream); GEODocument objFromXml = (GEODocument)xstream.fromXML(file.getContents()); return objFromXml; } public static void main(String[] args) { } }