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.dataseriesfactory.impl;
20
21 import java.util.Optional;
22
23 import org.dussan.vaadin.dcharts.data.DataSeries;
24 import org.springframework.beans.factory.annotation.Autowired;
25 import org.springframework.stereotype.Service;
26 import org.springframework.transaction.annotation.Propagation;
27 import org.springframework.transaction.annotation.Transactional;
28
29 import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenParty;
30 import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartySummary;
31 import com.hack23.cia.model.internal.application.data.party.impl.ViewRiksdagenPartySummary_;
32 import com.hack23.cia.service.api.ApplicationManager;
33 import com.hack23.cia.service.api.DataContainer;
34 import com.hack23.cia.web.impl.ui.application.views.common.dataseriesfactory.api.PartyDataSeriesFactory;
35
36
37
38
39 @Service
40 @Transactional(propagation=Propagation.REQUIRED)
41 public final class PartyDataSeriesFactoryImpl implements PartyDataSeriesFactory {
42
43
44 @Autowired
45 private ApplicationManager applicationManager;
46
47
48
49
50 public PartyDataSeriesFactoryImpl() {
51 super();
52 }
53
54 @Override
55 public DataSeries createPartyChartTimeSeriesAll() {
56 DataSeries dataSeries = new DataSeries();
57
58 final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
59 .getDataContainer(ViewRiksdagenParty.class);
60
61 for (final ViewRiksdagenParty data : dataContainer.getAll()) {
62 dataSeries = dataSeries.newSeries().add(data.getPartyName(),
63 data.getHeadCount());
64 }
65 return dataSeries;
66 }
67
68 @Override
69 public DataSeries createPartyChartTimeSeriesCurrent() {
70 DataSeries dataSeries = new DataSeries();
71
72 final DataContainer<ViewRiksdagenPartySummary, String> dataContainer = applicationManager
73 .getDataContainer(ViewRiksdagenPartySummary.class);
74
75 for (final ViewRiksdagenPartySummary data : dataContainer.getAllOrderBy(ViewRiksdagenPartySummary_.currentAssignments)) {
76 if (data != null && data.isActiveParliament()) {
77
78 dataSeries = dataSeries.newSeries().add(getPartyName(data.getParty()),
79 data.getTotalActiveParliament());
80 }
81 }
82 return dataSeries;
83 }
84
85 @Override
86 public DataSeries createChartTimeSeriesCurrentCommitteeByParty() {
87 DataSeries dataSeries = new DataSeries();
88
89 final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
90 .getDataContainer(ViewRiksdagenParty.class);
91
92 final DataContainer<ViewRiksdagenPartySummary, String> partySummarydataContainer = applicationManager
93 .getDataContainer(ViewRiksdagenPartySummary.class);
94
95 partySummarydataContainer.getAll();
96
97 for (final ViewRiksdagenParty data : dataContainer.getAll()) {
98 final ViewRiksdagenPartySummary summary = partySummarydataContainer.load(data.getPartyId());
99 if (summary != null && summary.isActive()) {
100
101 dataSeries =dataSeries.newSeries().add(data.getPartyName(),summary.getTotalActiveCommittee());
102 }
103 }
104 return dataSeries;
105 }
106
107
108 @Override
109 public DataSeries createChartTimeSeriesCurrentGovernmentByParty() {
110 DataSeries dataSeries = new DataSeries();
111
112 final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
113 .getDataContainer(ViewRiksdagenParty.class);
114
115 final DataContainer<ViewRiksdagenPartySummary, String> partySummarydataContainer = applicationManager
116 .getDataContainer(ViewRiksdagenPartySummary.class);
117
118 partySummarydataContainer.getAll();
119
120 for (final ViewRiksdagenParty data : dataContainer.getAll()) {
121 final ViewRiksdagenPartySummary summary = partySummarydataContainer.load(data.getPartyId());
122 if (summary != null && summary.isActive()) {
123
124 dataSeries =dataSeries.newSeries().add(data.getPartyName(),summary.getTotalActiveGovernment());
125 }
126 }
127 return dataSeries;
128 }
129
130
131
132
133
134
135
136
137 private String getPartyName(final String party) {
138 final DataContainer<ViewRiksdagenParty, String> dataContainer = applicationManager
139 .getDataContainer(ViewRiksdagenParty.class);
140
141 final Optional<ViewRiksdagenParty> matchingObjects =dataContainer.getAll().stream().
142 filter(p -> p.getPartyId().equalsIgnoreCase(party)).
143 findFirst();
144
145 if (matchingObjects.isPresent()) {
146 return matchingObjects.get().getPartyName();
147
148 } else {
149 return party;
150 }
151 }
152
153 }