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

Source Code of it.eng.spagobi.engines.chart.bo.charttypes.XYCharts.XYCharts

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

import it.eng.spago.base.SourceBean;
import it.eng.spago.base.SourceBeanAttribute;
import it.eng.spagobi.engines.chart.bo.ChartImpl;
import it.eng.spagobi.engines.chart.bo.charttypes.barcharts.BarCharts;
import it.eng.spagobi.engines.chart.utils.DataSetAccessFunctions;
import it.eng.spagobi.engines.chart.utils.DatasetMap;
import it.eng.spagobi.engines.chart.utils.StyleLabel;

import java.awt.Color;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.DefaultXYZDataset;

/**
* @author chiarelli
*/
public class XYCharts extends ChartImpl{


  String xrangeMin="";
  String xrangeMax="";
  String yrangeMin="";
  String yrangeMax="";
  String xLabel="";
  String yLabel="";
  String zLabel="";
  String blockW ="";
  String blockH = "";
  String outboundColor = "";
 
 
  String zrangeMin=""
  String zrangeMax=""
  String[] legendLabels =null;
  String[] yLabels =null;
  double[] zvalues = null;
  String colours = "";
  String add_labels = "false";
 
  Map confParameters;
  HashMap colorRangeMap=new HashMap()// keeps user selected colors// serie position - color

  private static transient Logger logger=Logger.getLogger(BarCharts.class);
  StyleLabel addLabelsStyle;

  /**
   * Inherited by IChart: calculates chart value.
   *
   * @return the dataset
   *
   * @throws Exception the exception
   */

  public DatasetMap calculateValue() throws Exception {
    logger.debug("IN");
   
   
   
    String res=DataSetAccessFunctions.getDataSetResultFromId(profile, getData(),parametersObject);

    // XYZDataset dataset = createDataset();
    int xMaxValue = (new Integer(xrangeMax)).intValue();
    int xMinValue = (new Integer(xrangeMin)).intValue();
    int yMaxValue = (new Integer(yrangeMax)).intValue();
    int yMinValue = (new Integer(yrangeMin)).intValue();
    int blockWidth =(new Integer(blockW)).intValue();
    int blockHeight =  (new Integer(blockH)).intValue();
 

    SourceBean sbRows=SourceBean.fromXMLString(res);
    List listAtts=sbRows.getAttributeAsList("ROW");

    DefaultXYZDataset dataset = new DefaultXYZDataset();
    int rangex = (xMaxValue-xMinValue)/blockWidth;
    int rangey = (yMaxValue-yMinValue)/blockHeight;
   
    double[] xvalues = new double[rangey * rangex];
        double[] yvalues = new double[rangey * rangex];       
        double[] zvalues = new double[rangey * rangex];
       
       
        double[][] data = new double[][] {xvalues, yvalues, zvalues};
       
        int xVal = 0;
        int yVal = 0;
    int col = 0;
    int row = 0;
    int cell = 0;
    double zVal = 0;
   
    boolean first=true;
   
   
      for (int r = yMinValue/blockHeight; r < rangey; r++)  {
      for (int c = xMinValue/blockWidth; c < rangex; c ++) {
             
              cell = c+r+(r*(rangex-1));
              data[0][cell] = (new Double(((c+1)*blockWidth)).doubleValue())-(new Double(blockWidth).doubleValue()/2);
          data[1][cell] = (new Double(((r+1)*blockHeight)).doubleValue())-(new Double(blockHeight).doubleValue()/2);
          data[2][cell] = (new Double(zrangeMax)).doubleValue()*2;
            }
        }
   
    for (Iterator iterator = listAtts.iterator(); iterator.hasNext();) {
      SourceBean category = (SourceBean) iterator.next();
      List atts=category.getContainedAttributes();

      String nameP="";
      String value="";
     
     
      for (Iterator iterator2 = atts.iterator(); iterator2.hasNext();) {
        SourceBeanAttribute object = (SourceBeanAttribute) iterator2.next();

        nameP=new String(object.getKey());
        value=new String((String)object.getValue());
        if(nameP.equalsIgnoreCase("x"))
        {           
            xVal = new Double(value).intValue()
            col = (xVal/blockWidth)-1;
        }
        if(nameP.equalsIgnoreCase("y"))
        {
              yVal = new Double(value).intValue()
              row = (yVal/blockHeight)-1;
        }
        if(nameP.equalsIgnoreCase("z"))
        {
            zVal = new Double(value).doubleValue();       
        }         
        
       
        }
      cell=col+row+(row*(rangex-1));
      if((rangex*rangey)> cell){
        data[0][cell] = xVal-(new Double(blockWidth).doubleValue()/2);
        data[1][cell] = yVal-(new Double(blockHeight).doubleValue()/2);
        data[2][cell] = zVal;       
          // setValueInData(data, xMaxValue , yMinValue, xVal, yVal, zVal);
      }
     
      }
     
        dataset.addSeries("Series 1", data);
       
        //XYZDataset dataset = createDataset();
       
    DatasetMap datasets=new DatasetMap();
    datasets.addDataset("1",dataset);
    logger.debug("OUT");
    return datasets;
  }

    /**
     * Utility method called by createDataset().
     *
     * @param data  the data array.
     * @param c  the column.
     * @param r  the row.
     * @param value  the value.
     */
    private static void setValueInData(double[][] data, int xMaxValue, int yStartValue, int c, int r, double value) {
       
        data[0][(r - yStartValue) * xMaxValue + c] = c;
        data[1][(r - yStartValue) * xMaxValue + c] = r;
        data[2][(r - yStartValue) * xMaxValue + c] = value;
       
    }
 

  public void configureChart(SourceBean content) {
    logger.debug("IN");
    super.configureChart(content);
    confParameters = new HashMap();
    SourceBean confSB = (SourceBean)content.getAttribute("CONF");
    SourceBean zrange = (SourceBean)content.getAttribute("ZRANGES");
    if(zrange==null){
      zrange =(SourceBean)content.getAttributeAsList("CONF.ZRANGES");
    }
    SourceBean yrange = (SourceBean)content.getAttribute("YRANGES");
    if(yrange==null){
      yrange =(SourceBean)content.getAttributeAsList("CONF.YRANGES");
    }
   
    if(confSB==null) return;
    List confAttrsList = confSB.getAttributeAsList("PARAMETER");

    Iterator confAttrsIter = confAttrsList.iterator();
    while(confAttrsIter.hasNext()) {
      SourceBean param = (SourceBean)confAttrsIter.next();
      String nameParam = (String)param.getAttribute("name");
      if (nameParam.equals("grid")){
        blockW = (String)param.getAttribute("width");
        blockH = (String)param.getAttribute("height");
      }
      String valueParam = (String)param.getAttribute("value");
      confParameters.put(nameParam, valueParam);
   
   
    if(confSB==null) return;
    List confAttrsList2 = content.getAttributeAsList("PARAMETER");

    Iterator confAttrsIter2 = confAttrsList2.iterator();
    while(confAttrsIter2.hasNext()) {
      SourceBean param = (SourceBean)confAttrsIter2.next();
      String nameParam = (String)param.getAttribute("name");
     
      if (nameParam.equals("xrange")){
        xrangeMin = (String)param.getAttribute("value_low");
        xrangeMax = (String)param.getAttribute("value_high");
      }else if (nameParam.equals("yrange")){
        yrangeMin = (String)param.getAttribute("value_low");
        yrangeMax = (String)param.getAttribute("value_high");
      }
     
      String valueParam = (String)param.getAttribute("value");
      confParameters.put(nameParam, valueParam);
   
   
    if(yrange!=null) {   
      List ranges = yrange.getAttributeAsList("RANGE");
      int rangesNum = ranges.size();
      yLabels= new String[rangesNum+1];
      yLabels[0]="";
      Iterator rangesIter = ranges.iterator();
     
      int j = 0;
      while(rangesIter.hasNext()) {
        SourceBean range = (SourceBean)rangesIter.next();
        String nameParam = (String)range.getAttribute("label");       
        String label = "";
        if(nameParam!=null){
          label = nameParam;
        }
        yLabels[j+1]=label;
        j++;       
     
    }
   
    if(zrange==null) return;   
    List ranges = zrange.getAttributeAsList("RANGE");
    int rangesNum = ranges.size();
    legendLabels= new String[rangesNum];
    legendLabels[0]="";
    zvalues = new double[rangesNum-1];
    Iterator rangesIter = ranges.iterator();
   
    int j = 0;
    while(rangesIter.hasNext()) {
      SourceBean range = (SourceBean)rangesIter.next();
      String nameParam = (String)range.getAttribute("label");
      String colour = "";
      String label = "";
      label = nameParam;
     
     
      colour = (String)range.getAttribute("colour");
      Color col=new Color(Integer.decode(colour).intValue());
     
     
      if (!nameParam.equals("outbound")){
        String low = (String)range.getAttribute("value_low");
        double lowz = new Double(low).doubleValue();
        String high = (String)range.getAttribute("value_high");
        double highz = new Double(high).doubleValue();
        String low_high = low+","+high;
        legendLabels[j+1]=label;
        colorRangeMap.put(new Double( highz-((highz-lowz))),col);
        zvalues[j]=highz-((highz-lowz));
      }else if (nameParam.equals("outbound")){
        String val = (String)range.getAttribute("value");
        zrangeMax = val;
        outboundColor = "#FFFFFF";
      }
      j++;
     
   
   
   

    /*if(confParameters.get("add_labels")!=null){ 
      add_labels=(String)confParameters.get("add_labels");
    }
    else
    {
      add_labels = "false";
    }*/

    if(confParameters.get("x_label")!=null){ 
      xLabel=(String)confParameters.get("x_label");
    }
    else
    {
      xLabel="X";
    }
    if(confParameters.get("y_label")!=null){ 
      yLabel=(String)confParameters.get("y_label");
    }
    else
    {
      yLabel="Y";
    }
    if(confParameters.get("z_label")!=null){ 
      zLabel=(String)confParameters.get("z_label");
    }
    else
    {
      zLabel="Z";
    }


    // check if there is some info about additional labels style

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

      String fontS = (String)content.getAttribute("STYLE_LABELS.font");
      String sizeS = (String)content.getAttribute("STYLE_LABELS.size");
      String colorS = (String)content.getAttribute("STYLE_LABELS.color");
      String orientationS = (String)content.getAttribute("STYLE_LABELS.orientation");


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

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

    }

    logger.debug("OUT");
  }



  /**
   * Gets the conf parameters.
   *
   * @return the conf parameters
   */
  public Map getConfParameters() {
    return confParameters;
  }

  /**
   * Sets the conf parameters.
   *
   * @param confParameters the new conf parameters
   */
  public void setConfParameters(Map confParameters) {
    this.confParameters = confParameters;
  }

  /* (non-Javadoc)
   * @see it.eng.spagobi.engines.chart.bo.ChartImpl#createChart(java.lang.String, org.jfree.data.general.Dataset)
   */
  public JFreeChart createChart(DatasetMap dataset) {
    // TODO Auto-generated method stub
    return super.createChart(dataset);
  }

}
TOP

Related Classes of it.eng.spagobi.engines.chart.bo.charttypes.XYCharts.XYCharts

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.