Package it.eng.spagobi.engines.chart.bo

Source Code of it.eng.spagobi.engines.chart.bo.ChartImpl

/**

SpagoBI - The Business Intelligence Free Platform

Copyright (C) 2005-2008 Engineering Ingegneria Informatica S.p.A.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

**/

package it.eng.spagobi.engines.chart.bo;

import it.eng.spago.base.SourceBean;
import it.eng.spago.base.SourceBeanAttribute;
import it.eng.spago.security.IEngUserProfile;
import it.eng.spagobi.commons.constants.SpagoBIConstants;
import it.eng.spagobi.commons.utilities.messages.IMessageBuilder;
import it.eng.spagobi.commons.utilities.messages.MessageBuilderFactory;
import it.eng.spagobi.engines.chart.bo.charttypes.XYCharts.BlockChart;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.CombinedCategoryBar;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.LinkableBar;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.OverlaidBarLine;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.OverlaidStackedBarLine;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.SimpleBar;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.StackedBar;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.StackedBarGroup;
import it.eng.spagobi.engines.chart.bo.charttypes.blockcharts.TimeBlockChart;
import it.eng.spagobi.engines.chart.bo.charttypes.boxcharts.SimpleBox;
import it.eng.spagobi.engines.chart.bo.charttypes.clusterchart.SimpleCluster;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.BulletGraph;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.Meter;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.SBISpeedometer;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.SimpleDial;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.SpeedometerMultiValue;
import it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.Thermometer;
import it.eng.spagobi.engines.chart.bo.charttypes.piecharts.LinkablePie;
import it.eng.spagobi.engines.chart.bo.charttypes.piecharts.SimplePie;
import it.eng.spagobi.engines.chart.bo.charttypes.scattercharts.MarkerScatter;
import it.eng.spagobi.engines.chart.bo.charttypes.scattercharts.SimpleScatter;
import it.eng.spagobi.engines.chart.bo.charttypes.targetcharts.SparkLine;
import it.eng.spagobi.engines.chart.bo.charttypes.targetcharts.WinLose;
import it.eng.spagobi.engines.chart.utils.DatasetMap;
import it.eng.spagobi.engines.chart.utils.StyleLabel;

import java.awt.Color;
import java.awt.Font;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;

import org.apache.log4j.Logger;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.block.BlockContainer;
import org.jfree.chart.block.BorderArrangement;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.Dataset;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.VerticalAlignment;


/**   @author Giulio Gavardi
*     giulio.gavardi@eng.it
*/


public class ChartImpl implements IChart {
 
  private static transient Logger logger=Logger.getLogger(ChartImpl.class);
  protected int titleDimension;
  protected String name=null;
  protected String subName=null;
  protected int width;
  protected int height;
  protected String data;
  protected String confDataset;
  protected boolean isLovConfDefined;
  protected IEngUserProfile profile;
  protected String type="";
  protected String subtype="";
  protected Color color;
  protected boolean legend=true;
  protected String legendPosition="bottom";
  protected Map parametersObject;
 
  protected boolean filter=true;
  protected boolean slider=true;
  protected boolean sliderStartFromEnd=false;
  protected String positionSlider;
  protected StyleLabel styleTitle;
  protected StyleLabel styleSubTitle;
  protected StyleLabel defaultLabelsStyle;
  protected StyleLabel styleLegend; 
  protected HashMap seriesLabelsMap = null;
 
  protected boolean multichart=false;
  protected String orientationMultichart="";

  protected Locale locale=Locale.ITALIAN;
 
  // REGISTER CHART TYPES and SUB TYPES
 
  public static final String DIAL_CHART = "DIALCHART";
  public static final String speedometer = "speedometer";
  public static final String speedometerMultiValue = "speedometerMultiValue";
  public static final String simpledial = "simpledial";
  public static final String thermomether = "thermomether";
  public static final String meter = "meter";
  public static final String bullet = "bullet";

  public static final String PIECHART = "PIECHART";
  public static final String simplepie = "simplepie";
  public static final String linkablepie = "linkablepie";
 
  public static final String BARCHART = "BARCHART";
  public static final String simplebar = "simplebar";
  public static final String linkablebar = "linkablebar";
  public static final String overlaid_barline = "overlaid_barline";
  public static final String stacked_bar = "stacked_bar";
  public static final String stacked_bar_group = "stacked_bar_group";
  public static final String overlaid_stacked_barline= "overlaid_stacked_barline";
  public static final String combined_category_bar= "combined_category_bar";

  public static final String BOXCHART = "BOXCHART";
  public static final String simplebox = "simplebox";
 
  public static final String CLUSTERCHART = "CLUSTERCHART";
  public static final String simplecluster = "simplecluster";

  public static final String XYCHART = "XYCHART";
  public static final String blockchart = "blockchart";

  public static final String SCATTERCHART = "SCATTERCHART";
  public static final String simplescatter = "simplescatter";
  public static final String markerscatter = "markerscatter";

  public static final String TARGETCHART = "TARGETCHART";
  public static final String sparkline = "spark_line";
  public static final String winlose = "win_lose";

  public static final String BLOCKCHART = "BLOCKCHART";
  public static final String simpletimeblock = "simpletimeblock";

 
 
// Register Parameters
  /** Nameof the chart., can be parametrized */
  public static final String NAME = "name";
  /** tag for style title */
  public static final String STYLE_TITLE = "STYLE_TITLE";
  /** tag for style subTitle */
  public static final String STYLE_SUBTITLE = "STYLE_SUBTITLE";
  /** tag for style default labels */
  public static final String STYLE_LABELS_DEFAULT = "STYLE_LABELS_DEFAULT";
  /** parameters for style tags */
  public static final String NAME_STYLE = "name";
  public static final String FONT_STYLE = "font";
  public static final String SIZE_STYLE = "size";
  public static final String COLOR_STYLE = "color";
  public static final String ORIENTATION_STYLE = "orientation";
  /** title dimension */
  public static final String TITLE_DIMENSION = "title_dimension";
    /** title dimension */
  public static final String COLORS_BACKGROUND = "COLORS.background";
  /** dimensions of chart */
  public static final String DIMENSION_WIDTH = "DIMENSION.width";
  public static final String DIMENSION_HEIGHT = "DIMENSION.height";
  /** dataset for configuration */
  public static final String  CONF_DATASET = "confdataset";

  /** Parameter in the tag CONF*/
/**  TAG CONF */
  public static final String CONF = "CONF";
  /** if true draw legend */
  public static final String LEGEND = "legend";
  /** legend position; bottom, top, left, right*/
  public static final String LEGEND_POSITION = "legend_position";
  /** legend style; font, sizem color*/
  public static final String LEGEND_STYLE = "STYLE_LEGEND";
  /** if true view filter*/
  public static final String VIEW_FILTER = "view_filter";
  /** if true view slider*/
  public static final String VIEW_SLIDER = "view_slider";
  /** if true the slider starts from last n categories*/
  public static final String SLIDER_START_FROM_END = "slider_start_from_end";
  /** top or bottom, where to put slider*/
  public static final String POSITION_SLIDER = "position_slider";

  // Outside of CONF
  /** Labels for series, should be put outside CONF*/
  public static final String SERIES_LABELS = "SERIES_LABELS";
 
 
  /**
   * configureChart reads the content of the template and sets the chart parameters.
   *
   * @param content the content
   */
  public void configureChart(SourceBean content) {
    logger.debug("IN");
    // common part for all charts
    //setting the title with parameter values if is necessary
    if(content.getAttribute(NAME)!=null) {
      String titleChart = (String)content.getAttribute(NAME);
      String tmpTitle = titleChart;
      while (!tmpTitle.equals("")){
        if (tmpTitle.indexOf("$P{") >= 0){
          String parName = tmpTitle.substring(tmpTitle.indexOf("$P{")+3, tmpTitle.indexOf("}"));
         
          String parValue = (parametersObject.get(parName)==null)?"":(String)parametersObject.get(parName);
          parValue = parValue.replaceAll("\'", "");
         
          if(parValue.equals("%")) parValue = "";
          int pos = tmpTitle.indexOf("$P{"+parName+"}") + (parName.length()+4);
          titleChart = titleChart.replace("$P{" + parName + "}", parValue);
          tmpTitle = tmpTitle.substring(pos);
        }
        else
          tmpTitle = "";
      }
      setName(titleChart);
    }
    else setName("");

    SourceBean styleTitleSB = (SourceBean)content.getAttribute(STYLE_TITLE);
    if(styleTitleSB!=null){

      String fontS = (String)styleTitleSB.getAttribute(FONT_STYLE);
      String sizeS = (String)styleTitleSB.getAttribute(SIZE_STYLE);
      String colorS = (String)styleTitleSB.getAttribute(COLOR_STYLE);


      try{
        Color color=Color.decode(colorS);
        int size=Integer.valueOf(sizeS).intValue();
        styleTitle=new StyleLabel(fontS,size,color);
       
      }
      catch (Exception e) {
        logger.error("Wrong style Title settings, use default");
      }

    }
   
    SourceBean styleSubTitleSB = (SourceBean)content.getAttribute(STYLE_SUBTITLE);
    if(styleSubTitleSB!=null){

      String subTitle = (String)styleSubTitleSB.getAttribute(NAME_STYLE);
      if(subTitle!=null) {
        String tmpSubTitle = subTitle;
        while (!tmpSubTitle.equals("")){
          if (tmpSubTitle.indexOf("$P{") >= 0){
            String parName = tmpSubTitle.substring(tmpSubTitle.indexOf("$P{")+3, tmpSubTitle.indexOf("}"));
            String parValue = (parametersObject.get(parName)==null)?"":(String)parametersObject.get(parName);
            parValue = parValue.replaceAll("\'", "");
            if(parValue.equals("%")) parValue = "";
            int pos = tmpSubTitle.indexOf("$P{"+parName+"}") + (parName.length()+4);
            subTitle = subTitle.replace("$P{" + parName + "}", parValue);
            tmpSubTitle = tmpSubTitle.substring(pos);
          }
          else
            tmpSubTitle = "";
        }
        setSubName(subTitle);
      }
      else setSubName("");
     
      String fontS = (String)styleSubTitleSB.getAttribute(FONT_STYLE);
      String sizeS = (String)styleSubTitleSB.getAttribute(SIZE_STYLE);
      String colorS = (String)styleSubTitleSB.getAttribute(COLOR_STYLE);


      try{
        Color color=Color.decode(colorS);
        int size=Integer.valueOf(sizeS).intValue();
        styleSubTitle=new StyleLabel(fontS,size,color);       
      }
      catch (Exception e) {
        logger.error("Wrong style SubTitle settings, use default");
      }

    }

    SourceBean styleLabelsSB = (SourceBean)content.getAttribute(STYLE_LABELS_DEFAULT);
    if(styleLabelsSB!=null){

      String fontS = (String)styleLabelsSB.getAttribute(FONT_STYLE);
      if(fontS==null){
        fontS = "Arial";
      }
      String sizeS = (String)styleLabelsSB.getAttribute(SIZE_STYLE);
      if(sizeS==null){
        sizeS = "12";
      }
      String colorS = (String)styleLabelsSB.getAttribute(COLOR_STYLE);
      if(colorS==null){
        colorS = "#000000";
      }
      String orientationS = (String)styleLabelsSB.getAttribute(ORIENTATION_STYLE);
      if(orientationS==null){
        orientationS = "horizontal";
      }

      try{
        Color color=Color.decode(colorS);
        int size=Integer.valueOf(sizeS).intValue();
        defaultLabelsStyle=new StyleLabel(fontS,size,color,orientationS);

      }
      catch (Exception e) {
        logger.error("Wrong style labels settings, use default");
      }

    }else{
      defaultLabelsStyle=new StyleLabel("Arial", 12,Color.BLACK);
    }

    if(content.getAttribute("title_dimension")!=null)
    {
      String titleD=((String)content.getAttribute(TITLE_DIMENSION));
      titleDimension=Integer.valueOf(titleD).intValue();
    }
    else setTitleDimension(18);


    String colS = (String)content.getAttribute(COLORS_BACKGROUND);
    if(colS!=null)
    {
      Color col=new Color(Integer.decode(colS).intValue());
      if(col!=null){
        setColor(col);}
      else{
        setColor(Color.white);
      }
    }
    else {  
      setColor(Color.white);
    }

    String widthS = (String)content.getAttribute(DIMENSION_WIDTH);
    String heightS = (String)content.getAttribute(DIMENSION_HEIGHT);
    if(widthS==null || heightS==null){
      logger.warn("Width or height non defined, use default ones");
      widthS="400";
      heightS="300";
    }

    width=Integer.valueOf(widthS).intValue();
    height=Integer.valueOf(heightS).intValue();

    // get all the data parameters


    try{         
      Map dataParameters = new HashMap();
      SourceBean dataSB = (SourceBean)content.getAttribute(CONF);
      List dataAttrsList = dataSB.getContainedSourceBeanAttributes();
      Iterator dataAttrsIter = dataAttrsList.iterator();
      while(dataAttrsIter.hasNext()) {
        SourceBeanAttribute paramSBA = (SourceBeanAttribute)dataAttrsIter.next();
        SourceBean param = (SourceBean)paramSBA.getValue();
        String nameParam = (String)param.getAttribute("name");
        String valueParam = (String)param.getAttribute("value");
        dataParameters.put(nameParam, valueParam);
      }


      if(dataParameters.get(CONF_DATASET)!=null && !(((String)dataParameters.get(CONF_DATASET)).equalsIgnoreCase("") )){ 
        confDataset=(String)dataParameters.get(CONF_DATASET);
        isLovConfDefined=true;
      }
      else {
        isLovConfDefined=false;
      }

      legend=true;
      if(dataParameters.get(LEGEND)!=null && !(((String)dataParameters.get(LEGEND)).equalsIgnoreCase("") )){ 
        String leg=(String)dataParameters.get(LEGEND);
        if(leg.equalsIgnoreCase("false"))
          legend=false;
      }

      legendPosition="bottom";
      if(dataParameters.get(LEGEND_POSITION)!=null && !(((String)dataParameters.get(LEGEND_POSITION)).equalsIgnoreCase("") )){ 
        String leg=(String)dataParameters.get(LEGEND_POSITION);
        if(leg.equalsIgnoreCase("bottom") || leg.equalsIgnoreCase("left") || leg.equalsIgnoreCase("right") || leg.equalsIgnoreCase("top"))
          legendPosition=leg;
      }
     
      filter=true;
      if(dataParameters.get(VIEW_FILTER)!=null && !(((String)dataParameters.get(VIEW_FILTER)).equalsIgnoreCase("") )){ 
        String fil=(String)dataParameters.get(VIEW_FILTER);
        if(fil.equalsIgnoreCase("false"))
          filter=false;
      }

      slider=true;
      if(dataParameters.get(VIEW_SLIDER)!=null && !(((String)dataParameters.get(VIEW_SLIDER)).equalsIgnoreCase("") )){ 
        String sli=(String)dataParameters.get(VIEW_SLIDER);
        if(sli.equalsIgnoreCase("false"))
          slider=false;
      }

      sliderStartFromEnd=false;
      if(dataParameters.get(SLIDER_START_FROM_END)!=null && !(((String)dataParameters.get(SLIDER_START_FROM_END)).equalsIgnoreCase("") )){ 
        String sli=(String)dataParameters.get(SLIDER_START_FROM_END);
        if(sli.equalsIgnoreCase("true"))
          sliderStartFromEnd=true;
      }
     
      positionSlider="top";
      if(dataParameters.get(POSITION_SLIDER)!=null && !(((String)dataParameters.get(POSITION_SLIDER)).equalsIgnoreCase("") )){ 
        positionSlider=(String)dataParameters.get(POSITION_SLIDER);
      }
     
      //reading series orders if present
      SourceBean sbSerieLabels = (SourceBean)content.getAttribute(SERIES_LABELS);
      // back compatibility
      if(sbSerieLabels==null){
        sbSerieLabels = (SourceBean)content.getAttribute("CONF.SERIES_LABELS");
      }
      if(sbSerieLabels!=null){
        seriesLabelsMap=new LinkedHashMap();
        List atts=sbSerieLabels.getContainedAttributes();
        String serieLabel="";
        for (Iterator iterator = atts.iterator(); iterator.hasNext();) {
          SourceBeanAttribute object = (SourceBeanAttribute) iterator.next();
          String serieName=(String)object.getKey();
          serieLabel=new String((String)object.getValue());
          if(serieLabel!=null){
            seriesLabelsMap.put(serieName, serieLabel);
          }
        }   
      }
     
      SourceBean styleLegendSB = (SourceBean)content.getAttribute(LEGEND_STYLE);
      if(styleLegendSB!=null){

        String fontS = (String)styleLegendSB.getAttribute(FONT_STYLE);
        String sizeS = (String)styleLegendSB.getAttribute(SIZE_STYLE);
        String colorS = (String)styleLegendSB.getAttribute(COLOR_STYLE);


        try{
          Color color=Color.decode(colorS);
          int size=Integer.valueOf(sizeS).intValue();
          styleLegend=new StyleLabel(fontS,size,color);
         
        }
        catch (Exception e) {
          logger.error("Wrong style Legend settings, use default");
        }
      }
     
     
    }
    catch (Exception e) {
      logger.error(e.getCause()+" "+e.getStackTrace());
      logger.error("many error in reading data source parameters",e);
    }


  }

  /**
   * This function creates the chart object.
   *
   * @param chartTitle the chart title
   * @param dataset the dataset
   *
   * @return the j free chart
   */

  public JFreeChart createChart(DatasetMap dataset) {
    return null;
  }

  /**
   * This function creates the object of the right subtype as specified by type and subtype parameters found in template.
   *
   * @param type the type
   * @param subtype the subtype
   *
   * @return the chart impl
   */

  public static ChartImpl createChart(String type,String subtype){
    ChartImpl sbi=null;
    if(type.equals(DIAL_CHART)){
      if(subtype.equalsIgnoreCase(speedometer)){
        sbi=new SBISpeedometer();
      }
      if(subtype.equalsIgnoreCase(speedometerMultiValue)){
        sbi=new SpeedometerMultiValue();
      }
      else if(subtype.equalsIgnoreCase(simpledial)){
        sbi= new SimpleDial();
      }
      else if(subtype.equalsIgnoreCase(thermomether)){
        sbi= new Thermometer();
      }
      else if(subtype.equalsIgnoreCase(meter)){
        sbi= new Meter();
      }
      else if(subtype.equalsIgnoreCase(bullet)){
        sbi= new BulletGraph();
      }
    }
    else if(type.equals(PIECHART)){
      if(subtype.equalsIgnoreCase(simplepie)){
        sbi=new SimplePie();
      }
      if(subtype.equalsIgnoreCase(linkablepie)){
        sbi=new LinkablePie();
      }     
    }

    else if(type.equals(BARCHART)){
      if(subtype.equalsIgnoreCase(simplebar)){
        sbi=new SimpleBar();
      }
      else if(subtype.equalsIgnoreCase(linkablebar)){
        sbi=new LinkableBar();
      }
      else if(subtype.equalsIgnoreCase(overlaid_barline)){
        sbi=new OverlaidBarLine();
      }   
      else if(subtype.equalsIgnoreCase(stacked_bar)){
        sbi=new StackedBar();
      }   
      else if(subtype.equalsIgnoreCase(stacked_bar_group)){
        sbi=new StackedBarGroup();
     
      else if(subtype.equalsIgnoreCase(overlaid_stacked_barline)){
        sbi=new OverlaidStackedBarLine();
      }
      else if(subtype.equalsIgnoreCase(combined_category_bar)){
        sbi=new CombinedCategoryBar();
     
    }

    else if(type.equals(BOXCHART)){
      if(subtype.equalsIgnoreCase(simplebox)){
        sbi=new SimpleBox();
      }
    }

    else if(type.equals(CLUSTERCHART)){
      if(subtype.equalsIgnoreCase(simplecluster)){
        sbi=new SimpleCluster();
      }
    }
   
    else if(type.equals(XYCHART)){
      if(subtype.equalsIgnoreCase(blockchart)){
        sbi=new BlockChart();
      }
    }
   
    else if(type.equals(SCATTERCHART)){
      if(subtype.equalsIgnoreCase(simplescatter)){
        sbi=new SimpleScatter();
      }
      if(subtype.equalsIgnoreCase(markerscatter)){
        sbi=new MarkerScatter();
      }
    }
    else if(type.equals(TARGETCHART)){
      if(subtype.equalsIgnoreCase(sparkline)){
        sbi=new SparkLine();
      }
      if(subtype.equalsIgnoreCase(winlose)){
        sbi=new WinLose();
      }
    } 
    else if(type.equals(BLOCKCHART)){
      if(subtype.equalsIgnoreCase(simpletimeblock)){
        sbi=new TimeBlockChart();
      }
    }     

    return sbi;
  }




  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getData()
   */
  public String getData() {
    return data;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getHeight()
   */
  public int getHeight() {
    return height;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getName()
   */
  public String getName() {
    return name;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getWidth()
   */
  public int getWidth() {
    return width;

  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setData(java.lang.String)
   */
  public void setData(String _data) {
    data=_data;   
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setHeight(int)
   */
  public void setHeight(int _height) {
    height=_height;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setName(java.lang.String)
   */
  public void setName(String _name) {
    name=_name;   
  }
 
  public void setSubName(String _name) {
    subName=_name;   
  }

  /**
   * @return the subName
   */
  public String getSubName() {
    return subName;
  }
 
  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setWidth(int)
   */
  public void setWidth(int _width) {
    width=_width;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#calculateValue()
   */
  public DatasetMap calculateValue() throws Exception {
    return null;
  }

  /**
   * Gets the conf dataset.
   *
   * @return the conf dataset
   */
  public String getConfDataset() {
    return confDataset;
  }

  /**
   * Sets the conf dataset.
   *
   * @param confDataset the new conf dataset
   */
  public void setConfDataset(String confDataset) {
    this.confDataset = confDataset;
  }

  /**
   * Gets the profile.
   *
   * @return the profile
   */
  public IEngUserProfile getProfile() {
    return profile;
  }

  /**
   * Sets the profile.
   *
   * @param profile the new profile
   */
  public void setProfile(IEngUserProfile profile) {
    this.profile = profile;
  }

  /**
   * Checks if is lov conf defined.
   *
   * @return true, if is lov conf defined
   */
  public boolean isLovConfDefined() {
    return isLovConfDefined;
  }

  /**
   * Sets the lov conf defined.
   *
   * @param isLovConfDefined the new lov conf defined
   */
  public void setLovConfDefined(boolean isLovConfDefined) {
    this.isLovConfDefined = isLovConfDefined;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#isLinkable()
   */
  public boolean isLinkable() {
    return false;
  }

  /**
   * Gets the type.
   *
   * @return the type
   */
  public String getType() {
    return type;
  }

  /**
   * Sets the type.
   *
   * @param type the new type
   */
  public void setType(String type) {
    this.type = type;
  }

  /**
   * Gets the subtype.
   *
   * @return the subtype
   */
  public String getSubtype() {
    return subtype;
  }

  /**
   * Sets the subtype.
   *
   * @param subtype the new subtype
   */
  public void setSubtype(String subtype) {
    this.subtype = subtype;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#isChangeableView()
   */
  public boolean isChangeableView() {
    return false;
  }

  /**
   * Gets the change view label.
   *
   * @param theme the theme
   * @param i the i
   *
   * @return the change view label
   */
  public String getChangeViewLabel(String theme, int i) {
    return "";
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setChangeViewChecked(boolean)
   */
  public void setChangeViewChecked(boolean b) {
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getPossibleChangePars()
   */
  public List getPossibleChangePars() {
    return new Vector();
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setChangeViewsParameter(java.lang.String, boolean)
   */
  public void setChangeViewsParameter(String changePar, boolean how) {


  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getChangeViewParameter(java.lang.String)
   */
  public boolean getChangeViewParameter(String changePar) {
    return false;   
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getChangeViewParameterLabel(java.lang.String, int)
   */
  public String getChangeViewParameterLabel(String changePar, int i) {
    return null;
  }

  /**
   * Gets the color.
   *
   * @return the color
   */
  public Color getColor() {
    return color;
  }

  /**
   * Sets the color.
   *
   * @param color the new color
   */
  public void setColor(Color color) {
    this.color = color;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#filterDataset(org.jfree.data.general.Dataset, java.util.HashMap, int, int)
   */
  public Dataset filterDataset(Dataset dataset, HashMap categories, int catSelected, int numberCatsVisualization) {

    return null;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#isLegend()
   */
  public boolean isLegend() {
    return legend;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setLegend(boolean)
   */
  public void setLegend(boolean legend) {
    this.legend = legend;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#getParametersObject()
   */ 
  public Map getParametersObject() {
    return parametersObject;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.IChart#setParametersObject(java.util.Map)
   */
  public void setParametersObject(Map parametersObject) {
    this.parametersObject = parametersObject;
  }



  public boolean isFilter() {
    return filter;
  }

  public void setFilter(boolean filter) {
    this.filter = filter;
  }

  public boolean isSlider() {
    return slider;
  }

  /**
   * @return the positionSlider
   */
  public String getPositionSlider() {
    return positionSlider;
  }

  /**
   * @param positionSlider the positionSlider to set
   */
  public void setPositionSlider(String positionSlider) {
    this.positionSlider = positionSlider;
  }

  public void setSlider(boolean slider) {
    this.slider = slider;
  }


  public void setTitleParameter(List atts) {
    try{
      String tmpTitle=new String(name);
      if (tmpTitle.indexOf("$F{") >= 0){
        String parName = tmpTitle.substring(tmpTitle.indexOf("$F{")+3, tmpTitle.indexOf("}"));
        logger.debug("parName: " + parName);
        for (Iterator iterator2 = atts.iterator(); iterator2.hasNext();) {
          SourceBeanAttribute object = (SourceBeanAttribute) iterator2.next();

          String nameP=new String(object.getKey());
          String value=new String((String)object.getValue());
          logger.debug("nameP: " + nameP + " - value: "+ value);
          if(nameP.equalsIgnoreCase(parName))
          {
            int pos = tmpTitle.indexOf("$F{"+parName+"}") + (parName.length()+4);
            name = name.replace("$F{" + parName + "}", value);
            tmpTitle = tmpTitle.substring(pos);
          }
        }

      }
    }
    catch (Exception e) {
      logger.error("Error in parameters Title:", e);
    }

  }
 
  public void setSubTitleParameter(List atts) {
    try{
      String tmpTitle=new String(getSubName());
      if (tmpTitle != null && tmpTitle.indexOf("$F{") >= 0){
        String parName = tmpTitle.substring(tmpTitle.indexOf("$F{")+3, tmpTitle.indexOf("}"));

        for (Iterator iterator2 = atts.iterator(); iterator2.hasNext();) {
          SourceBeanAttribute object = (SourceBeanAttribute) iterator2.next();

          String nameP=new String(object.getKey());
          String value=(object.getValue()==null)?" ":new String((String)object.getValue());
          if (nameP.equalsIgnoreCase(parName))
          {
            int pos = tmpTitle.indexOf("$F{"+parName+"}") + (parName.length()+4);
            setSubName(getSubName().replace("$F{" + parName + "}", value));
            tmpTitle = tmpTitle.substring(pos);
          }
        }

      }
    }
    catch (Exception e) {
      logger.error("Error in parameters SubTitle");
    }
  }
 
  public void setSubTitleParameter(String attValue) {
    try{
      String tmpTitle=new String(getSubName());
      if (tmpTitle != null && tmpTitle.indexOf("$F{") >= 0){
        String parName = tmpTitle.substring(tmpTitle.indexOf("$F{")+3, tmpTitle.indexOf("}"));
        int pos = tmpTitle.indexOf("$F{"+parName+"}") + (parName.length()+4);
        setSubName(getSubName().replace("$F{" + parName + "}", attValue));
        tmpTitle = tmpTitle.substring(pos);
      }
    }
    catch (Exception e) {
      logger.error("Error in parameters SubTitle");
    }
  }
 
  public void setTitleParameter(String attValue) {
    try{
      String tmpTitle=new String(getName());
      if (tmpTitle != null && tmpTitle.indexOf("$F{") >= 0){
        String parName = tmpTitle.substring(tmpTitle.indexOf("$F{")+3, tmpTitle.indexOf("}"));
        int pos = tmpTitle.indexOf("$F{"+parName+"}") + (parName.length()+4);
        setSubName(getName().replace("$F{" + parName + "}", attValue));
        tmpTitle = tmpTitle.substring(pos);
      }
    }
    catch (Exception e) {
      logger.error("Error in parameters Title");
    }
  }

 

  public TextTitle setStyleTitle(String title,StyleLabel titleLabel){
    Font font=null;
    Color color=null;


    boolean definedFont=true;
    boolean definedColor=true;

    if(titleLabel!=null ){
      if(titleLabel.getFont()!=null){
        font=titleLabel.getFont();
      }
      else{
        definedFont=false;
      }
      if(titleLabel.getColor()!=null){
        color=titleLabel.getColor();
      }
      else{
        definedColor=false;
      }
    }
    else{
      definedColor=false;
      definedFont=false;
    }

    if(!definedFont)
      font=new Font("Tahoma", Font.BOLD, 18);
    if(!definedColor)
      color=Color.BLACK;

    TextTitle titleText=new TextTitle(title,font,color, RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS);

    return titleText;
  }
 

  public int getTitleDimension() {
    return titleDimension;
  }

  public void setTitleDimension(int titleDimension) {
    this.titleDimension = titleDimension;
  }

  public HashMap getSeriesLabels() {
    return seriesLabelsMap;
  }

  public void setSeriesLabels(HashMap seriesLabels) {
    this.seriesLabelsMap = seriesLabels;
  }

  public String getLegendPosition() {
    return legendPosition;
  }

  public void setLegendPosition(String legendPosition) {
    this.legendPosition = legendPosition;
  }
 
  /**
   * @return the multichart
   */
  public boolean getMultichart() {
    return multichart;
  }

  /**
   * @param multichart the multichart to set
   */
  public void setMultichart(boolean multichart) {
    this.multichart = multichart;
  }

  /**
   * @return the orientationMultichart
   */
  public String getOrientationMultichart() {
    return orientationMultichart;
  }

  /**
   * @param orientationMultichart the orientationMultichart to set
   */
  public void setOrientationMultichart(String orientationMultichart) {
    this.orientationMultichart = orientationMultichart;
  }


  public void drawLegend(JFreeChart chart){
    //remove ipotetical other legend
    chart.removeLegend();
    BlockContainer wrapper = new BlockContainer(new BorderArrangement());
    wrapper.setFrame(new BlockBorder(1.0, 1.0, 1.0, 1.0));

    /*LabelBlock titleBlock = new LabelBlock("Legend Items:",
        new Font("SansSerif", Font.BOLD, 12));
    titleBlock.setPadding(5, 5, 5, 5);
    wrapper.add(titleBlock, RectangleEdge.TOP);*/

    LegendTitle legend = new LegendTitle(chart.getPlot());
    BlockContainer items = legend.getItemContainer();
    if(styleLegend!=null && styleLegend.getFont()!=null){
      legend.setItemFont(new Font(styleLegend.getFontName(), Font.BOLD, styleLegend.getSize()));
    }
   
    items.setPadding(2, 5, 5, 2);
    wrapper.add(items);
    legend.setWrapper(wrapper);

    if(legendPosition.equalsIgnoreCase("bottom")) legend.setPosition(RectangleEdge.BOTTOM);
    else if(legendPosition.equalsIgnoreCase("left")) legend.setPosition(RectangleEdge.LEFT);
    else if(legendPosition.equalsIgnoreCase("right")) legend.setPosition(RectangleEdge.RIGHT);
    else if(legendPosition.equalsIgnoreCase("top")) legend.setPosition(RectangleEdge.TOP);
    else legend.setPosition(RectangleEdge.BOTTOM);
   
    legend.setHorizontalAlignment(HorizontalAlignment.CENTER);
    chart.addSubtitle(legend);
   
    }

  public void setLocalizedTitle() {
    if(name!=null){
    IMessageBuilder msgBuilder = MessageBuilderFactory.getMessageBuilder();
    String toSet=msgBuilder.getUserMessage(name, SpagoBIConstants.DEFAULT_USER_BUNDLE, locale);
    setName(toSet);
    }
    return;
  }

  public boolean isSliderStartFromEnd() {
    return sliderStartFromEnd;
  }

  public void setSliderStartFromEnd(boolean sliderStartFromEnd) {
    this.sliderStartFromEnd = sliderStartFromEnd;
  }

  public Locale getLocale() {
    return locale;
  }

  public void setLocale(Locale locale) {
    this.locale = locale;
  }
 
 
 
 
 

}
TOP

Related Classes of it.eng.spagobi.engines.chart.bo.ChartImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.