75 lines
2.3 KiB
Java
75 lines
2.3 KiB
Java
package de.arminwolf.financeanalyzer.dao.charts.factories;
|
|
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.Chart;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.Column;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.HighChartDAO;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.PlotOptions;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.Series;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.Title;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.XAxis;
|
|
import de.arminwolf.financeanalyzer.dao.charts.model.YAxis;
|
|
import de.arminwolf.financeanalyzer.util.RandomColorUtil;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class ColumnChartFactory {
|
|
|
|
public static HighChartDAO createColumnChart(
|
|
final String pTitle,
|
|
final String pChartTitle,
|
|
final Map<String, List<Float>> ausgaben,
|
|
final String pAusgabenTitle,
|
|
final Map<String, List<Float>> einnahmen,
|
|
final String pEinnahmenTitle) {
|
|
|
|
HighChartDAO chart = new HighChartDAO();
|
|
|
|
PlotOptions plotOptions = new PlotOptions();
|
|
Column column = new Column();
|
|
//column.setStacking("normal");
|
|
plotOptions.setColumn(column);
|
|
chart.setPlotOptions(plotOptions);
|
|
|
|
chart.setTitle(new Title(pTitle));
|
|
|
|
XAxis xAxis = new XAxis();
|
|
xAxis.setCategories(List.of("Einname", "Ausgabe"));
|
|
chart.setXAxis(xAxis);
|
|
|
|
YAxis yAxis = new YAxis();
|
|
yAxis.setMin(0);
|
|
yAxis.setTitle(new Title(pChartTitle));
|
|
chart.setYAxis(yAxis);
|
|
|
|
chart.setChart(new Chart("column"));
|
|
|
|
Series einnahmenSeries = new Series();
|
|
einnahmenSeries.setStack(1);
|
|
einnahmenSeries.setName(pEinnahmenTitle);
|
|
einnahmenSeries.setData(einnahmen.values()
|
|
.stream()
|
|
.map(floats -> floats.stream().reduce(0.0f, Float::sum))
|
|
.collect(Collectors.toList()));
|
|
|
|
|
|
Series ausgabenSeries = new Series();
|
|
ausgabenSeries.setStack(0);
|
|
ausgabenSeries.setName(pAusgabenTitle);
|
|
ausgabenSeries.setData(ausgaben.values()
|
|
.stream()
|
|
.map(floats -> floats.stream().map(Math::abs).reduce(0.0f, Float::sum))
|
|
.collect(Collectors.toList()));
|
|
|
|
chart.setColors(List.of(RandomColorUtil.getRandomColor(), RandomColorUtil.getRandomColor()));
|
|
|
|
List<Series> series = new ArrayList<>();
|
|
series.add(einnahmenSeries);
|
|
series.add(ausgabenSeries);
|
|
chart.setSeries(series);
|
|
return chart;
|
|
}
|
|
}
|