Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 13th, 2012  |  syntax: None  |  size: 5.97 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package com.necam.eadd.jira.plugin.report.magicchart;
  2.  
  3. import java.awt.BasicStroke;
  4. import java.awt.Color;
  5.  
  6. import org.apache.log4j.Level;
  7. import org.apache.log4j.Logger;
  8.  
  9. import org.jfree.chart.JFreeChart;
  10. import org.jfree.chart.axis.AxisLocation;
  11. import org.jfree.chart.axis.DateAxis;
  12. import org.jfree.chart.axis.NumberAxis;
  13. import org.jfree.chart.plot.XYPlot;
  14. import org.jfree.chart.renderer.xy.StackedXYBarRenderer;
  15. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
  16. import org.jfree.data.time.Day;
  17. import org.jfree.data.time.TimeTableXYDataset;
  18. import org.jfree.ui.RectangleEdge;
  19.  
  20. public class MagicChartJFreeChart {
  21.  
  22.     private static final Logger log = Logger.getLogger(MagicChartJFreeChart.class);
  23.  
  24.     public MagicChartJFreeChart() {
  25.         log.setLevel(Level.ALL);
  26.     }
  27.    
  28.         public JFreeChart getMagicChart(final MagicChartModel model, final String label) {
  29.  
  30.                 final TimeTableXYDataset retestData = new TimeTableXYDataset();
  31.                 final TimeTableXYDataset closedData = new TimeTableXYDataset();
  32.                 final TimeTableXYDataset testActualData = new TimeTableXYDataset();
  33.                 final TimeTableXYDataset testPlanData = new TimeTableXYDataset();
  34.                 final TimeTableXYDataset openData = new TimeTableXYDataset();
  35.  
  36.         log.debug(String.format("Today: %1%tc", model.getToday()));
  37.  
  38.                 for (final MagicChartModel.Daily daily : model.getDaily()) {
  39.                         final Day day = new Day(daily.getDate());
  40.                         openData.add(day, daily.getOpenP1(), "Open(E/P1)");
  41.                         openData.add(day, daily.getOpenP2(), "Open(P2)");
  42.                         openData.add(day, daily.getOpenP3(), "Open(P3)");
  43.                         openData.add(day, daily.getOpenP4(), "Open(P4)");
  44.                        
  45.                         closedData.add(day, daily.getTestsPassed(), "Tests Passed");
  46.             log.debug(String.format("Current %1$tc vs. today = %2$d", daily.getDate(), daily.getDate().compareTo(model.getToday())));
  47.            
  48.             if (daily.getDate().compareTo(model.getToday()) <= 0) {
  49.                 testPlanData.add(day, daily.getTargetTestsRun(), "Target Test Cases");
  50.                 testActualData.add(day, 0, "");
  51.                 retestData.add(day, 0, "");
  52.             }
  53.                 }
  54.                
  55.                 return getMagicChart(retestData, closedData, testActualData, testPlanData, openData, label);
  56.         }
  57.  
  58.         private JFreeChart getMagicChart(final TimeTableXYDataset retestData, final TimeTableXYDataset closedData,
  59.                         final TimeTableXYDataset testActualData, final TimeTableXYDataset testPlanData,
  60.                         final TimeTableXYDataset openData, final String label) {
  61.                
  62.                 // Graph
  63.                 final XYPlot plot = new XYPlot();
  64.                 final DateAxis dateAxis  = new DateAxis("Date");
  65.                 final NumberAxis valueAxis1 = new NumberAxis();
  66.                 final NumberAxis valueAxis2 = new NumberAxis();
  67.                 final BasicStroke dashedStroke =
  68.                         new BasicStroke(2.0f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 0.0f, new float[] {7.0f, 2.0f}, 0.0f );
  69.                 final BasicStroke normalStroke = new BasicStroke(2.0f);
  70.  
  71.                 plot.setBackgroundAlpha(0.0f);
  72.                 plot.setBackgroundImageAlpha(0.0f);
  73.                 plot.setBackgroundPaint(new Color(255, 255, 255, 0));
  74.                 plot.setDomainAxis(dateAxis);
  75.                 plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
  76.  
  77.                 plot.setRangeAxis(0, valueAxis1);
  78.                 plot.setRangeAxisLocation(0, AxisLocation.TOP_OR_RIGHT);
  79.  
  80.                 plot.setRangeAxis(1, valueAxis2);
  81.                 plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);
  82.  
  83.                 int dataIndex = 0;
  84.                
  85. /*
  86.                 // Data: RETEST
  87.                 final XYLineAndShapeRenderer retestRenderer = new XYLineAndShapeRenderer();
  88.                 retestRenderer.setSeriesPaint(0, new Color(0, 143, 0));
  89.                 retestRenderer.setSeriesStroke(0, dashedStroke);
  90.                 retestRenderer.setSeriesShapesVisible(0, false);
  91.                 plot.setDataset(dataIndex, retestData);
  92.                 plot.setRenderer(dataIndex, retestRenderer);
  93.                 plot.mapDatasetToRangeAxis(dataIndex, 0);
  94.                 plot.mapDatasetToDomainAxis(dataIndex, 0);
  95.                
  96.                 dataIndex++;
  97. */
  98.                
  99.                 // Data: CLOSED
  100.                 final XYLineAndShapeRenderer closedRenderer = new XYLineAndShapeRenderer();
  101.                 plot.setDataset(dataIndex, closedData);
  102.                 plot.setRenderer(dataIndex, closedRenderer);
  103.                 closedRenderer.setSeriesPaint(0, Color.BLUE);
  104.                 closedRenderer.setSeriesStroke(0, dashedStroke);
  105.                 closedRenderer.setSeriesShapesVisible(0, false);
  106.                 plot.mapDatasetToRangeAxis(dataIndex, 1);
  107.                 plot.mapDatasetToDomainAxis(dataIndex, 0);
  108.                
  109.                 dataIndex++;
  110.  
  111.  
  112.                 // Data: TEST PLAN
  113.                 final XYLineAndShapeRenderer testPlanRenderer = new XYLineAndShapeRenderer();
  114.                 testPlanRenderer.setSeriesPaint(0, Color.YELLOW);
  115.                 testPlanRenderer.setSeriesShapesVisible(0, false);
  116.                 testPlanRenderer.setSeriesStroke(0, normalStroke);
  117.                 plot.setDataset(dataIndex, testPlanData);
  118.                 plot.setRenderer(dataIndex, testPlanRenderer);
  119.                 plot.mapDatasetToRangeAxis(dataIndex, 1);
  120.                 plot.mapDatasetToDomainAxis(dataIndex, 0);
  121.                
  122.                 dataIndex++;
  123.  
  124. /*
  125.                 // Data: TEST ACTUAL
  126.                 final XYLineAndShapeRenderer testActualRenderer = new XYLineAndShapeRenderer();
  127.                 testActualRenderer.setSeriesPaint(0, Color.RED);
  128.                 testActualRenderer.setSeriesShapesVisible(0, false);
  129.                 testActualRenderer.setSeriesStroke(0, normalStroke);
  130.                 plot.setDataset(dataIndex, testActualData);
  131.                 plot.setRenderer(dataIndex, testActualRenderer);
  132.                 plot.mapDatasetToRangeAxis(dataIndex, 1);
  133.                 plot.mapDatasetToDomainAxis(dataIndex, 0);
  134.                
  135.                 dataIndex++;
  136. */
  137.                 // Data: OPEN
  138.                 final StackedXYBarRenderer openRenderer = new StackedXYBarRenderer();
  139.                 plot.setDataset(dataIndex, openData);
  140.                 plot.setRenderer(dataIndex, openRenderer);
  141.                 openRenderer.setMargin(0.0);
  142.                 openRenderer.setSeriesPaint(0, new Color(172, 64, 64));
  143.                 openRenderer.setSeriesPaint(1, new Color(172, 172, 64));
  144.                 openRenderer.setSeriesPaint(2, new Color(64, 64, 172));
  145.                 openRenderer.setSeriesPaint(3, new Color(64, 172, 64));
  146.                 openRenderer.setBaseOutlinePaint(Color.GRAY);
  147.                 openRenderer.setDrawBarOutline(true);
  148.                 plot.mapDatasetToRangeAxis(dataIndex, 0);
  149.                 plot.mapDatasetToDomainAxis(dataIndex, 0);
  150.  
  151.                 dataIndex++;
  152.                
  153.                 // Create the chart
  154.                 final JFreeChart chart = new JFreeChart(label, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
  155.                 chart.getLegend().setPosition(RectangleEdge.RIGHT);
  156.                 chart.setBackgroundImageAlpha(0.0f);
  157.                 chart.setBackgroundPaint(new Color(255, 255, 255, 0));
  158.  
  159.                 return chart;
  160.         }
  161.  
  162. }