com.insa.tp3g1.esbsimulator.view.OverlaidBarChart.java Source code

Java tutorial

Introduction

Here is the source code for com.insa.tp3g1.esbsimulator.view.OverlaidBarChart.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.insa.tp3g1.esbsimulator.view;

/**
 *
 * @author alpha
 */

import com.insa.tp3g1.esbsimulator.model.result.LinkConsumerProvider;
import com.insa.tp3g1.esbsimulator.model.result.ResponseTime;
import com.insa.tp3g1.esbsimulator.model.result.Result;
import com.insa.tp3g1.esbsimulator.model.result.TotalResult;
import org.jfree.chart.ChartPanel;
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.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A simple demonstration application showing how to create a bar chart overlaid
 * with a line chart.
 */
public class OverlaidBarChart extends ApplicationFrame {
    private final String min = "minResponseTime";
    private final String max = "maxResponseTime";
    private final String average = "averageResponseTime";
    private final String link = "Cons/Prov_N";

    /**
     * Default constructor.
     *
     * @param title  the frame title.
     * @param result
     */
    public OverlaidBarChart(final String title, Result result) {

        super(title);

        // create the first dataset...
        DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
        LinkConsumerProvider[] linkConsProv = result.getLinksConsumerProvider();
        for (LinkConsumerProvider linkConsProv1 : linkConsProv) {
            dataset1.addValue(Integer.parseInt(linkConsProv1.getAverageResponseTime()), average,
                    link + linkConsProv1.getConsumerId());
        }

        // create the first renderer...
        //      final CategoryLabelGenerator generator = new StandardCategoryLabelGenerator();
        final CategoryItemRenderer renderer = new BarRenderer();
        //    renderer.setLabelGenerator(generator);
        renderer.setItemLabelsVisible(true);

        final CategoryPlot plot = new CategoryPlot();
        plot.setDataset(dataset1);
        plot.setRenderer(renderer);

        plot.setDomainAxis(new CategoryAxis("Category"));
        plot.setRangeAxis(new NumberAxis("Value (ms)"));

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

        // now create the second dataset and renderer...
        DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();

        for (LinkConsumerProvider linkConsProv1 : linkConsProv) {
            dataset2.addValue(Integer.parseInt(result.getTotalResult().getResponseTime().getMinResponseTime()), min,
                    link + linkConsProv1.getConsumerId());
        }

        final CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
        plot.setDataset(1, dataset2);
        plot.setRenderer(1, renderer2);

        // create the third dataset and renderer... 
        final ValueAxis rangeAxis2 = new NumberAxis("value (ms)");
        plot.setRangeAxis(1, rangeAxis2);

        DefaultCategoryDataset dataset3 = new DefaultCategoryDataset();

        for (LinkConsumerProvider linkConsProv1 : linkConsProv) {
            dataset3.addValue(Integer.parseInt(result.getTotalResult().getResponseTime().getMaxResponseTime()), max,
                    link + linkConsProv1.getConsumerId());
        }

        plot.setDataset(2, dataset3);
        final CategoryItemRenderer renderer3 = new LineAndShapeRenderer();
        plot.setRenderer(2, renderer3);
        plot.mapDatasetToRangeAxis(2, 1);
        // change the rendering order so the primary dataset appears "behind" the 
        // other datasets...
        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

        plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45);
        final JFreeChart chart = new JFreeChart(plot);
        chart.setTitle("Response Time Chart");
        //  chart.setLegend(new StandardLegend());

        // add the chart to a panel...
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }

    /**
     * Starting point for the demonstration application.
     *
     * @param args  ignored.
     */
    public static void main(final String[] args) {
        ResponseTime responseTime = new ResponseTime("sec", "10", "6");
        TotalResult totalResult = new TotalResult("8", "10", responseTime);

        LinkConsumerProvider lcp1 = new LinkConsumerProvider("10", "1", "1");
        LinkConsumerProvider lcp2 = new LinkConsumerProvider("30", "2", "2");
        LinkConsumerProvider lcp3 = new LinkConsumerProvider("45", "3", "3");
        LinkConsumerProvider lcp4 = new LinkConsumerProvider("25", "4", "4");
        LinkConsumerProvider lcp5 = new LinkConsumerProvider("20", "5", "5");
        LinkConsumerProvider linkConsProv[] = { lcp1, lcp2, lcp3, lcp4, lcp5 };

        Result result = new Result(totalResult, linkConsProv);
        final OverlaidBarChart demo = new OverlaidBarChart("Response Time Chart", result);
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}