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 import java.util.Map;
25 import java.util.Map.Entry;
26 import java.util.Objects;
27 import java.util.stream.Collectors;
28
29 import org.dussan.vaadin.dcharts.DCharts;
30 import org.dussan.vaadin.dcharts.base.elements.XYseries;
31 import org.dussan.vaadin.dcharts.data.DataSeries;
32 import org.dussan.vaadin.dcharts.options.Series;
33 import org.springframework.beans.factory.annotation.Autowired;
34 import org.springframework.stereotype.Service;
35
36 import com.hack23.cia.model.internal.application.data.impl.ApplicationActionEventPageElementPeriodSummaryEmbeddedId;
37 import com.hack23.cia.model.internal.application.data.impl.ApplicationActionEventPageElementPeriodSummaryEmbeddedId_;
38 import com.hack23.cia.model.internal.application.data.impl.ApplicationActionEventPageModePeriodSummaryEmbeddedId;
39 import com.hack23.cia.model.internal.application.data.impl.ApplicationActionEventPageModePeriodSummaryEmbeddedId_;
40 import com.hack23.cia.model.internal.application.data.impl.ApplicationActionEventPagePeriodSummaryEmbeddedId;
41 import com.hack23.cia.model.internal.application.data.impl.ViewApplicationActionEventPageDailySummary;
42 import com.hack23.cia.model.internal.application.data.impl.ViewApplicationActionEventPageElementDailySummary;
43 import com.hack23.cia.model.internal.application.data.impl.ViewApplicationActionEventPageElementDailySummary_;
44 import com.hack23.cia.model.internal.application.data.impl.ViewApplicationActionEventPageModeDailySummary;
45 import com.hack23.cia.model.internal.application.data.impl.ViewApplicationActionEventPageModeDailySummary_;
46 import com.hack23.cia.service.api.ApplicationManager;
47 import com.hack23.cia.service.api.DataContainer;
48 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.AdminChartDataManager;
49 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.ChartOptions;
50 import com.vaadin.ui.AbstractOrderedLayout;
51
52
53
54
55 @Service
56 public final class AdminChartDataManagerImpl extends AbstractChartDataManagerImpl implements AdminChartDataManager {
57
58
59 private static final String PAGE_RANK = "Page Rank";
60
61
62 private static final String PAGE_HITS = "Page Hits";
63
64
65 private static final String DD_MMM_YYYY = "dd-MMM-yyyy";
66
67
68 @Autowired
69 private ApplicationManager applicationManager;
70
71
72 @Autowired
73 private ChartOptions chartOptions;
74
75
76
77
78 public AdminChartDataManagerImpl() {
79 super();
80 }
81
82
83
84
85
86
87
88 private Map<String, List<ViewApplicationActionEventPageDailySummary>> getApplicationActionEventPageDailySummaryMap() {
89 final DataContainer<ViewApplicationActionEventPageDailySummary, ApplicationActionEventPagePeriodSummaryEmbeddedId> documentTypeSummaryDailyDataContainer = applicationManager
90 .getDataContainer(ViewApplicationActionEventPageDailySummary.class);
91
92 return documentTypeSummaryDailyDataContainer.getAll().parallelStream()
93 .filter(Objects::nonNull)
94 .collect(Collectors.groupingBy(t -> t.getEmbeddedId().getPage()));
95 }
96
97
98 @Override
99 public void createApplicationActionEventPageDailySummaryChart(final AbstractOrderedLayout content) {
100
101 final Map<String, List<ViewApplicationActionEventPageDailySummary>> map = getApplicationActionEventPageDailySummaryMap();
102
103 final DataSeries dataSeries = new DataSeries();
104
105 final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DD_MMM_YYYY, Locale.ENGLISH);
106
107 final Series series = new Series();
108
109 for (final Entry<String, List<ViewApplicationActionEventPageDailySummary>> entry : map.entrySet()) {
110
111 if (entry.getKey() != null) {
112 series.addSeries(new XYseries().setLabel(entry.getKey()));
113
114 dataSeries.newSeries();
115 final List<ViewApplicationActionEventPageDailySummary> list = entry.getValue();
116 for (final ViewApplicationActionEventPageDailySummary viewRiksdagenVoteDataBallotPartySummaryDaily : list) {
117 if (viewRiksdagenVoteDataBallotPartySummaryDaily != null) {
118 dataSeries.add(simpleDateFormat.format(viewRiksdagenVoteDataBallotPartySummaryDaily.getEmbeddedId().getCreatedDate()),
119 viewRiksdagenVoteDataBallotPartySummaryDaily.getHits());
120 }
121 }
122 }
123
124 }
125
126 addChart(content,"Application Action Events daily Summary", new DCharts().setDataSeries(dataSeries).setOptions(chartOptions.createOptionsXYDateFloatLogYAxisLegendOutside(series)).show());
127 }
128
129
130
131
132
133
134
135
136
137 private Map<String, List<ViewApplicationActionEventPageModeDailySummary>> getApplicationActionEventPageModeDailySummaryMap(final String page) {
138 final DataContainer<ViewApplicationActionEventPageModeDailySummary, ApplicationActionEventPageModePeriodSummaryEmbeddedId> documentTypeSummaryDailyDataContainer = applicationManager
139 .getDataContainer(ViewApplicationActionEventPageModeDailySummary.class);
140
141 final List<ViewApplicationActionEventPageModeDailySummary> findOrderedListByEmbeddedProperty = documentTypeSummaryDailyDataContainer.findOrderedListByEmbeddedProperty(ViewApplicationActionEventPageModeDailySummary.class, ViewApplicationActionEventPageModeDailySummary_.embeddedId, ApplicationActionEventPageModePeriodSummaryEmbeddedId.class, ApplicationActionEventPageModePeriodSummaryEmbeddedId_.page, page, ApplicationActionEventPageModePeriodSummaryEmbeddedId_.createdDate);
142
143 return findOrderedListByEmbeddedProperty.parallelStream()
144 .filter(Objects::nonNull)
145 .collect(Collectors.groupingBy(t -> t.getEmbeddedId().getPageMode()));
146 }
147
148
149
150
151 @Override
152 public void createApplicationActionEventPageModeDailySummaryChart(final AbstractOrderedLayout content,final String page) {
153
154 final Map<String, List<ViewApplicationActionEventPageModeDailySummary>> map = getApplicationActionEventPageModeDailySummaryMap(page);
155
156 final DataSeries dataSeries = new DataSeries();
157
158 final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DD_MMM_YYYY, Locale.ENGLISH);
159
160 final Series series = new Series();
161
162 for (final Entry<String, List<ViewApplicationActionEventPageModeDailySummary>> entry : map.entrySet()) {
163
164 if (entry.getKey() != null) {
165 series.addSeries(new XYseries().setLabel(entry.getKey()));
166
167 dataSeries.newSeries();
168 final List<ViewApplicationActionEventPageModeDailySummary> list = entry.getValue();
169 for (final ViewApplicationActionEventPageModeDailySummary item : list) {
170 if (item != null) {
171 dataSeries.add(simpleDateFormat.format(item.getEmbeddedId().getCreatedDate()),
172 item.getHits());
173 }
174 }
175 }
176
177 }
178
179 addChart(content,"Page Action Events daily Summary", new DCharts().setDataSeries(dataSeries).setOptions(chartOptions.createOptionsXYDateFloatLogYAxisLegendOutside(series)).show());
180 }
181
182
183
184
185
186
187
188
189
190
191
192 private List<ViewApplicationActionEventPageElementDailySummary> getApplicationActionEventPageElementDailySummaryList(final String page,final String elementId) {
193 final DataContainer<ViewApplicationActionEventPageElementDailySummary, ApplicationActionEventPageElementPeriodSummaryEmbeddedId> documentTypeSummaryDailyDataContainer = applicationManager
194 .getDataContainer(ViewApplicationActionEventPageElementDailySummary.class);
195
196 final List<ViewApplicationActionEventPageElementDailySummary> findOrderedListByEmbeddedProperty = documentTypeSummaryDailyDataContainer.findOrderedListByEmbeddedProperty(ViewApplicationActionEventPageElementDailySummary.class, ViewApplicationActionEventPageElementDailySummary_.embeddedId, ApplicationActionEventPageElementPeriodSummaryEmbeddedId.class, ApplicationActionEventPageElementPeriodSummaryEmbeddedId_.elementId, elementId, ApplicationActionEventPageElementPeriodSummaryEmbeddedId_.createdDate);
197
198 return findOrderedListByEmbeddedProperty.parallelStream()
199 .filter(t -> t != null && t.getEmbeddedId().getPage().equals(page))
200 .collect(Collectors.toList());
201 }
202
203
204 @Override
205 public void createApplicationActionEventPageElementDailySummaryChart(final AbstractOrderedLayout content,final String page,final String elementId) {
206
207 final List<ViewApplicationActionEventPageElementDailySummary> list = getApplicationActionEventPageElementDailySummaryList(page,elementId);
208
209 final DataSeries dataSeries = new DataSeries();
210
211 final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DD_MMM_YYYY, Locale.ENGLISH);
212
213 final Series series = new Series();
214
215 series.addSeries(new XYseries().setLabel(PAGE_HITS));
216 dataSeries.newSeries();
217 for (final ViewApplicationActionEventPageElementDailySummary item : list) {
218 if (item != null) {
219 dataSeries.add(simpleDateFormat.format(item.getEmbeddedId().getCreatedDate()),
220 item.getHits());
221 }
222 }
223
224 series.addSeries(new XYseries().setLabel(PAGE_RANK));
225 dataSeries.newSeries();
226 for (final ViewApplicationActionEventPageElementDailySummary item : list) {
227 if (item != null) {
228 dataSeries.add(simpleDateFormat.format(item.getEmbeddedId().getCreatedDate()),
229 item.getRank());
230 }
231 }
232
233 addChart(content, "Page element Action Events daily Summary",new DCharts().setDataSeries(dataSeries).setOptions(chartOptions.createOptionsXYDateFloatLogYAxisLegendOutside(series)).show());
234 }
235
236
237 }