Example usage for org.jfree.data.gantt TaskSeries TaskSeries

List of usage examples for org.jfree.data.gantt TaskSeries TaskSeries

Introduction

In this page you can find the example usage for org.jfree.data.gantt TaskSeries TaskSeries.

Prototype

public TaskSeries(String name) 

Source Link

Document

Constructs a new series with the specified name.

Usage

From source file:pisco.batch.visu.BatchingChartFactory.java

public static XYDataset createLatenessDataset(Batch[] batches) {
    final TaskSeriesCollection coll = new TaskSeriesCollection();
    for (int i = 0; i < batches.length; i++) {
        TaskSeries series = new TaskSeries(String.valueOf(i));
        final int dd = batches[i].getDueDate();
        final int compl = batches[i].getCompletionTime();
        TimePeriod p = dd < compl ? new SimpleTimePeriod(dd, compl) : new SimpleTimePeriod(compl, dd);
        series.add(new Task("B" + i, p));
        coll.add(series);/*from ww w .  jav  a  2  s.  c om*/
    }
    final XYTaskDataset dataset = new XYTaskDataset(coll);
    dataset.setTransposed(true);
    return dataset;

}

From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java

private static XYTaskDataset getDrugDataSet(String demographic, String[] dins) {

    TaskSeriesCollection datasetDrug = new TaskSeriesCollection();
    oscar.oscarRx.data.RxPrescriptionData prescriptData = new oscar.oscarRx.data.RxPrescriptionData();

    for (String din : dins) {
        oscar.oscarRx.data.RxPrescriptionData.Prescription[] arr = prescriptData
                .getPrescriptionScriptsByPatientRegionalIdentifier(Integer.parseInt(demographic), din);
        TaskSeries ts = new TaskSeries(arr[0].getBrandName());
        for (oscar.oscarRx.data.RxPrescriptionData.Prescription pres : arr) {
            ts.add(new Task(pres.getBrandName(), pres.getRxDate(), pres.getEndDate()));
        }/*from  w ww . j av  a2s . c o m*/
        datasetDrug.add(ts);
    }

    XYTaskDataset dataset = new XYTaskDataset(datasetDrug);
    dataset.setTransposed(true);
    dataset.setSeriesWidth(0.6);
    return dataset;
}

From source file:com.opendoorlogistics.components.gantt.GanttChartComponent.java

@Override
public void execute(final ComponentExecutionApi api, int mode, Object configuration,
        ODLDatastore<? extends ODLTable> ioDs, ODLDatastoreAlterable<? extends ODLTableAlterable> outputDs) {
    // Get items and sort by resource then date
    final StringConventions sc = api.getApi().stringConventions();
    List<GanttItem> items = GanttItem.beanMapping.getTableMapping(0).readObjectsFromTable(ioDs.getTableAt(0));

    // Rounding doubles to longs can create small errors where a start time is 1 millisecond after an end.
    // Set all start times to be <= end time
    for (GanttItem item : items) {
        if (item.getStart() == null || item.getEnd() == null) {
            throw new RuntimeException("Found Gannt item with null start or end time.");
        }/*from   w  w w. jav  a 2  s. c  om*/

        if (item.getStart().getValue() > item.getEnd().getValue()) {
            item.setStart(item.getEnd());
        }
    }

    Collections.sort(items, new Comparator<GanttItem>() {

        @Override
        public int compare(GanttItem o1, GanttItem o2) {
            int diff = sc.compareStandardised(o1.getResourceId(), o2.getResourceId());
            if (diff == 0) {
                diff = o1.getStart().compareTo(o2.getStart());
            }
            if (diff == 0) {
                diff = o1.getEnd().compareTo(o2.getEnd());
            }
            if (diff == 0) {
                diff = sc.compareStandardised(o1.getActivityId(), o2.getActivityId());
            }
            if (diff == 0) {
                diff = Colours.compare(o1.getColor(), o2.getColor());
            }
            return diff;
        }
    });

    // Filter any zero duration items
    Iterator<GanttItem> it = items.iterator();
    while (it.hasNext()) {
        GanttItem item = it.next();
        if (item.getStart().compareTo(item.getEnd()) == 0) {
            it.remove();
        }
    }

    // Get average colour for each activity type
    Map<String, CalculateAverageColour> calcColourMap = api.getApi().stringConventions()
            .createStandardisedMap();
    for (GanttItem item : items) {
        CalculateAverageColour calc = calcColourMap.get(item.getActivityId());
        if (calc == null) {
            calc = new CalculateAverageColour();
            calcColourMap.put(item.getActivityId(), calc);
        }
        calc.add(item.getColor());
    }

    // Put into colour map
    Map<String, Color> colourMap = api.getApi().stringConventions().createStandardisedMap();
    for (Map.Entry<String, CalculateAverageColour> entry : calcColourMap.entrySet()) {
        colourMap.put(entry.getKey(), entry.getValue().getAverage());
    }

    // Split items by resource
    ArrayList<ArrayList<GanttItem>> splitByResource = new ArrayList<>();
    ArrayList<GanttItem> current = null;
    for (GanttItem item : items) {
        if (current == null
                || sc.compareStandardised(current.get(0).getResourceId(), item.getResourceId()) != 0) {
            current = new ArrayList<>();
            splitByResource.add(current);
        }
        current.add(item);
    }

    // put into jfreechart's task data structure
    TaskSeries ts = new TaskSeries("Resources");
    for (ArrayList<GanttItem> resource : splitByResource) {
        // get earliest and latest time (last time may not be in the last item)
        ODLTime earliest = resource.get(0).getStart();
        ODLTime latest = null;
        for (GanttItem item : resource) {
            if (latest == null || latest.compareTo(item.getEnd()) < 0) {
                latest = item.getEnd();
            }
        }

        Task task = new Task(resource.get(0).getResourceId(), new Date(earliest.getTotalMilliseconds()),
                new Date(latest.getTotalMilliseconds()));

        // add all items as subtasks
        for (GanttItem item : resource) {
            task.addSubtask(new MySubtask(item, new Date(item.getStart().getTotalMilliseconds()),
                    new Date(item.getEnd().getTotalMilliseconds())));
        }

        ts.add(task);
    }
    TaskSeriesCollection collection = new TaskSeriesCollection();
    collection.add(ts);

    // Create the plot
    CategoryAxis categoryAxis = new CategoryAxis(null);
    DateAxis dateAxis = new DateAxis("Time");
    CategoryItemRenderer renderer = new MyRenderer(collection, colourMap);
    final CategoryPlot plot = new CategoryPlot(collection, categoryAxis, dateAxis, renderer);
    plot.setOrientation(PlotOrientation.HORIZONTAL);
    plot.getDomainAxis().setLabel(null);

    ((DateAxis) plot.getRangeAxis()).setDateFormatOverride(new DateFormat() {

        @Override
        public Date parse(String source, ParsePosition pos) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
            toAppendTo.append(new ODLTime(date.getTime()).toString());
            return toAppendTo;
        }
    });

    // Create the chart and apply the standard theme without shadows to it
    api.submitControlLauncher(new ControlLauncherCallback() {

        @Override
        public void launchControls(ComponentControlLauncherApi launcherApi) {
            JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            StandardChartTheme theme = new StandardChartTheme("standard theme", false);
            theme.setBarPainter(new StandardBarPainter());
            theme.apply(chart);

            class MyPanel extends ChartPanel implements Disposable {

                public MyPanel(JFreeChart chart) {
                    super(chart);
                }

                @Override
                public void dispose() {
                    // TODO Auto-generated method stub

                }

            }
            MyPanel chartPanel = new MyPanel(chart);
            launcherApi.registerPanel("Resource Gantt", null, chartPanel, true);
        }
    });

}

From source file:de.fhbingen.wbs.wpOverview.tabs.APCalendarPanel.java

/**
 * Convert work packages to tasks.//from  www .jav  a 2s . co m
 * @param userWp
 *            list with work packages.
 * @return IntervalCategoryDataset: tasks of the work packages.
 */
public final IntervalCategoryDataset createDataset(final List<Workpackage> userWp) {

    final TaskSeries s1 = new TaskSeries(LocalizedStrings.getGeneralStrings().overview());
    colorList = new ArrayList<Integer>();
    for (Workpackage actualPackage : userWp) {
        if (actualPackage.getEndDateCalc() != null && actualPackage.getStartDateCalc() != null) {
            if (actualPackage.getlastRelevantIndex() <= showLevels) {

                Date endDateCalc = null;
                Date start = null;

                endDateCalc = actualPackage.getEndDateCalc();
                start = actualPackage.getStartDateCalc();

                String indent = "";

                for (int i = 0; i < actualPackage.getlastRelevantIndex(); i++) {
                    indent += "   ";
                }
                if (!endDateCalc.before(start)) {
                    Task t = new Task(indent + actualPackage.toString(),
                            new SimpleTimePeriod(start, endDateCalc));
                    t.setPercentComplete(0.01 * WpManager.calcPercentComplete(actualPackage.getBac(),
                            actualPackage.getEtc(), actualPackage.getAc()));
                    s1.add(t);
                    colorList.add(actualPackage.getlastRelevantIndex());
                }

            }
        }
    }

    final TaskSeriesCollection collection = new TaskSeriesCollection();
    collection.add(s1);

    return collection;
}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * A check for a null task duration./*from  ww w.ja  va2 s.c  o m*/
 */
@Test
public void testGetStartValue3() {
    TaskSeriesCollection c = new TaskSeriesCollection();
    TaskSeries s = new TaskSeries("Series 1");
    s.add(new Task("Task with null duration", null));
    c.add(s);
    Number millis = c.getStartValue("Series 1", "Task with null duration");
    assertTrue(millis == null);
}

From source file:de.fhbingen.wbs.wpOverview.tabs.AvailabilityGraph.java

/**
 * Creates a data set.//from   www  .  j  a  va2s. com
 * @return The created data set
 */
public final IntervalCategoryDataset createDataset() {

    if (WPOverview.getUser().getProjLeiter()) {
        workers = WorkerService.getRealWorkers();
    } else {
        workers = new ArrayList<Worker>();
        Worker user = WPOverview.getUser();
        workers.add(new Worker(user.getLogin(), user.getVorname(), user.getName(), 1, 100));
    }

    gui.pnlGraph.setMinimumDrawHeight(100 + 50 * workers.size() + 1);
    gui.pnlGraph.setMaximumDrawHeight(100 + 50 * workers.size() + 1);
    gui.pnlGraph.setPreferredSize(
            new Dimension((int) gui.pnlGraph.getPreferredSize().getWidth(), 100 + 50 * workers.size() + 1));

    final TaskSeries stdTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().availability());
    final TaskSeries manualTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().available());
    final TaskSeries notTasks = new TaskSeries(LocalizedStrings.getGeneralStrings().notAvailable());

    TreeSet<Availability> projectAvailability = CalendarService
            .getRealProjectAvailability(actualStart.getTime(), actualEnd.getTime());

    stdTasks.add(createProjectTask(projectAvailability));

    if (showManualAv) {
        notTasks.add(createProjectTask(CalendarService.getProjectAvailability(false)));
        manualTasks.add(createProjectTask(CalendarService.getProjectAvailability(true)));
    }
    for (Worker worker : workers) {

        stdTasks.add(createWorkerTask(worker, CalendarService.getRealWorkerAvailability(worker.getId(),
                actualStart.getTime(), actualEnd.getTime())));
        if (showManualAv) {
            notTasks.add(
                    createWorkerTask(worker, CalendarService.getAllWorkerAvailability(worker.getId(), false)));
            manualTasks.add(
                    createWorkerTask(worker, CalendarService.getAllWorkerAvailability(worker.getId(), true)));
        }

    }

    workers.add(0, AvailabilityGraph.PROJECT_WORKER);

    final TaskSeriesCollection collection = new TaskSeriesCollection();
    collection.add(stdTasks);

    if (showManualAv) {
        collection.add(manualTasks);
        collection.add(notTasks);
    }
    return collection;
}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * A check for a null task duration./*from  w ww .jav a2  s  .c  o  m*/
 */
@Test
public void testGetEndValue3() {
    TaskSeriesCollection c = new TaskSeriesCollection();
    TaskSeries s = new TaskSeries("Series 1");
    s.add(new Task("Task with null duration", null));
    c.add(s);
    Number millis = c.getEndValue("Series 1", "Task with null duration");
    assertTrue(millis == null);
}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * Confirm that the equals method can distinguish all the required fields.
 *//*w  w  w  .ja va 2  s.c o m*/
@Test
public void testEquals() {

    TaskSeries s1 = new TaskSeries("S");
    s1.add(new Task("T1", new Date(1), new Date(2)));
    s1.add(new Task("T2", new Date(11), new Date(22)));
    TaskSeries s2 = new TaskSeries("S");
    s2.add(new Task("T1", new Date(1), new Date(2)));
    s2.add(new Task("T2", new Date(11), new Date(22)));
    TaskSeriesCollection c1 = new TaskSeriesCollection();
    c1.add(s1);
    c1.add(s2);

    TaskSeries s1b = new TaskSeries("S");
    s1b.add(new Task("T1", new Date(1), new Date(2)));
    s1b.add(new Task("T2", new Date(11), new Date(22)));
    TaskSeries s2b = new TaskSeries("S");
    s2b.add(new Task("T1", new Date(1), new Date(2)));
    s2b.add(new Task("T2", new Date(11), new Date(22)));
    TaskSeriesCollection c2 = new TaskSeriesCollection();
    c2.add(s1b);
    c2.add(s2b);

    assertTrue(c1.equals(c2));
    assertTrue(c2.equals(c1));

}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * Confirm that cloning works./*  w  ww  .j a v a2s . c o  m*/
 */
@Test
public void testCloning() throws CloneNotSupportedException {
    TaskSeries s1 = new TaskSeries("S1");
    s1.add(new Task("T1", new Date(1), new Date(2)));
    s1.add(new Task("T2", new Date(11), new Date(22)));
    TaskSeries s2 = new TaskSeries("S2");
    s2.add(new Task("T1", new Date(33), new Date(44)));
    s2.add(new Task("T2", new Date(55), new Date(66)));
    TaskSeriesCollection c1 = new TaskSeriesCollection();
    c1.add(s1);
    c1.add(s2);

    TaskSeriesCollection c2 = (TaskSeriesCollection) c1.clone();
    assertTrue(c1 != c2);
    assertTrue(c1.getClass() == c2.getClass());
    assertTrue(c1.equals(c2));

    // basic check for independence
    s1.add(new Task("T3", new Date(21), new Date(33)));
    assertFalse(c1.equals(c2));
    TaskSeries series = c2.getSeries("S1");
    series.add(new Task("T3", new Date(21), new Date(33)));
    assertTrue(c1.equals(c2));

}

From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java

JFreeChart rxAndLabChart(String demographicNo, String typeIdName, String typeIdName2, String patientName,
        String chartTitle) {/*  ww  w .j a  v a 2 s . c  om*/
    org.jfree.data.time.TimeSeriesCollection dataset = new org.jfree.data.time.TimeSeriesCollection();

    ArrayList<EctMeasurementsDataBean> list = getList(demographicNo, typeIdName);

    String typeYAxisName = "";

    if (typeIdName.equals("BP")) {
        log.debug("Using BP LOGIC FOR type 1 ");
        EctMeasurementsDataBean sampleLine = list.get(0);
        typeYAxisName = sampleLine.getTypeDescription();
        TimeSeries systolic = new TimeSeries("Systolic", Day.class);
        TimeSeries diastolic = new TimeSeries("Diastolic", Day.class);
        for (EctMeasurementsDataBean mdb : list) { // dataVector) {
            String[] str = mdb.getDataField().split("/");

            systolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[0]));
            diastolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[1]));
        }
        dataset.addSeries(diastolic);
        dataset.addSeries(systolic);

    } else {
        log.debug("Not Using BP LOGIC FOR type 1 ");
        // get the name from the TimeSeries
        EctMeasurementsDataBean sampleLine = list.get(0);
        String typeLegendName = sampleLine.getTypeDisplayName();
        typeYAxisName = sampleLine.getTypeDescription(); // this should be the type of measurement
        TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class);
        for (EctMeasurementsDataBean mdb : list) { //dataVector) {
            newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField()));
        }
        dataset.addSeries(newSeries);
    }

    JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle, "Days", typeYAxisName, dataset, true,
            true, true);
    chart.setBackgroundPaint(Color.decode("#ccccff"));

    XYPlot plot = chart.getXYPlot();

    plot.getDomainAxis().setAutoRange(true);

    log.debug("LEN " + plot.getDomainAxis().getLowerBound() + " ddd " + plot.getDomainAxis().getUpperMargin()
            + " eee " + plot.getDomainAxis().getLowerMargin());
    //plot.getDomainAxis().setUpperMargin(plot.getDomainAxis().getUpperMargin()*6);
    //plot.getDomainAxis().setLowerMargin(plot.getDomainAxis().getLowerMargin()*6);
    // plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin()*1.7);

    plot.getDomainAxis().setUpperMargin(0.9);
    plot.getDomainAxis().setLowerMargin(0.9);
    plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() * 4);

    ValueAxis va = plot.getRangeAxis();
    va.setAutoRange(true);
    XYItemRenderer renderer = plot.getRenderer(); //DateFormat.getInstance()
    XYItemLabelGenerator generator = new StandardXYItemLabelGenerator("{1} \n {2}",
            new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00"));
    renderer.setSeriesItemLabelGenerator(0, generator);//setLabelGenerator(generator);

    renderer.setBaseItemLabelsVisible(true);
    plot.setBackgroundPaint(Color.WHITE);
    plot.setDomainCrosshairPaint(Color.GRAY);

    if (renderer instanceof XYLineAndShapeRenderer) {
        XYLineAndShapeRenderer rend = (XYLineAndShapeRenderer) renderer;
        rend.setBaseShapesVisible(true);
        rend.setBaseShapesFilled(true);
    }

    plot.setRenderer(renderer);

    ///////

    TaskSeriesCollection datasetDrug = new TaskSeriesCollection();
    TaskSeries s1 = new TaskSeries("WARFARIN");
    TaskSeries s2 = new TaskSeries("ALLOPUINOL");
    TaskSeries s3 = new TaskSeries("LIPITOR");

    s1.add(new Task("WARFARIN", UtilDateUtilities.StringToDate("2007-01-01"),
            UtilDateUtilities.StringToDate("2009-01-01")));
    s2.add(new Task("ALLOPUINOL", UtilDateUtilities.StringToDate("2008-01-01"), new Date()));
    s3.add(new Task("LIPITOR", UtilDateUtilities.StringToDate("2007-01-01"),
            UtilDateUtilities.StringToDate("2008-01-01")));

    datasetDrug.add(s1);
    datasetDrug.add(s2);
    datasetDrug.add(s3);

    XYTaskDataset dataset2 = new XYTaskDataset(datasetDrug);
    dataset2.setTransposed(true);
    dataset2.setSeriesWidth(0.6);

    DateAxis xAxis = new DateAxis("Date/Time");
    SymbolAxis yAxis = new SymbolAxis("Meds", new String[] { "WARFARIN", "ALLOPURINOL", "LIPITOR" });
    yAxis.setGridBandsVisible(false);
    XYBarRenderer xyrenderer = new XYBarRenderer();
    xyrenderer.setUseYInterval(true);
    xyrenderer.setBarPainter(new StandardXYBarPainter());

    xyrenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("HAPPY{1} \n {2}",
            new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00")));
    XYPlot xyplot = new XYPlot(dataset2, xAxis, yAxis, xyrenderer);

    xyplot.getDomainAxis().setUpperMargin(0.9);
    xyplot.getDomainAxis().setLowerMargin(0.9);

    CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(new DateAxis("Date/Time"));
    cplot.add(plot);
    cplot.add(xyplot);

    ///////

    chart = new JFreeChart("MED + LAB CHART", cplot);
    chart.setBackgroundPaint(Color.white);
    return chart;
}