Package it.eng.spagobi.engines.kpi.bo.charttypes.trendcharts

Source Code of it.eng.spagobi.engines.kpi.bo.charttypes.trendcharts.LineChart

package it.eng.spagobi.engines.kpi.bo.charttypes.trendcharts;

import it.eng.spago.base.SourceBean;
import it.eng.spago.base.SourceBeanAttribute;
import it.eng.spagobi.commons.utilities.messages.IMessageBuilder;
import it.eng.spagobi.commons.utilities.messages.MessageBuilderFactory;
import it.eng.spagobi.engines.chart.bo.charttypes.utils.MyStandardCategoryItemLabelGenerator;
import it.eng.spagobi.engines.chart.utils.DatasetMap;
import it.eng.spagobi.engines.kpi.bo.ChartImpl;

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 org.apache.log4j.Logger;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.VerticalAlignment;

public class LineChart extends ChartImpl{
 
  private static transient Logger logger=Logger.getLogger(LineChart.class);
  HashMap categories;
  int categoriesNumber=0;
  DatasetMap datasetMap;
  String res = "";
 
  public LineChart() {
    super();
    datasetMap=new DatasetMap();
    categories=new HashMap();
  }
 
  public DatasetMap calculateValue(String result) throws Exception {

    logger.debug("IN");
    res = result;
    categories=new HashMap();
    datasetMap=new DatasetMap();

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

    // run all categories (one for each row)
    categoriesNumber=0;

    datasetMap.getDatasets().put("line", new DefaultCategoryDataset());

    boolean first=true;

    for (Iterator iterator = listAtts.iterator(); iterator.hasNext();) {
      SourceBean category = (SourceBean) iterator.next();
      List atts=category.getContainedAttributes();

      HashMap series=new LinkedHashMap();
      HashMap additionalValues=new LinkedHashMap();
      String catValue="";

      String nameP="";
      String value="";

      //run all the attributes, to define series!
      int numColumn = 0;
      if (!atts.isEmpty()){
        for (Iterator iterator2 = atts.iterator(); iterator2.hasNext();) {
          numColumn ++;
          SourceBeanAttribute object = (SourceBeanAttribute) iterator2.next();
 
          nameP=new String(object.getKey());
          value=new String((String)object.getValue());
          logger.debug("Name:"+nameP);
          logger.debug("Value:"+value);
          if(nameP.equalsIgnoreCase("x"))
          {
            catValue=value;
            catValue = catValue.substring(0, 16);
            categoriesNumber=categoriesNumber+1;
            categories.put(new Integer(categoriesNumber),value);
 
          }
          else {
                series.put(nameP, value);
            }
        }
      }

      String nameS = "KPI_VALUE";
      IMessageBuilder msgBuilder = MessageBuilderFactory.getMessageBuilder();
      String labelS = msgBuilder.getMessage("sbi.kpi.labels");
      String valueS=(String)series.get(nameS);
      if (valueS!=null){
      ((DefaultCategoryDataset)(datasetMap.getDatasets().get("line"))).addValue(Double.valueOf(valueS).doubleValue(), labelS, catValue);
      }
    }
    logger.debug("OUT");
    return datasetMap;
  }
 
 
  public JFreeChart createChart(){
   
    logger.debug("IN");
    CategoryPlot plot = new CategoryPlot();
    IMessageBuilder msgBuilder = MessageBuilderFactory.getMessageBuilder();
    String rangeAxisName = msgBuilder.getMessage("sbi.kpi.rangeAxisName");
    NumberAxis rangeAxis = new NumberAxis(rangeAxisName);
    rangeAxis.setLabelFont(new Font("Arial", Font.PLAIN, 12 ));
    Color colorLabel= Color.decode("#000000");
    rangeAxis.setLabelPaint(colorLabel);
    rangeAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10 ));
    rangeAxis.setTickLabelPaint(colorLabel);
    plot.setRangeAxis(rangeAxis);
   
    CategoryAxis domainAxis = new CategoryAxis();
    domainAxis.setLabelFont(new Font("Arial", Font.PLAIN, 10 ));
        domainAxis.setLabelPaint(colorLabel);
        domainAxis.setTickLabelFont(new Font("Arial", Font.PLAIN, 10 ));
        domainAxis.setTickLabelPaint(colorLabel);
    plot.setDomainAxis(domainAxis);

    plot.setOrientation(PlotOrientation.VERTICAL);
    plot.setRangeGridlinesVisible(true);
    plot.setDomainGridlinesVisible(true);


    //I create a line renderer
    MyStandardCategoryItemLabelGenerator generator=null;

      LineAndShapeRenderer lineRenderer = new LineAndShapeRenderer();
      lineRenderer.setShapesFilled(true);
      lineRenderer.setBaseItemLabelGenerator(generator);
      lineRenderer.setBaseItemLabelFont(new Font("Arial", Font.PLAIN, 12 ));
      lineRenderer.setBaseItemLabelPaint(colorLabel);
      lineRenderer.setBaseItemLabelsVisible(true);

      DefaultCategoryDataset datasetLine=(DefaultCategoryDataset)datasetMap.getDatasets().get("line");

        for (Iterator iterator = datasetLine.getRowKeys().iterator(); iterator.hasNext();) {
          String serName = (String) iterator.next();
          String labelName = "";
          int index=-1;
          index=datasetLine.getRowIndex(serName);
         
          Color color=Color.decode("#990200");
          lineRenderer.setSeriesPaint(index, color)
        }

      plot.setDataset(0,datasetLine);
      plot.setRenderer(0,lineRenderer);

    plot.getDomainAxis().setCategoryLabelPositions(
        CategoryLabelPositions.UP_45);
    JFreeChart chart = new JFreeChart(plot);
    logger.debug("Chart created");
    TextTitle title=new TextTitle(name,new Font("Arial", Font.BOLD, 16 ),Color.decode("#990200"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS);
    chart.setTitle(title);
    TextTitle subTitle =new TextTitle(subName,new Font("Arial", Font.PLAIN, 12 ),Color.decode("#000000"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS);
    chart.addSubtitle(subTitle);
    TextTitle subTitle2 =new TextTitle(subName,new Font("Arial", Font.PLAIN, 8 ),Color.decode("#FFFFFF"), RectangleEdge.TOP, HorizontalAlignment.CENTER, VerticalAlignment.TOP, RectangleInsets.ZERO_INSETS);
    chart.addSubtitle(subTitle2);
    chart.removeLegend();
   
    chart.setBackgroundPaint(Color.white);
    logger.debug("OUT");
    return chart;
  }

}
TOP

Related Classes of it.eng.spagobi.engines.kpi.bo.charttypes.trendcharts.LineChart

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.