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.user.country.pagemode;
20
21 import java.io.Serializable;
22 import java.util.Arrays;
23 import java.util.List;
24 import java.util.Optional;
25
26 import org.springframework.beans.factory.annotation.Autowired;
27 import org.springframework.security.access.annotation.Secured;
28 import org.springframework.stereotype.Component;
29
30 import com.hack23.cia.model.external.worldbank.data.impl.Indicator;
31 import com.hack23.cia.model.external.worldbank.data.impl.Indicator_;
32 import com.hack23.cia.model.external.worldbank.data.impl.WorldBankData;
33 import com.hack23.cia.model.external.worldbank.data.impl.WorldBankData_;
34 import com.hack23.cia.model.internal.application.data.impl.ViewWorldbankIndicatorDataCountrySummary;
35 import com.hack23.cia.model.internal.application.data.impl.WorldbankIndicatorDataCountrySummaryEmbeddedId;
36 import com.hack23.cia.model.internal.application.system.impl.ApplicationEventGroup;
37 import com.hack23.cia.service.api.DataContainer;
38 import com.hack23.cia.web.impl.ui.application.action.ViewAction;
39 import com.hack23.cia.web.impl.ui.application.views.common.chartfactory.api.WorldIndicatorChartDataManager;
40 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.PageMode;
41 import com.vaadin.data.util.BeanItem;
42 import com.vaadin.ui.Layout;
43 import com.vaadin.ui.MenuBar;
44 import com.vaadin.ui.Panel;
45 import com.vaadin.ui.VerticalLayout;
46
47
48
49
50 @Component
51 public final class WorldIndicatorsPageModContentFactoryImpl extends AbstractCountryPageModContentFactoryImpl {
52
53
54 private static final String WORLD_INDICATORS = "World Indicators";
55
56
57 @Autowired
58 private WorldIndicatorChartDataManager chartDataManager;
59
60
61
62
63 public WorldIndicatorsPageModContentFactoryImpl() {
64 super();
65 }
66
67 @Override
68 public boolean matches(final String page, final String parameters) {
69 return NAME.equals(page) && parameters.contains(PageMode.INDICATORS.toString());
70 }
71
72 @Secured({ "ROLE_ANONYMOUS", "ROLE_USER", "ROLE_ADMIN" })
73 @Override
74 public Layout createContent(final String parameters, final MenuBar menuBar, final Panel panel) {
75 final VerticalLayout panelContent = createPanelContent();
76 getCountryMenuItemFactory().createCountryTopicMenu(menuBar);
77
78 final String pageId = getPageId(parameters);
79
80 final String indicator = parameters.substring(PageMode.INDICATORS.toString().length()+"/".length(), parameters.length());
81
82 createDataIndicatorSummaryChartPanel(panelContent,indicator);
83
84 getPageActionEventHelper().createPageEvent(ViewAction.VISIT_TEST_CHART_VIEW, ApplicationEventGroup.USER, NAME, parameters, pageId);
85 panel.setCaption(WORLD_INDICATORS);
86
87 return panelContent;
88
89 }
90
91
92
93
94
95
96
97
98
99 private void createDataIndicatorSummaryChartPanel(final VerticalLayout verticalLayout,final String indicator) {
100
101 final DataContainer<ViewWorldbankIndicatorDataCountrySummary, WorldbankIndicatorDataCountrySummaryEmbeddedId> indicatorDataCountrSummaryDailyDataContainer = getApplicationManager()
102 .getDataContainer(ViewWorldbankIndicatorDataCountrySummary.class);
103
104
105 final Optional<ViewWorldbankIndicatorDataCountrySummary> indicatorSummary = indicatorDataCountrSummaryDailyDataContainer
106 .getAll()
107 .parallelStream()
108 .filter(t -> t != null && t.getEmbeddedId().getIndicatorId().equals(indicator)).findFirst();
109
110
111 ViewWorldbankIndicatorDataCountrySummary indicatorSummaryValue = null;
112 if (indicatorSummary.isPresent()) {
113 indicatorSummaryValue = indicatorSummary.get();
114
115 getFormFactory().addFormPanelTextFields(verticalLayout,
116 new BeanItem<>(
117 indicatorSummaryValue),
118 ViewWorldbankIndicatorDataCountrySummary.class,
119 Arrays.asList(new String[] {
120 "indicatorName",
121 "sourceValue",
122 "sourceNote",
123 "sourceOrganization",
124 "startYear",
125 "endYear",
126 "dataPoint","topics"}));
127 }
128
129 final DataContainer<WorldBankData, Serializable> dataContainer = getApplicationManager()
130 .getDataContainer(WorldBankData.class);
131
132
133 final List<WorldBankData> dataList = dataContainer.findListByEmbeddedProperty(WorldBankData.class, WorldBankData_.indicator, Indicator.class, Indicator_.id, indicator);
134
135 chartDataManager.createIndicatorChart(verticalLayout,dataList,indicatorSummaryValue);
136
137 }
138
139 }