use of org.jfree.data.time.Hour in project cubrid-manager by CUBRID.
the class MonitorStatisticChart method buildInvalidData.
/**
* Build TimeSeries for StatisticData which has no data. After build, each
* TimeSeries accompany with the StatisticData will have the same time
* series with ordinary TimeSeries, but all the values will be -1.
*
* @param dataset
* @param timeType
* @param dataItemWithoutDataList
* @param current
* @param interalMillisecs
*/
private void buildInvalidData(TimeSeriesCollection dataset, TimeType timeType, List<StatisticData> dataItemWithoutDataList, Date current, long interalMillisecs) {
for (StatisticData statisticData : dataItemWithoutDataList) {
TimeSeries series = null;
if (isDetailView) {
series = new TimeSeries(statisticData.getDescription(isMultiHost));
} else {
series = new TimeSeries(statisticData.getSimpleDescription(isMultiHost));
}
Date point = (Date) current.clone();
long curMillisecs = current.getTime();
for (int i = 0; i < dataSize; i++) {
point.setTime(curMillisecs - (dataSize - i) * interalMillisecs);
switch(timeType) {
case DAILY:
series.add(new Second(point), -1);
break;
case WEEKLY:
series.add(new Hour(point), -1);
break;
case MONTHLY:
series.add(new Hour(point), -1);
break;
case YEARLY:
series.add(new Day(point), -1);
break;
default:
break;
}
}
maxValueMap.put(statisticData, -1d);
minValueMap.put(statisticData, -1d);
dataset.addSeries(series);
}
}
use of org.jfree.data.time.Hour in project cubrid-manager by CUBRID.
the class MonitorStatisticChart method createDataset.
private XYDataset createDataset() {
TimeSeriesCollection dataset = new TimeSeriesCollection();
if (statisticDataList == null) {
return dataset;
}
double maxForRang = 0;
List<StatisticData> dataItemWithoutDataList = new ArrayList<StatisticData>();
TimeType timeType = null;
Date current = new Date();
long interalMillisecs = 0;
for (StatisticData statisticData : statisticDataList) {
if (statisticData == null) {
continue;
}
MetricType metricType = MetricType.getEnumByMetric(statisticData.getMetric());
if (metricType == null) {
continue;
}
int size = statisticData.getData().size();
if (size == 0) {
dataItemWithoutDataList.add(statisticData);
continue;
} else if (dataSize == 0) {
//record data size for build invalid data
dataSize = size;
}
//check data type, record 'isHasValidData = true'
if (!isHasValidData) {
isHasValidData = true;
chartType = getChartType(statisticData.getMetric());
if (chartType == ChartType.PERCENT) {
rangMax = 100;
}
String dateType = statisticData.getDtype();
timeType = TimeType.getEnumByType(dateType);
//CMS return -1 for invalid data, so for invalid data(<0), display as -1.
switch(timeType) {
case DAILY:
interalMillisecs = 1000 * 60 * 60 * 24 / size;
break;
case WEEKLY:
interalMillisecs = 1000 * 60 * 60;
break;
case MONTHLY:
interalMillisecs = 1000 * 60 * 60;
break;
case YEARLY:
interalMillisecs = 1000 * 60 * 60 * 24;
break;
default:
break;
}
}
TimeSeries series = null;
if (isDetailView) {
series = new TimeSeries(statisticData.getDescription(isMultiHost));
} else {
series = new TimeSeries(statisticData.getSimpleDescription(isMultiHost));
}
Date point = (Date) current.clone();
long curMillisecs = current.getTime();
int count = 0;
int max = 0;
int min = 0;
boolean isInitMinVal = false;
for (int val : statisticData.getData()) {
point.setTime(curMillisecs - (size - count) * interalMillisecs);
switch(timeType) {
case DAILY:
if (val < 0) {
series.add(new Second(point), -1);
} else {
series.add(new Second(point), val / 100);
}
break;
case WEEKLY:
if (val < 0) {
series.add(new Hour(point), -1);
} else {
series.add(new Hour(point), val / 100);
}
break;
case MONTHLY:
if (val < 0) {
series.add(new Hour(point), -1);
} else {
series.add(new Hour(point), val / 100);
}
break;
case YEARLY:
if (val < 0) {
series.add(new Day(point), -1);
} else {
series.add(new Day(point), val / 100);
}
break;
default:
break;
}
if (chartType != ChartType.PERCENT && val > maxForRang) {
maxForRang = val;
}
if (!isInitMinVal && val >= 0) {
min = val;
isInitMinVal = true;
}
if (val > max) {
max = val;
}
if (val < min && val >= 0) {
min = val;
}
count++;
}
maxValueMap.put(statisticData, max / 100d);
minValueMap.put(statisticData, min / 100d);
dataset.addSeries(series);
}
if (!isHasValidData) {
return dataset;
}
if (chartType != ChartType.PERCENT) {
decideRangMax(maxForRang / 100);
}
/*[TOOLS-3742] Build invalid data for StatisticData which has no data*/
buildInvalidData(dataset, timeType, dataItemWithoutDataList, current, interalMillisecs);
if (isDetailView) {
chartTitle = Messages.monStatisticDetailChartTitle;
timeAxisLabel = Messages.lblChartTime;
valueAxisLabel = Messages.lblChartValue;
switch(chartType) {
case PERCENT:
valueAxisLabel += " (%)";
break;
case MEMORY:
case SPACE:
valueAxisLabel += " (MB)";
break;
case OTHERS:
break;
default:
break;
}
}
return dataset;
}
Aggregations