/** 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.utils; import it.eng.spagobi.studio.extchart.model.bo.Axes; import it.eng.spagobi.studio.extchart.model.bo.ExtChart; import it.eng.spagobi.studio.extchart.model.bo.Series; import it.eng.spagobi.studio.utils.exceptions.SavingEditorException; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; import java.util.Vector; import org.slf4j.LoggerFactory; public class AxesUtilities { private static org.slf4j.Logger logger = LoggerFactory.getLogger(AxesUtilities.class); /** * run all series and parse fields in order to fill numeric axes fields list * */ public void updateNumericFields(ExtChart extChart){ logger.debug("IN"); Set<String> bottomSet = new TreeSet<String>(); Set<String> leftSet = new TreeSet<String>(); Set<String> rightSet = new TreeSet<String>(); Set<String> topSet = new TreeSet<String>(); Vector<Series> series = extChart.getSeriesList().getSeries(); for (Iterator iterator = series.iterator(); iterator.hasNext();) { Series series2 = (Series) iterator.next(); String fields = series2.getyFieldList(); fields = fields != null ? fields : ""; String[] fieldArray = fields.split(","); String axis = series2.getAxis() != null ? series2.getAxis() : "left"; for (int i = 0; i < fieldArray.length; i++) { String field = fieldArray[i]; if(axis.equalsIgnoreCase("left")) { leftSet.add(field); } else if(axis.equalsIgnoreCase("right")) rightSet.add(field); else if(axis.equalsIgnoreCase("bottom")) bottomSet.add(field); else if(axis.equalsIgnoreCase("top")) topSet.add(field); } } // get Numeric axes and fill them with position Vector<Axes> axes =extChart.getAxesList().getAxes(); for (Iterator iterator = axes.iterator(); iterator.hasNext();) { Axes axes2 = (Axes) iterator.next(); if (axes2.getType()!=null){ if(axes2.getType().equalsIgnoreCase("Numeric")){ String position = axes2.getPosition(); if(position.equalsIgnoreCase("left")) { String fieldsList = getStringFromSet(leftSet); logger.debug("Numeric axe on position "+position+ " set fields "); axes2.setFields_list(fieldsList); } else if(position.equalsIgnoreCase("right")) { String fieldsList = getStringFromSet(rightSet); logger.debug("Numeric axe on position "+position+ " set fields "); axes2.setFields_list(fieldsList); } else if(position.equalsIgnoreCase("top")) { String fieldsList = getStringFromSet(topSet); logger.debug("Numeric axe on position "+position+ " set fields "); axes2.setFields_list(fieldsList); } else if(position.equalsIgnoreCase("bottom")) { String fieldsList = getStringFromSet(bottomSet); logger.debug("Numeric axe on position "+position+ " set fields "); axes2.setFields_list(fieldsList); } } } } logger.debug("OUT"); } private String getStringFromSet(Set fielsdsSet){ String toReturn=""; for (Iterator iterator2 = fielsdsSet.iterator(); iterator2 .hasNext();) { String str = (String) iterator2.next(); toReturn += str; if(iterator2.hasNext()){ toReturn+=","; } } return toReturn; } /** set series xField as category field * * @param extChart */ public void updateCategoryFields(ExtChart extChart) throws SavingEditorException{ logger.debug("IN"); Axes xAxe = ExtChartUtils.getXAxe(extChart); // if(xAxe == null){ // logger.warn("No category axe is defined: customize category axis in order to choose the category field"); // throw new SavingEditorException("No category axe is defined: customize category axis in order to choose the category field"); // } if(xAxe != null){ String field = xAxe.getFields(); logger.debug("xField is "+field); Vector<Series> series = extChart.getSeriesList().getSeries(); for (Iterator iterator = series.iterator(); iterator.hasNext();) { Series series2 = (Series) iterator.next(); series2.setxField(field); } } else{ logger.debug("No X axe defined for chart"); } logger.debug("OUT"); } }