accounting-dashboard/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/ReportDataBuilder.java

91 lines
3.2 KiB
Java

package org.gcube.portlets.user.accountingdashboard.server.accounting;
import java.util.ArrayList;
import org.gcube.accounting.accounting.summary.access.model.Record;
import org.gcube.accounting.accounting.summary.access.model.Report;
import org.gcube.accounting.accounting.summary.access.model.ReportElement;
import org.gcube.accounting.accounting.summary.access.model.Series;
import org.gcube.portlets.user.accountingdashboard.shared.data.RecordData;
import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData;
import org.gcube.portlets.user.accountingdashboard.shared.data.ReportElementData;
import org.gcube.portlets.user.accountingdashboard.shared.data.SeriesData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*/
public class ReportDataBuilder {
private static Logger logger = LoggerFactory.getLogger(ReportDataBuilder.class);
private Report report;
public ReportDataBuilder(Report report) {
this.report = report;
}
public ReportData build() {
if (report == null || report.getElements() == null) {
logger.error("Invalid report: " + report);
return null;
}
ArrayList<ReportElementData> elements = new ArrayList<>();
for (ReportElement reportElement : report.getElements()) {
if (reportElement.getSerieses() == null) {
ReportElementData reportElementData = new ReportElementData();
reportElementData.setLabel(reportElement.getLabel());
reportElementData.setCategory(reportElement.getCategory());
reportElementData.setxAxis(reportElement.getXAxis());
reportElementData.setyAxis(reportElement.getYAxis());
reportElementData.setSerieses(null);
elements.add(reportElementData);
} else {
Series[] serieses = reportElement.getSerieses();
int seriesLen = serieses.length;
SeriesData[] seriesesData = new SeriesData[seriesLen];
for (int i = 0; i < seriesLen; i++) {
Series series = serieses[i];
SeriesData seriesData = null;
if (series.getDataRow() == null) {
seriesData = new SeriesData();
seriesData.setLabel(series.getLabel());
seriesData.setDataRow(null);
} else {
Record[] dataRow = series.getDataRow();
int dataRowLen = dataRow.length;
RecordData[] dataRowData = new RecordData[dataRowLen];
for (int j = 0; j < dataRowLen; j++) {
Record record = dataRow[j];
RecordData recordData = new RecordData();
recordData.setX(record.getX());
recordData.setY(record.getY());
dataRowData[j] = recordData;
}
seriesData = new SeriesData();
seriesData.setLabel(series.getLabel());
seriesData.setDataRow(dataRowData);
}
seriesesData[i] = seriesData;
}
ReportElementData reportElementData = new ReportElementData();
reportElementData.setLabel(reportElement.getLabel());
reportElementData.setCategory(reportElement.getCategory());
reportElementData.setxAxis(reportElement.getXAxis());
reportElementData.setyAxis(reportElement.getYAxis());
reportElementData.setSerieses(seriesesData);
elements.add(reportElementData);
}
}
ReportData reportData = new ReportData(elements);
logger.debug("ReportData: " + reportData);
return reportData;
}
}