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

Source Code of it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.BulletGraph

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


import it.eng.spago.base.SourceBean;
import it.eng.spagobi.engines.chart.bo.charttypes.utils.KpiInterval;
import it.eng.spagobi.engines.chart.utils.DatasetMap;

import java.awt.BasicStroke;
import java.awt.Color;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

import org.apache.log4j.Logger;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ValueMarker;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.Range;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import org.jfree.data.general.ValueDataset;
import org.jfree.ui.Layer;
import org.jfree.ui.RectangleInsets;

public class BulletGraph  extends DialCharts{
  private static transient Logger logger=Logger.getLogger(BulletGraph.class);
  Vector intervals;
  Double target;
 
  // Parameters

 
  public BulletGraph() {
    super();
    intervals=new Vector();
  }
 
  public void configureChart(SourceBean content) {
    logger.debug("IN");
    super.configureChart(content);
       
    String target=(String)confParameters.get("target");
    if (target!=null)this.target = new Double(target);

    SourceBean confSB = (SourceBean)content.getAttribute("INTERVALS");
    if(confSB==null){
      confSB = (SourceBean)content.getAttribute("CONF.INTERVALS");
    }
    List confAttrsList = confSB.getAttributeAsList(INTERVAL);
    if (!confAttrsList.isEmpty()){
      Iterator it = confAttrsList.iterator();
      while(it.hasNext()){
        SourceBean param = (SourceBean)it.next();
        KpiInterval interval=new KpiInterval();
        String min=(String)param.getAttribute(MIN_INTERVAL);
        String max=(String)param.getAttribute(MAX_INTERVAL);
        String col=(String)param.getAttribute(COLOR_INTERVAL);
        interval.setMin(Double.valueOf(min).doubleValue());
        interval.setMax(Double.valueOf(max).doubleValue());
        Color color=new Color(Integer.decode(col).intValue());
        interval.setColor(color);
        this.intervals.add(interval);
      }
    }     
    logger.debug("OUT");
  }
 
 
  public JFreeChart createChart(DatasetMap datasets) {
   
    logger.debug("IN");
    Dataset dataset=(Dataset)datasets.getDatasets().get("1");
    ValueDataset valDataSet = (ValueDataset)dataset;
   
    Number value = valDataSet.getValue();
   
    DefaultCategoryDataset datasetC = new DefaultCategoryDataset();
          datasetC.addValue(value, "", "");
   
     // customize a bar chart
        JFreeChart chart = ChartFactory.createBarChart(
                null,
                null,
                null,
                datasetC,
                PlotOrientation.HORIZONTAL,
                false,
                false,
                false);
        chart.setBorderVisible(false);
       
        chart.setBackgroundPaint(color);
   
    TextTitle title = setStyleTitle(name, styleTitle);
    chart.setTitle(title);
    if(subName!= null && !subName.equals("")){
      TextTitle subTitle =setStyleTitle(subName, styleSubTitle);
      chart.addSubtitle(subTitle);
    }

        CategoryPlot plot = chart.getCategoryPlot();
        plot.setOutlineVisible(true);
        plot.setOutlinePaint(Color.BLACK);
        plot.setInsets(new RectangleInsets(0.0, 0.0, 0.0, 0.0));
        plot.setBackgroundPaint(null);
        plot.setDomainGridlinesVisible(false);
        plot.setRangeGridlinesVisible(false);
        plot.setRangeCrosshairVisible(false);
        plot.setAnchorValue(value.doubleValue());
       
       
     // add the target marker
        if(target != null) {
          ValueMarker marker = new ValueMarker( target.doubleValue(), Color.BLACK, new BasicStroke(2.0f));          
          plot.addRangeMarker(marker, Layer.FOREGROUND);
        }
       
        //sets different marks
        for (Iterator iterator = intervals.iterator(); iterator.hasNext();) {
      KpiInterval interval = (KpiInterval) iterator.next();
      // add the marks
            IntervalMarker marker = new IntervalMarker(interval.getMin(), interval.getMax(), interval.getColor());
            plot.addRangeMarker(marker, Layer.BACKGROUND);
      logger.debug("Added new interval to the plot");
    }
       
        // customize axes
        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setVisible(false);

        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setVisible(true);
        // calculate the upper limit
        //double upperBound = target * upperFactor;
        rangeAxis.setRange(new Range(lower, upper));
        plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);

        // customize renderer
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setMaximumBarWidth(0.18);
        renderer.setSeriesPaint(0, Color.BLACK);
       
        return chart;
  }
}
TOP

Related Classes of it.eng.spagobi.engines.chart.bo.charttypes.dialcharts.BulletGraph

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.