1 package fr.ifremer.coser.web;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import com.google.common.base.Preconditions;
25 import com.google.common.collect.Maps;
26 import com.opensymphony.xwork2.ActionSupport;
27 import fr.ifremer.coser.bean.ZoneMap;
28 import fr.ifremer.coser.result.CoserRequest;
29 import fr.ifremer.coser.result.CoserRequestContext;
30 import fr.ifremer.coser.result.CoserRequestExecutor;
31 import fr.ifremer.coser.result.repository.ResultRepository;
32 import fr.ifremer.coser.result.repository.ResultRepositoryType;
33 import fr.ifremer.coser.result.request.DeleteResultsRequest;
34 import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
35 import fr.ifremer.coser.result.result.FileResult;
36 import fr.ifremer.coser.result.result.MapResult;
37 import fr.ifremer.coser.services.WebResultService;
38
39 import java.io.File;
40 import java.util.List;
41 import java.util.Locale;
42 import java.util.Map;
43 import java.util.Set;
44
45
46
47
48
49
50
51
52
53
54 public class ServiceHelper {
55
56 protected final ActionSupport action;
57
58 protected final CoserWebApplicationContext applicationContext;
59
60 protected final WebResultService webResultService;
61
62 public ServiceHelper(ActionSupport action) {
63 Preconditions.checkNotNull(action);
64 this.applicationContext = CoserWebApplicationContext.get();
65 this.action = action;
66 this.webResultService = new WebResultService(applicationContext);
67 }
68
69
70
71
72
73 public Map<String, String> getFacades() {
74 return applicationContext.getZoneMap().getFacades();
75 }
76
77 public String getFacadeDisplayName(String facade) {
78 Map<String, String> facades = getFacades();
79 return facades.get(facade);
80 }
81
82
83
84
85
86 public Map<String, List<String>> getZoneByFacade() {
87 return applicationContext.getZoneMap().getZoneByFacade();
88 }
89
90 public Map<String, String> getZonesForFacade(String facade) {
91 ZoneMap zoneMap = applicationContext.getZoneMap();
92 List<String> zoneIds = zoneMap.getZonesForFacade(facade);
93 Map<String, String> map = Maps.newHashMap();
94 for (String zoneId : zoneIds) {
95 String zoneName = zoneMap.getZoneFullNameWithNoFacade(zoneId);
96 map.put(zoneId, zoneName);
97 }
98 return map;
99 }
100
101 public Map<String, String> getZonePictures() {
102 return applicationContext.getZoneMap().getZonePictures();
103 }
104
105 public Map<String, String> getZoneMetaInfo(Locale locale) {
106 return applicationContext.getZoneMap().getZoneMetaInfo(locale);
107 }
108
109 public String getZoneFullName(String zoneId) {
110 return applicationContext.getZoneMap().getZoneFullName(zoneId);
111 }
112
113 public String getZoneDisplayName(CoserRequest request, String zone) {
114 Map<String, String> availableZones = toMap(request);
115 String displayName = availableZones.get(zone);
116 return displayName;
117 }
118
119
120
121
122
123 public String getSpeciesDisplayName(CoserRequest request, String species) {
124 Map<String, String> availableSpecies = toMap(request);
125 String displayName = availableSpecies.get(species);
126 return displayName;
127 }
128
129
130
131
132
133 public Set<String> getIndicatorIds() {
134 return applicationContext.getIndicatorMap().getIds();
135 }
136
137 public String getIndicatorDisplayName(CoserRequest request, String indicator) {
138 Map<String, String> availableIndicators = toMap(request);
139 String displayName = availableIndicators.get(indicator);
140 return displayName;
141 }
142
143
144
145
146
147 public FileResult extractRawDataAndResults(Locale locale,
148 ExtractRawDataAndResultsRequest request) {
149 CoserRequestContext context = newRequestContext(locale);
150 FileResult result = webResultService.extractRawDataAndResults(context, request);
151 return result;
152 }
153
154 public void deleteResults(DeleteResultsRequest request) {
155 CoserRequestContext context = newRequestContext();
156 webResultService.deleteResults(context, request);
157 }
158
159 public void registerNewUploadedResults(String login, File resultFile) {
160 CoserRequestContext context = newRequestContext();
161 webResultService.registerNewUploadedResults(context, login, resultFile);
162 }
163
164 public FileResult toFileResult(CoserRequest request) {
165 CoserRequestContext context = newRequestContext();
166 FileResult result = webResultService.executeUnique(context, request).toFileResult();
167 return result;
168 }
169
170 public MapResult toMapResult(CoserRequest request) {
171 CoserRequestContext context = newRequestContext();
172 MapResult result = webResultService.executeUnique(context, request).toMapResult();
173 return result;
174 }
175
176 public Map<String, String> toMap(CoserRequest request) {
177 CoserRequestContext context = newRequestContext();
178 Map<String, String> result = webResultService.executeAll(context, request).toMap();
179 return result;
180 }
181
182
183
184
185
186 public CoserWebConfig getConfig() {
187 return applicationContext.getConfig();
188 }
189
190 public void reloadProjects() {
191 webResultService.resetRepositories();
192 }
193
194 public Map<String, ResultRepositoryType> getRepositoryTypes() {
195 Map<String, ResultRepositoryType> result = webResultService.getRepositoryTypes();
196 return result;
197 }
198
199 public ResultRepositoryType getMatchingRepositoryType(CoserRequest request) {
200 CoserRequestContext context = newRequestContext();
201 CoserRequestExecutor coserRequestExecutor = webResultService.executeAll(context, request);
202
203 ResultRepository matchingRepository = coserRequestExecutor.getUniqueMatchingRepository();
204 return matchingRepository.getResultRepositoryType();
205 }
206
207
208
209
210
211 protected CoserRequestContext newRequestContext() {
212 return newRequestContext(action.getLocale());
213 }
214
215 protected CoserRequestContext newRequestContext(Locale locale) {
216 return webResultService.newRequestContext(locale);
217 }
218
219 }