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 FileResult toFirstFileResult(CoserRequest request) {
171 CoserRequestContext context = newRequestContext();
172 FileResult result = webResultService.executeFirst(context, request).toFileResult();
173 return result;
174 }
175
176 public MapResult toMapResult(CoserRequest request) {
177 CoserRequestContext context = newRequestContext();
178 MapResult result = webResultService.executeUnique(context, request).toMapResult();
179 return result;
180 }
181
182 public Map<String, String> toMap(CoserRequest request) {
183 CoserRequestContext context = newRequestContext();
184 Map<String, String> result = webResultService.executeAll(context, request).toMap();
185 return result;
186 }
187
188
189
190
191
192 public CoserWebConfig getConfig() {
193 return applicationContext.getConfig();
194 }
195
196 public void reloadProjects() {
197 webResultService.resetRepositories();
198 }
199
200 public Map<String, ResultRepositoryType> getRepositoryTypes() {
201 Map<String, ResultRepositoryType> result = webResultService.getRepositoryTypes();
202 return result;
203 }
204
205 public ResultRepositoryType getMatchingRepositoryType(CoserRequest request) {
206 CoserRequestContext context = newRequestContext();
207 CoserRequestExecutor coserRequestExecutor = webResultService.executeAll(context, request);
208
209 ResultRepository matchingRepository = coserRequestExecutor.getFirstMatchingRepository();
210 return matchingRepository.getResultRepositoryType();
211 }
212
213
214
215
216
217 protected CoserRequestContext newRequestContext() {
218 return newRequestContext(action.getLocale());
219 }
220
221 protected CoserRequestContext newRequestContext(Locale locale) {
222 return webResultService.newRequestContext(locale);
223 }
224
225 }