📄 datasetutilities.java
字号:
TimeSeries serie = (TimeSeries) series.nextElement(); org.jfree.data.time.TimeSeries outSeries = null; long milliseconds = serie.getTimeSeriesItem(0).getEnd() - serie.getTimeSeriesItem(0).getStart(); String className = "org.jfree.data.time."; if (milliseconds == (long) 999) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Second.class); className += "Second"; } else if (milliseconds == (long) 60 * 1000 - 1) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Minute.class); className += "Minute"; } else if (milliseconds == (long) 60 * 60 * 1000 - 1) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Hour.class); className += "Hour"; } else if (milliseconds == (long) 24 * 60 * 60 * 1000 - 1) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Day.class); className += "Day"; } else if (milliseconds == (long) 7 * 24 * 60 * 60 * 1000 - 1) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Week.class); className += "Week"; } else if ((long) 27 * 24 * 60 * 60 * 1000 < milliseconds && milliseconds < (long) 32 * 24 * 60 * 60 * 1000) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Month.class); className += "Month"; } else if ((long) 88 * 24 * 60 * 60 * 1000 < milliseconds && milliseconds < (long) 93 * 24 * 60 * 60 * 1000) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Quarter.class); className += "Quarter"; } else if ((long) 363 * 24 * 60 * 60 * 1000 < milliseconds && milliseconds < (long) 366 * 24 * 60 * 60 * 1000) { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.Year.class); className += "Year"; } else { outSeries = new org.jfree.data.time.TimeSeries(serie.getName(), org.jfree.data.time.FixedMillisecond.class); className += "FixedMillisecond"; } if (serie.hasMaximumItemCount()) outSeries.setMaximumItemCount(serie.getMaximumItemCount()); if (serie.hasHistoryCount()) outSeries.setHistoryCount(serie.getHistoryCount()); if (serie.getDescription() != null) outSeries.setDescription(serie.getDescription()); if (serie.getDomainDescription() != null) outSeries.setDomainDescription(serie.getDomainDescription()); if (serie.getRangeDescription() != null) outSeries.setRangeDescription(serie.getRangeDescription()); for (int i = 0; i < serie.getTimeSeriesItemCount(); ++i) { TimeSeriesItem item = serie.getTimeSeriesItem(i); try { if (item.hasValue()) outSeries.add((org.jfree.data.time.RegularTimePeriod) Class.forName(className).getConstructor(new Class[]{Date.class}).newInstance(new Object[]{new Date(item.getStart())}), item.getValue()); else outSeries.add((org.jfree.data.time.RegularTimePeriod) Class.forName(className).getConstructor(new Class[]{Date.class}).newInstance(new Object[]{new Date(item.getStart())}), null); } catch (NoSuchMethodException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } } outDataset.addSeries(outSeries); } return outDataset; } public static void writeTimeSeriesCollection(File file, org.jfree.data.time.TimeSeriesCollection inDataset) throws IOException, MarshalException, ValidationException { TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.setXPosition(inDataset.getXPosition().toString()); dataset.setDomainIsPointsInTime(inDataset.getDomainIsPointsInTime()); for (int i = 0; i < inDataset.getSeriesCount(); ++i) { org.jfree.data.time.TimeSeries serie = inDataset.getSeries(i); String name = serie.getName(); TimeSeries series = new TimeSeries(); series.setName(name); String description = serie.getDescription(); String rangeDescription = serie.getRangeDescription(); String domainDescription = serie.getDomainDescription(); int maximumItemCount = serie.getMaximumItemCount(); int historyCount = serie.getHistoryCount(); if (description != null) series.setDescription(description); if (rangeDescription != null) series.setRangeDescription(rangeDescription); if (domainDescription != null) series.setDomainDescription(domainDescription); if (maximumItemCount != Integer.MAX_VALUE) series.setMaximumItemCount(maximumItemCount); if (historyCount != 0) series.setHistoryCount(historyCount); for (int j = 0; j < inDataset.getItemCount(i); ++j) { org.jfree.data.time.TimeSeriesDataItem inItem = serie.getDataItem(j); TimeSeriesItem item = new TimeSeriesItem(); item.setStart(inItem.getPeriod().getStart().getTime()); item.setEnd(inItem.getPeriod().getEnd().getTime()); if (inItem.getValue() != null) item.setValue(inItem.getValue().doubleValue()); series.addTimeSeriesItem(item); } dataset.addTimeSeries(series); } FileWriter output = new FileWriter(file); dataset.marshal(output); output.flush(); output.close(); } public static org.jfree.data.gantt.TaskSeriesCollection readTaskSeriesCollection(File file) throws IOException, MarshalException, ValidationException{ FileReader reader = new FileReader(file); TaskSeriesCollection dataset = (TaskSeriesCollection) TaskSeriesCollection.unmarshal(reader); reader.close(); org.jfree.data.gantt.TaskSeriesCollection outDataset = new org.jfree.data.gantt.TaskSeriesCollection(); Enumeration series=dataset.enumerateTaskSeries(); while (series.hasMoreElements()) { TaskSeries serie = (TaskSeries) series.nextElement(); org.jfree.data.gantt.TaskSeries outSeries=new org.jfree.data.gantt.TaskSeries(serie.getName()); for(int j=0; j<serie.getTaskCount();++j){ Task task=serie.getTask(j); org.jfree.data.gantt.Task outTask=new org.jfree.data.gantt.Task(task.getDescription(), new Date(task.getDuration().getStart()), new Date(task.getDuration().getEnd()) ); if(task.hasPercentComplete()) outTask.setPercentComplete(task.getPercentComplete()); for(int k=0; k<task.getSubtaskCount();++k){ Subtask subtask=task.getSubtask(k); org.jfree.data.gantt.Task outSubtask=new org.jfree.data.gantt.Task(task.getDescription(), new Date(subtask.getDuration().getStart()), new Date(subtask.getDuration().getEnd()) ); if(subtask.hasPercentComplete()) outSubtask.setPercentComplete(subtask.getPercentComplete()); outTask.addSubtask(outSubtask); } outSeries.add(outTask); } outDataset.add(outSeries); } return outDataset; } public static void writeTaskSeriesCollection(File file, org.jfree.data.gantt.TaskSeriesCollection inDataset) throws IOException, MarshalException, ValidationException{ TaskSeriesCollection dataset=new TaskSeriesCollection(); for(int i=0; i<inDataset.getRowCount();++i){ String serieName=inDataset.getSeriesName(i); TaskSeries series=new TaskSeries(); series.setName(serieName); for(int j=0; j<inDataset.getColumnCount();++j){ Task task=new Task(); task.setDescription((String) inDataset.getColumnKey(j)); for(int k=0;k<inDataset.getSubIntervalCount(i,j);++k){ Subtask subtask=new Subtask(); subtask.setDescription((String) inDataset.getColumnKey(j)); if(inDataset.getPercentComplete(i,j,k)!=null) subtask.setPercentComplete(inDataset.getPercentComplete(i,j,k).doubleValue()); Duration duration=new Duration(); duration.setStart(inDataset.getStartValue(i,j,k).longValue()); duration.setEnd(inDataset.getEndValue(i,j,k).longValue()); subtask.setDuration(duration); task.addSubtask(subtask); } if(inDataset.getPercentComplete(i,j)!=null) task.setPercentComplete(inDataset.getPercentComplete(i,j).doubleValue()); Duration duration=new Duration(); duration.setStart(inDataset.getStartValue(i,j).longValue()); duration.setEnd(inDataset.getEndValue(i,j).longValue()); task.setDuration(duration); series.addTask(task); } dataset.addTaskSeries(series); } FileWriter output = new FileWriter(file); dataset.marshal(output); output.flush(); output.close(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -