1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.hack23.cia.web.impl.ui.application.views.common.chartfactory.impl;
20
21 import java.text.SimpleDateFormat;
22 import java.util.List;
23 import java.util.Locale;
24
25 import org.dussan.vaadin.dcharts.DCharts;
26 import org.dussan.vaadin.dcharts.base.elements.XYseries;
27 import org.dussan.vaadin.dcharts.data.DataSeries;
28 import org.dussan.vaadin.dcharts.options.Series;
29 import org.springframework.beans.factory.annotation.Autowired;
30 import org.springframework.stereotype.Service;
31
32 import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenVoteDataBallotPoliticianSummaryDaily;
33 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.ChartOptions;
34 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.GenericChartDataManager;
35 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.PoliticianChartDataManager;
36 import com.vaadin.ui.AbstractOrderedLayout;
37
38
39
40
41 @Service
42 public final class PoliticianDataManagerImpl extends AbstractChartDataManagerImpl implements PoliticianChartDataManager {
43
44
45 private static final String ABSENT = "Absent";
46
47
48 private static final String PARTY_REBEL = "Party Rebel";
49
50
51 private static final String WON = "Won";
52
53
54 private static final String NUMBER_BALLOTS = "Number ballots";
55
56
57 private static final String DD_MMM_YYYY = "dd-MMM-yyyy";
58
59
60 @Autowired
61 private GenericChartDataManager<ViewRiksdagenVoteDataBallotPoliticianSummaryDaily> dataChartManager;
62
63
64 @Autowired
65 private ChartOptions chartOptions;
66
67
68
69
70
71 public PoliticianDataManagerImpl() {
72 super();
73 }
74
75
76
77 @Override
78 public void createPersonLineChart(final AbstractOrderedLayout content,final String personId) {
79
80 final List<ViewRiksdagenVoteDataBallotPoliticianSummaryDaily> list = dataChartManager.findByValue(personId);
81
82 final Series series = new Series().addSeries(new XYseries().setLabel(WON))
83 .addSeries(new XYseries().setLabel(PARTY_REBEL)).addSeries(new XYseries().setLabel(ABSENT))
84 .addSeries(new XYseries().setLabel(NUMBER_BALLOTS));
85
86 final DataSeries dataSeries = new DataSeries().newSeries();
87
88 final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DD_MMM_YYYY, Locale.ENGLISH);
89
90 if (list != null) {
91
92 addPoliticianIndicatorData(list, dataSeries, simpleDateFormat);
93
94 }
95
96 addChart(content,"Ballot indicators", new DCharts().setDataSeries(dataSeries).setOptions(chartOptions.createOptionsPersonLineChart(series)).show());
97 }
98
99
100
101
102
103
104
105
106
107
108
109
110
111 private static void addPoliticianIndicatorData(final List<ViewRiksdagenVoteDataBallotPoliticianSummaryDaily> list,
112 final DataSeries dataSeries, final SimpleDateFormat simpleDateFormat) {
113
114 for (final ViewRiksdagenVoteDataBallotPoliticianSummaryDaily viewRiksdagenVoteDataBallotPoliticianSummaryDaily : list) {
115 if (viewRiksdagenVoteDataBallotPoliticianSummaryDaily != null) {
116 dataSeries.add(
117 simpleDateFormat.format(
118 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getEmbeddedId().getVoteDate()),
119 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getWonPercentage());
120 }
121 }
122
123 dataSeries.newSeries();
124
125 for (final ViewRiksdagenVoteDataBallotPoliticianSummaryDaily viewRiksdagenVoteDataBallotPoliticianSummaryDaily : list) {
126 if (viewRiksdagenVoteDataBallotPoliticianSummaryDaily != null) {
127 dataSeries.add(
128 simpleDateFormat.format(
129 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getEmbeddedId().getVoteDate()),
130 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getRebelPercentage());
131 }
132 }
133
134 dataSeries.newSeries();
135 for (final ViewRiksdagenVoteDataBallotPoliticianSummaryDaily viewRiksdagenVoteDataBallotPoliticianSummaryDaily : list) {
136 if (viewRiksdagenVoteDataBallotPoliticianSummaryDaily != null) {
137 dataSeries.add(
138 simpleDateFormat.format(
139 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getEmbeddedId().getVoteDate()),
140 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getPoliticianPercentageAbsent());
141 }
142 }
143
144 dataSeries.newSeries();
145 for (final ViewRiksdagenVoteDataBallotPoliticianSummaryDaily viewRiksdagenVoteDataBallotPoliticianSummaryDaily : list) {
146 if (viewRiksdagenVoteDataBallotPoliticianSummaryDaily != null) {
147 dataSeries.add(
148 simpleDateFormat.format(
149 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getEmbeddedId().getVoteDate()),
150 viewRiksdagenVoteDataBallotPoliticianSummaryDaily.getNumberBallots());
151 }
152 }
153 }
154
155
156 }