/** 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.extchart.model; import it.eng.spagobi.studio.extchart.model.bo.Axes; import it.eng.spagobi.studio.extchart.model.bo.AxesList; import it.eng.spagobi.studio.extchart.model.bo.AxesStyle; import it.eng.spagobi.studio.extchart.model.bo.Colors; import it.eng.spagobi.studio.extchart.model.bo.Dataset; import it.eng.spagobi.studio.extchart.model.bo.Drill; import it.eng.spagobi.studio.extchart.model.bo.ExtChart; import it.eng.spagobi.studio.extchart.model.bo.Highlight; import it.eng.spagobi.studio.extchart.model.bo.Label; import it.eng.spagobi.studio.extchart.model.bo.LabelsStyle; import it.eng.spagobi.studio.extchart.model.bo.Legend; import it.eng.spagobi.studio.extchart.model.bo.MarkerConfig; import it.eng.spagobi.studio.extchart.model.bo.Param; import it.eng.spagobi.studio.extchart.model.bo.ParamList; import it.eng.spagobi.studio.extchart.model.bo.Segment; import it.eng.spagobi.studio.extchart.model.bo.Series; import it.eng.spagobi.studio.extchart.model.bo.SeriesList; import it.eng.spagobi.studio.extchart.model.bo.StyleSeries; import it.eng.spagobi.studio.extchart.model.bo.StyleSubTitle; import it.eng.spagobi.studio.extchart.model.bo.StyleTitle; import it.eng.spagobi.studio.extchart.model.bo.SubTitle; import it.eng.spagobi.studio.extchart.model.bo.Tips; import it.eng.spagobi.studio.extchart.model.bo.Title; import it.eng.spagobi.studio.extchart.utils.AxesUtilities; import it.eng.spagobi.studio.utils.exceptions.SavingEditorException; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer; public class XmlTemplateGenerator { private static Logger logger = LoggerFactory.getLogger(XmlTemplateGenerator.class); public static void setAlias(XStream xstream){ logger.debug("IN"); xstream.alias("EXTCHART", ExtChart.class); // xstream.useAttributeFor(ExtChart.class, ExtChart.AXES_LIST); // xstream.aliasField("AXES_LIST", ExtChart.class, ExtChart.AXES_LIST); // // xstream.useAttributeFor(ExtChart.class, ExtChart.AXES_STYLE); // xstream.aliasField("AXES_STYLE", ExtChart.class, ExtChart.AXES_STYLE); xstream.useAttributeFor(ExtChart.class, ExtChart.ANIMATE); xstream.aliasField(ExtChart.ANIMATE, ExtChart.class, ExtChart.ANIMATE); // xstream.useAttributeFor(ExtChart.class, ExtChart.COLORS); // xstream.aliasField("COLORS", ExtChart.class, ExtChart.COLORS); // // xstream.useAttributeFor(ExtChart.class, ExtChart.DRILL); // xstream.aliasField("DRILL", ExtChart.class, ExtChart.DRILL); xstream.useAttributeFor(ExtChart.class, ExtChart.HEIGHT); xstream.aliasField(ExtChart.HEIGHT, ExtChart.class, ExtChart.HEIGHT); // xstream.useAttributeFor(ExtChart.class, ExtChart.LABEL_STYLE); // xstream.aliasField("LABEL_STYLE", ExtChart.class, ExtChart.LABEL_STYLE); // // xstream.useAttributeFor(ExtChart.class, ExtChart.LEGEND); // xstream.aliasField("LEGEND", ExtChart.class, ExtChart.LEGEND); xstream.useAttributeFor(ExtChart.class, ExtChart.REFRESH_TIME); xstream.aliasField(ExtChart.REFRESH_TIME, ExtChart.class, ExtChart.REFRESH_TIME); // xstream.useAttributeFor(ExtChart.class, ExtChart.SERIES_LIST); // xstream.aliasField("SERIES_LIST", ExtChart.class, ExtChart.SERIES_LIST); xstream.useAttributeFor(ExtChart.class, ExtChart.SHADOW); xstream.aliasField(ExtChart.SHADOW, ExtChart.class, ExtChart.SHADOW); // xstream.useAttributeFor(ExtChart.class, ExtChart.SUBTITLE); // xstream.aliasField("SUBTITLE", ExtChart.class, ExtChart.SUBTITLE); // // xstream.useAttributeFor(ExtChart.class, ExtChart.TITLE); // xstream.aliasField("TITLE", ExtChart.class, ExtChart.TITLE); xstream.useAttributeFor(ExtChart.class, ExtChart.WIDTH); xstream.aliasField(ExtChart.WIDTH, ExtChart.class, ExtChart.WIDTH); xstream.useAttributeFor(ExtChart.class, ExtChart.TYPE); xstream.aliasField(ExtChart.TYPE, ExtChart.class, ExtChart.TYPE); // ------------------------------------------------------- xstream.aliasField("DATASET", ExtChart.class, "dataset"); xstream.useAttributeFor(Dataset.class, Dataset.LABEL); xstream.aliasField(Dataset.LABEL, Dataset.class, Dataset.LABEL); // ------------------------------------------------------- xstream.aliasField("TITLE", ExtChart.class, "title"); xstream.useAttributeFor(Title.class, Title.STYLE); xstream.aliasField(Title.STYLE, Title.class, Title.STYLE); xstream.useAttributeFor(Title.class, Title.TEXT); xstream.aliasField(Title.TEXT, Title.class, Title.TEXT); // ------------------------------------------------------- xstream.aliasField("AXES", AxesList.class, "axes"); xstream.useAttributeFor(Axes.class, Axes.FIELDS); xstream.aliasField(Axes.FIELDS, Axes.class, Axes.FIELDS); xstream.useAttributeFor(Axes.class, Axes.FIELDS_LIST); xstream.aliasField(Axes.FIELDS_LIST, Axes.class, Axes.FIELDS_LIST); xstream.useAttributeFor(Axes.class, Axes.MINIMUM); xstream.aliasField(Axes.MINIMUM, Axes.class, Axes.MINIMUM); xstream.useAttributeFor(Axes.class, Axes.MAXIMUM); xstream.aliasField(Axes.MAXIMUM, Axes.class, Axes.MAXIMUM); xstream.useAttributeFor(Axes.class, Axes.STEPS); xstream.aliasField(Axes.STEPS, Axes.class, Axes.STEPS); xstream.useAttributeFor(Axes.class, Axes.MARGIN); xstream.aliasField(Axes.MARGIN, Axes.class, Axes.MARGIN); xstream.useAttributeFor(Axes.class, Axes.POSITION); xstream.aliasField(Axes.POSITION, Axes.class, Axes.POSITION); xstream.useAttributeFor(Axes.class, Axes.TITLE); xstream.aliasField(Axes.TITLE, Axes.class, Axes.TITLE); xstream.useAttributeFor(Axes.class, Axes.TYPE); xstream.aliasField(Axes.TYPE, Axes.class, Axes.TYPE); xstream.useAttributeFor(Axes.class, Axes.GRID); xstream.aliasField(Axes.GRID, Axes.class, Axes.GRID); // ------------------------------------------------------- xstream.aliasField("AXES_LIST", ExtChart.class, "axesList"); xstream.addImplicitCollection(AxesList.class, "axes", "AXES", Axes.class); // ------------------------------------------------------- xstream.aliasField("AXES_STYLE", ExtChart.class, "axesStyle"); xstream.useAttributeFor(AxesStyle.class, AxesStyle.COLOR); xstream.aliasField(AxesStyle.COLOR, AxesStyle.class, AxesStyle.COLOR); xstream.useAttributeFor(AxesStyle.class, AxesStyle.FONT_FAMILY); xstream.aliasField(AxesStyle.FONT_FAMILY, AxesStyle.class, AxesStyle.FONT_FAMILY); xstream.useAttributeFor(AxesStyle.class, AxesStyle.FONT_SIZE); xstream.aliasField(AxesStyle.FONT_SIZE, AxesStyle.class, AxesStyle.FONT_SIZE); xstream.useAttributeFor(AxesStyle.class, AxesStyle.FONT_WEIGHT); xstream.aliasField(AxesStyle.FONT_WEIGHT, AxesStyle.class, AxesStyle.FONT_WEIGHT); // ------------------------------------------------------- xstream.aliasField("LABELS_STYLE", ExtChart.class, "labelsStyle"); xstream.useAttributeFor(LabelsStyle.class, LabelsStyle.COLOR); xstream.aliasField(LabelsStyle.COLOR, LabelsStyle.class, LabelsStyle.COLOR); xstream.useAttributeFor(LabelsStyle.class, LabelsStyle.FONT_FAMILY); xstream.aliasField(LabelsStyle.FONT_FAMILY, LabelsStyle.class, LabelsStyle.FONT_FAMILY); xstream.useAttributeFor(LabelsStyle.class, LabelsStyle.FONT_SIZE); xstream.aliasField(LabelsStyle.FONT_SIZE, LabelsStyle.class, LabelsStyle.FONT_SIZE); xstream.useAttributeFor(LabelsStyle.class, LabelsStyle.FONT_WEIGHT); xstream.aliasField(LabelsStyle.FONT_WEIGHT, LabelsStyle.class, LabelsStyle.FONT_WEIGHT); // ------------------------------------------------------- xstream.aliasField("COLORS", ExtChart.class, "colors"); xstream.useAttributeFor(Colors.class, Colors.COLOR); xstream.aliasField(Colors.COLOR, Colors.class, Colors.COLOR); xstream.useAttributeFor(Colors.class, Colors.BASE_COLOR); xstream.aliasField(Colors.BASE_COLOR, Colors.class, Colors.BASE_COLOR); // ------------------------------------------------------- xstream.aliasField("DRILL", ExtChart.class, "drill"); xstream.useAttributeFor(Drill.class, Drill.DOCUMENT); xstream.aliasField(Drill.DOCUMENT, Drill.class, Drill.DOCUMENT); // ------------------------------------------------------- //xstream.aliasField("HIGHLIGHT", Series.class, "Highlight"); //xstream.useAttributeFor(Highlight.class, Highlight.SEGMENT); //xstream.aliasField(Highlight.SEGMENT, Highlight.class, Highlight.SEGMENT); // ------------------------------------------------------- xstream.aliasField("LABEL", Series.class, "label"); xstream.useAttributeFor(Label.class, Label.CONTRAST); xstream.aliasField(Label.CONTRAST, Label.class, Label.CONTRAST); xstream.useAttributeFor(Label.class, Label.DISPLAY); xstream.aliasField(Label.DISPLAY, Label.class, Label.DISPLAY); xstream.useAttributeFor(Label.class, Label.FIELD); xstream.aliasField(Label.FIELD, Label.class, Label.FIELD); xstream.useAttributeFor(Label.class, Label.FONT); xstream.aliasField(Label.FONT, Label.class, Label.FONT); xstream.useAttributeFor(Label.class, Label.ORIENTATION); xstream.aliasField(Label.ORIENTATION, Label.class, Label.ORIENTATION); xstream.useAttributeFor(Label.class, Label.COLOR); xstream.aliasField(Label.COLOR, Label.class, Label.COLOR); xstream.useAttributeFor(Label.class, Label.TEXT_ANCHOR); xstream.aliasField("text-anchor", Label.class, Label.TEXT_ANCHOR); // ------------------------------------------------------- xstream.aliasField("LEGEND", ExtChart.class, "legend"); xstream.useAttributeFor(Legend.class, Legend.POSITION); xstream.aliasField(Legend.POSITION, Legend.class, Legend.POSITION); // ------------------------------------------------------- xstream.aliasField("MARKER_CONFIG", Series.class, "markerConfig"); xstream.useAttributeFor(MarkerConfig.class, MarkerConfig.RADIUS); xstream.aliasField(MarkerConfig.RADIUS, MarkerConfig.class, MarkerConfig.RADIUS); xstream.useAttributeFor(MarkerConfig.class, MarkerConfig.SIZE); xstream.aliasField(MarkerConfig.SIZE, MarkerConfig.class, MarkerConfig.SIZE); xstream.useAttributeFor(MarkerConfig.class, MarkerConfig.TYPE); xstream.aliasField(MarkerConfig.TYPE, MarkerConfig.class, MarkerConfig.TYPE); // ------------------------------------------------------- // xstream.aliasField("SERIES_LIST", ExtChart.class, "seriesList"); // xstream.addImplicitCollection(SeriesList.class, "series", "SERIES", Series.class); // xstream.aliasField("PARAM_LIST", Drill.class, "paramList"); // xstream.addImplicitCollection(ParamList.class, "params", "PARAM", Param.class); xstream.aliasField("PARAM_LIST", Drill.class, "paramList"); xstream.addImplicitCollection(ParamList.class, "params", "PARAM", Param.class); xstream.useAttributeFor(Param.class, "name"); xstream.aliasField("name", Param.class, "name"); xstream.useAttributeFor(Param.class, "type"); xstream.aliasField("type", Param.class, "type"); xstream.useAttributeFor(Param.class, "value"); xstream.aliasField("value", Param.class, "value"); // ------------------------------------------------------- // xstream.aliasField("PARAM", ParamList.class, "param"); // // xstream.useAttributeFor(Param.class, Param.TYPE); // xstream.aliasField(Param.TYPE, Param.class, Param.TYPE); // // xstream.useAttributeFor(Param.class, Param.NAME); // xstream.aliasField(Param.NAME, Param.class, Param.NAME); // // xstream.useAttributeFor(Param.class, Param.VALUE); // xstream.aliasField(Param.VALUE, Param.class, Param.VALUE); // ------------------------------------------------------- //xstream.aliasField("SEGMENT", Highlight.class, "segment"); //xstream.useAttributeFor(Segment.class, Segment.MARGIN); //xstream.aliasField(Segment.MARGIN, Segment.class, Segment.MARGIN); // ------------------------------------------------------- xstream.aliasField("SERIES", SeriesList.class, "series"); xstream.useAttributeFor(Series.class, Series.AXIS); xstream.aliasField(Series.AXIS, Series.class, Series.AXIS); xstream.useAttributeFor(Series.class, Series.DONUT); xstream.aliasField(Series.DONUT, Series.class, Series.DONUT); xstream.useAttributeFor(Series.class, Series.FIELD); xstream.aliasField(Series.FIELD, Series.class, Series.FIELD); xstream.useAttributeFor(Series.class, Series.X_FIELD); xstream.aliasField(Series.X_FIELD, Series.class, Series.X_FIELD); xstream.useAttributeFor(Series.class, Series.Y_FIELD); xstream.aliasField(Series.Y_FIELD, Series.class, Series.Y_FIELD); xstream.useAttributeFor(Series.class, "yFieldList"); xstream.aliasField(Series.Y_FIELD_LIST, Series.class, "yFieldList"); xstream.useAttributeFor(Series.class, Series.SHOW_IN_LEGEND); xstream.aliasField(Series.SHOW_IN_LEGEND, Series.class, Series.SHOW_IN_LEGEND); xstream.useAttributeFor(Series.class, Series.TYPE); xstream.aliasField(Series.TYPE, Series.class, Series.TYPE); xstream.useAttributeFor(Series.class, Series.HIGHLIGHT); xstream.aliasField(Series.HIGHLIGHT, Series.class, Series.HIGHLIGHT); xstream.useAttributeFor(Series.class, Series.STACKED); xstream.aliasField(Series.STACKED, Series.class, Series.STACKED); xstream.useAttributeFor(Series.class, Series.SMOOTH); xstream.aliasField(Series.SMOOTH, Series.class, Series.SMOOTH); xstream.useAttributeFor(Series.class, Series.FILL); xstream.aliasField(Series.FILL, Series.class, Series.FILL); xstream.useAttributeFor(Series.class, Series.GUTTER); xstream.aliasField(Series.GUTTER, Series.class, Series.GUTTER); xstream.useAttributeFor(Series.class, Series.COLOR); xstream.aliasField(Series.COLOR, Series.class, Series.COLOR); xstream.useAttributeFor(Series.class, Series.SHOW_MARKERS); xstream.aliasField(Series.SHOW_MARKERS, Series.class, Series.SHOW_MARKERS); // ------------------------------------------------------- xstream.aliasField("SERIES_LIST", ExtChart.class, "seriesList"); xstream.addImplicitCollection(SeriesList.class, "series", "SERIES", Series.class); // ------------------------------------------------------- xstream.aliasField("STYLE", Series.class, "style"); xstream.useAttributeFor(StyleSeries.class, StyleSeries.OPACITY); xstream.aliasField(StyleSeries.OPACITY, StyleSeries.class, StyleSeries.OPACITY); // ------------------------------------------------------- xstream.aliasField("STYLE", SubTitle.class, "style"); xstream.useAttributeFor(StyleSubTitle.class, StyleSubTitle.COLOR); xstream.aliasField(StyleSubTitle.COLOR, StyleSubTitle.class, StyleSubTitle.COLOR); xstream.useAttributeFor(StyleSubTitle.class, StyleSubTitle.FONT_SIZE); xstream.aliasField(StyleSubTitle.FONT_SIZE, StyleSubTitle.class, StyleSubTitle.FONT_SIZE); xstream.useAttributeFor(StyleSubTitle.class, StyleSubTitle.FONT_WEIGHT); xstream.aliasField(StyleSubTitle.FONT_WEIGHT, StyleSubTitle.class, StyleSubTitle.FONT_WEIGHT); // ------------------------------------------------------- xstream.aliasField("STYLE", Title.class, "style"); xstream.useAttributeFor(StyleTitle.class, StyleTitle.COLOR); xstream.aliasField(StyleTitle.COLOR, StyleTitle.class, StyleTitle.COLOR); xstream.useAttributeFor(StyleTitle.class, StyleTitle.FONT_SIZE); xstream.aliasField(StyleTitle.FONT_SIZE, StyleTitle.class, StyleTitle.FONT_SIZE); xstream.useAttributeFor(StyleTitle.class, StyleTitle.FONT_WEIGHT); xstream.aliasField(StyleTitle.FONT_WEIGHT, StyleTitle.class, StyleTitle.FONT_WEIGHT); // ------------------------------------------------------- xstream.aliasField("SUBTITLE", ExtChart.class, "subTitle"); xstream.useAttributeFor(SubTitle.class, SubTitle.STYLE); xstream.aliasField(SubTitle.STYLE, SubTitle.class, SubTitle.STYLE); xstream.useAttributeFor(SubTitle.class, SubTitle.TEXT); xstream.aliasField(SubTitle.TEXT, SubTitle.class, SubTitle.TEXT); // ------------------------------------------------------- xstream.aliasField("TIPS", Series.class, "tips"); xstream.useAttributeFor(Tips.class, Tips.FORMATTER); xstream.aliasField(Tips.FORMATTER, Tips.class, Tips.FORMATTER); xstream.useAttributeFor(Tips.class, Tips.HEIGHT); xstream.aliasField(Tips.HEIGHT, Tips.class, Tips.HEIGHT); xstream.useAttributeFor(Tips.class, Tips.TRACK_MOUSE); xstream.aliasField(Tips.TRACK_MOUSE, Tips.class, Tips.TRACK_MOUSE); xstream.useAttributeFor(Tips.class, Tips.WIDTH); xstream.aliasField(Tips.WIDTH, Tips.class, Tips.WIDTH); xstream.useAttributeFor(Tips.class, Tips.TEXT); xstream.aliasField(Tips.TEXT, Tips.class, Tips.TEXT); // ------------------------------------------------------- xstream.aliasField("HIGHLIGHT", Series.class, "highlightSegments"); xstream.useAttributeFor(Highlight.class, Highlight.SEGMENT); xstream.aliasField(Highlight.SEGMENT, Highlight.class, Highlight.SEGMENT); xstream.aliasField("SEGMENT", Highlight.class, "segment"); xstream.useAttributeFor(Segment.class, Segment.MARGIN); xstream.aliasField(Segment.MARGIN, Segment.class, Segment.MARGIN); logger.debug("OUT"); } public static String transformToXml(Object bean) throws SavingEditorException { ExtChart extChart = (ExtChart)bean; AxesUtilities axesUtilities = new AxesUtilities(); axesUtilities.updateNumericFields(extChart); axesUtilities.updateCategoryFields(extChart); XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("_", "_"); XStream xstream = new XStream(new DomDriver("ISO-8859-15", replacer)); xstream.setMode(XStream.NO_REFERENCES); setAlias(xstream); String xml = xstream.toXML(bean); return xml; } /** populate the ExtChart Object from template*/ public static ExtChart readXml(IFile file) throws CoreException{ XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("grfthscv", "_"); XStream xstream = new XStream(new DomDriver("ISO-8859-15", replacer)); setAlias(xstream); ExtChart objFromXml = (ExtChart)xstream.fromXML(file.getContents()); return objFromXml; } public static void main(String[] args) { } }