1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package fr.ifremer.coser.web.actions.com;
23
24 import fr.ifremer.coser.result.result.FileResult;
25 import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
26 import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
27 import fr.ifremer.coser.web.actions.common.AbstractCoserJspAction;
28 import org.apache.commons.collections4.MapUtils;
29 import org.apache.commons.lang3.StringUtils;
30 import org.apache.struts2.convention.annotation.Action;
31 import org.apache.struts2.convention.annotation.Result;
32
33 import java.io.InputStream;
34 import java.util.Map;
35
36
37
38
39
40
41
42
43
44
45
46
47 public class GraphDownloadAction extends AbstractCoserJspAction {
48
49
50 private static final long serialVersionUID = 3385467755357775199L;
51
52 protected String facade;
53
54 protected String zone;
55
56 protected String indicator;
57
58
59 protected String list;
60
61 protected FileResult result;
62
63 public void setFacade(String facade) {
64 this.facade = facade;
65 }
66
67 public String getZone() {
68 return zone;
69 }
70
71 public void setZone(String zone) {
72 this.zone = zone;
73 }
74
75 public String getIndicator() {
76 return indicator;
77 }
78
79 public void setIndicator(String indicator) {
80 this.indicator = indicator;
81 }
82
83 public String getList() {
84 return list;
85 }
86
87 public void setList(String list) {
88 this.list = list;
89 }
90
91 public String getSource() {
92 return result.getSource();
93 }
94
95 @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
96 public String execute() {
97
98 GetCommunityIndicatorResultDataRequest request =
99 requestBuilder(GetCommunityIndicatorResultDataRequest.class).
100 addFacade(facade).
101 addZone(zone).
102 addIndicator(indicator).
103 addSpecies(list).
104 toRequest();
105
106 if (StringUtils.isEmpty(list)) {
107
108
109 GetSpeciesListForCommunityIndicatorResultRequest speciesRequest =
110 requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
111 addFacade(facade).
112 addZone(zone).
113 addIndicator(indicator).
114 toRequest();
115 Map<String, String> speciesMap = getService().toMap(speciesRequest);
116 if (MapUtils.isNotEmpty(speciesMap)) {
117 request.setSpecies(speciesMap.keySet().iterator().next());
118 }
119 }
120
121 result = getService().toFileResult(request);
122 return SUCCESS;
123 }
124
125 public String getFilename() {
126 return indicator + ".zip";
127 }
128
129 public InputStream getInputStream() {
130 InputStream input = result.getInputStream();
131 return input;
132 }
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 }