Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/LProbeService.java @ 321:5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 23 Aug 2013 11:35:24 +0200 |
parents | f0e1caad6027 |
children | 30883ab746a5 |
rev | line source |
---|---|
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
1 package de.intevation.lada.rest; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
2 |
321
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
3 import java.io.IOException; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
4 import java.io.InputStream; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
5 import java.util.ArrayList; |
321
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
6 import java.util.HashMap; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
7 import java.util.LinkedList; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
8 import java.util.List; |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
9 import java.util.Map; |
17
4ed66a87c0c4
Added missing import.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
15
diff
changeset
|
10 import java.util.logging.Logger; |
15
624611a29348
Provide GET method to load a list of proben.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
8
diff
changeset
|
11 |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
12 import javax.enterprise.context.RequestScoped; |
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
13 import javax.inject.Inject; |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
14 import javax.inject.Named; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
15 import javax.ws.rs.Consumes; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
16 import javax.ws.rs.GET; |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
17 import javax.ws.rs.POST; |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
18 import javax.ws.rs.PUT; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
19 import javax.ws.rs.Path; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
20 import javax.ws.rs.PathParam; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
21 import javax.ws.rs.Produces; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
22 import javax.ws.rs.core.Context; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
23 import javax.ws.rs.core.HttpHeaders; |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
24 import javax.ws.rs.core.MultivaluedMap; |
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
25 import javax.ws.rs.core.UriInfo; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
26 |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
27 import org.apache.commons.io.IOUtils; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
28 import org.jboss.resteasy.plugins.providers.multipart.InputPart; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
29 import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
30 import org.json.JSONArray; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
31 import org.json.JSONException; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
32 import org.json.JSONObject; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
33 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
34 import de.intevation.lada.auth.Authentication; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
35 import de.intevation.lada.auth.AuthenticationException; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
36 import de.intevation.lada.auth.AuthenticationResponse; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
37 import de.intevation.lada.auth.Authorization; |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
38 import de.intevation.lada.data.LProbeRepository; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
39 import de.intevation.lada.data.QueryBuilder; |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
40 import de.intevation.lada.data.Repository; |
321
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
41 import de.intevation.lada.data.importer.Importer; |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
42 import de.intevation.lada.model.LProbe; |
139
fda177c59d1f
Updated service and repository to use the extended LProbeInfo object.
Raimund Renkert <rrenkert@intevation.de>
parents:
131
diff
changeset
|
43 import de.intevation.lada.model.LProbeInfo; |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
44 import de.intevation.lada.utils.QueryTools; |
289
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
45 |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
46 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
47 * This class produces a RESTful service to read, write and update |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
48 * LProbe objects. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
49 * |
77
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
50 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
8af2a920f974
Formatting.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
75
diff
changeset
|
51 */ |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
52 @Path("/proben") |
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
53 @RequestScoped |
45
a5ee8d69c0b4
Renamed existing rest services and make use of the generic repository.
Raimund Renkert <rrenkert@intevation.de>
parents:
39
diff
changeset
|
54 public class LProbeService { |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
55 |
39 | 56 /** |
57 * The Repository for LProbe. | |
58 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
59 @Inject |
131
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
60 @Named("lproberepository") |
4e181a4aaab0
Refactored the entity repositories.
Raimund Renkert <rrenkert@intevation.de>
parents:
107
diff
changeset
|
61 private Repository repository; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
62 |
223
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
63 @Inject |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
64 @Named("lmessungrepository") |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
65 private Repository messungRepository; |
d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
Raimund Renkert <rrenkert@intevation.de>
parents:
210
diff
changeset
|
66 |
39 | 67 /** |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
68 * The authorization module. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
69 */ |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
70 @Inject |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
71 @Named("ldapauth") |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
72 private Authentication authentication; |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
73 |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
74 @Inject |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
75 @Named("dataauthorization") |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
76 private Authorization authorization; |
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
77 |
321
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
78 @Inject |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
79 @Named("lafimporter") |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
80 private Importer importer; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
81 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
82 /** |
39 | 83 * The logger for this class. |
84 */ | |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
85 @Inject |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
86 private Logger log; |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
87 |
39 | 88 /** |
89 * Request a LProbe via its id. | |
90 * | |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
91 * @param id The LProbe id |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
92 * @param header THe HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
93 * @return Response object. |
39 | 94 */ |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
95 @GET |
36
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
96 @Path("/{id}") |
8155d2ed5cb8
Use String for lprobe id.
Raimund Renkert <rrenkert@intevation.de>
parents:
35
diff
changeset
|
97 @Produces("text/json") |
188
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
98 public Response findById( |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
99 @PathParam("id") String id, |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
100 @Context HttpHeaders header |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
101 ) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
102 try { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
103 AuthenticationResponse auth = |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
104 authentication.authorizedGroups(header); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
105 Response response = |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
106 repository.findById(LProbeInfo.class, id); |
232
d8a3d188046f
Renamed package authentication to auth.
Raimund Renkert <rrenkert@intevation.de>
parents:
231
diff
changeset
|
107 @SuppressWarnings("unchecked") |
188
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
108 List<LProbeInfo> probe = (List<LProbeInfo>)response.getData(); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
109 if (probe.isEmpty()) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
110 return new Response(false, 601, new ArrayList<LProbeInfo>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
111 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
112 String nbId = probe.get(0).getNetzbetreiberId(); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
113 String mstId = probe.get(0).getMstId(); |
234
0d545e6d1885
Return LProbe objects with "fertig" flag = true.
Raimund Renkert <rrenkert@intevation.de>
parents:
233
diff
changeset
|
114 if (auth.getNetzbetreiber().contains(nbId) || |
0d545e6d1885
Return LProbe objects with "fertig" flag = true.
Raimund Renkert <rrenkert@intevation.de>
parents:
233
diff
changeset
|
115 probe.get(0).getFertig()) { |
188
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
116 if (auth.getMst().contains(mstId)) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
117 return response; |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
118 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
119 return response; |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
120 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
121 return new Response(false, 698, new ArrayList<LProbe>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
122 } |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
123 catch(AuthenticationException ae) { |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
124 return new Response(false, 699, new ArrayList<LProbe>()); |
bc8e6d6f5eb1
Use authentication in lprobe 'findById'.
Raimund Renkert <rrenkert@intevation.de>
parents:
182
diff
changeset
|
125 } |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
126 } |
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
127 |
80
75d42f8063f8
Formatting
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
77
diff
changeset
|
128 /** |
39 | 129 * Request LProbe via a filter. |
130 * | |
131 * Query parameters are used for the filter in form of key-value pairs. | |
132 * This filter can take the three parameters | |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
234
diff
changeset
|
133 * mstId=$MSTID (String) |
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
234
diff
changeset
|
134 * umwId=$UWBID (String) |
39 | 135 * begin=$PROBEENTNAHMEBEGIN (Timestamp) |
136 * | |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
137 * @param info The URL query parameters. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
138 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
139 * @return Response object. |
39 | 140 */ |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
141 @GET |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
142 @Produces("text/json") |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
143 public Response filter( |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
144 @Context UriInfo info, |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
145 @Context HttpHeaders header |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
146 ) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
147 try { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
148 AuthenticationResponse auth = |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
149 authentication.authorizedGroups(header); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
150 QueryBuilder<LProbeInfo> builder = |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
151 new QueryBuilder<LProbeInfo>( |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
152 repository.getEntityManager(), |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
153 LProbeInfo.class); |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
154 |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
155 MultivaluedMap<String, String> params = info.getQueryParameters(); |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
156 if (params.isEmpty() || !params.containsKey("qid")) { |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
157 return repository.filter(builder.getQuery()); |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
158 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
159 String qid = params.getFirst("qid"); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
160 JSONObject query = QueryTools.getQueryById(qid); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
161 List<String> filters = new ArrayList<String>(); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
162 List<String> results = new ArrayList<String>(); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
163 String sql = ""; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
164 try { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
165 sql = query.getString("sql"); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
166 JSONArray jFilters = query.getJSONArray("filters"); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
167 for (int i = 0; i < jFilters.length(); i++) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
168 JSONObject jFilter = jFilters.getJSONObject(i); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
169 filters.add(jFilter.getString("dataIndex")); |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
170 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
171 JSONArray jResults = query.getJSONArray("result"); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
172 for (int i = 0; i < jResults.length(); i++) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
173 JSONObject jResult = jResults.getJSONObject(i); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
174 results.add(jResult.getString("dataIndex")); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
175 } |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
176 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
177 catch (JSONException e) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
178 return new Response(false, 603, new ArrayList<LProbeInfo>()); |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
179 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
180 |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
181 if (sql == null || sql.length() == 0) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
182 return new Response(false, 603, new ArrayList<LProbeInfo>()); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
183 } |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
184 LProbeRepository lpr = (LProbeRepository)repository; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
185 String subselect = "(select * from l_probe_info where "; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
186 List<String> netzbetreiberIds = auth.getNetzbetreiber(); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
187 boolean first = true; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
188 for (String netzbetreiberId: netzbetreiberIds) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
189 if (first) { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
190 subselect += "netzbetreiber_id = '" + netzbetreiberId + "' "; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
191 first = false; |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
192 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
193 else { |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
194 subselect += "or netzbetreiber_id = '" + netzbetreiberId + "' "; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
195 } |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
196 } |
305
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
197 subselect += "or fertig = true) as lp"; |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
198 sql = sql.replace("l_probe", subselect); |
f0e1caad6027
Use sql queries from config to get proben.
Raimund Renkert <rrenkert@intevation.de>
parents:
289
diff
changeset
|
199 return lpr.filterFree(sql, filters, results, params); |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
200 } |
182
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
201 catch(AuthenticationException ae) { |
a2e04ab2cd44
Use the new filter and query builder and have authentication for LProbeInfo objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
169
diff
changeset
|
202 return new Response(false, 699, new ArrayList<LProbe>()); |
35
f425150ea2b5
New filter option in LProbe GET request.
Raimund Renkert <rrenkert@intevation.de>
parents:
29
diff
changeset
|
203 } |
29
c5930d01e0ab
Package renaming and code cosmetics.
Raimund Renkert <rrenkert@intevation.de>
parents:
24
diff
changeset
|
204 } |
62
0b3f58cbbd75
Added comment on expected return values.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
55
diff
changeset
|
205 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
206 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
207 * Update a LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
208 * |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
209 * @param probe A LProbeInfo object wrapping the LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
210 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
211 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
212 */ |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
213 @PUT |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
214 @Path("/{id}") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
215 @Produces("text/json") |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
216 @Consumes("application/json") |
207
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
217 public Response update(LProbeInfo probe, @Context HttpHeaders header) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
218 try { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
219 if(authentication.hasAccess(header, probe.getProbeId())) { |
233
b619f6552f55
Fixed update of LProbe objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
220 LProbe p = probe.toLProbe(); |
b619f6552f55
Fixed update of LProbe objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
221 p.setProbeId(probe.getProbeId()); |
b619f6552f55
Fixed update of LProbe objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
232
diff
changeset
|
222 return repository.update(p); |
207
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
223 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
224 return new Response(false, 698, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
225 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
226 catch(AuthenticationException ae) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
227 return new Response(false, 699, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
228 } |
73
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
229 } |
354deea8e738
Fixed generating return value for Create and Update.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
70
diff
changeset
|
230 |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
231 /** |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
232 * Create a new LProbe object. |
263
2098db2e8fbd
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
234
diff
changeset
|
233 * |
210
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
234 * @param probe A LProbeInfo object wrapping the LProbe object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
235 * @param header The HTTP header containing authorization information. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
236 * @return Response object. |
a305412206a3
Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents:
207
diff
changeset
|
237 */ |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
238 @POST |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
239 @Produces("text/json") |
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
240 @Consumes("application/json") |
207
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
241 public Response create(LProbeInfo probe, @Context HttpHeaders header) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
242 try { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
243 AuthenticationResponse auth = |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
244 authentication.authorizedGroups(header); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
245 if (auth.getNetzbetreiber().contains(probe.getNetzbetreiberId()) && |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
246 auth.getMst().contains(probe.getMstId())) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
247 LProbe p = probe.toLProbe(); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
248 return repository.create(p); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
249 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
250 return new Response(false, 698, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
251 } |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
252 catch(AuthenticationException ae) { |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
253 return new Response(false, 699, new ArrayList<LProbeInfo>()); |
fe05c016cdb6
Added authorization to create and update in lprobe service.
Raimund Renkert <rrenkert@intevation.de>
parents:
189
diff
changeset
|
254 } |
66
54ff6ded05b2
New service to create a LProbe.
Raimund Renkert <rrenkert@intevation.de>
parents:
62
diff
changeset
|
255 } |
289
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
256 /** |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
257 * Import LProbe object. |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
258 * See |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
259 * http://howtodoinjava.com/2013/05/21/jax-rs-resteasy-file-upload-httpclient-example/ |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
260 * for more details on the implementation. |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
261 * |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
262 * @param input MulitpartFormDataInput containing the file to upload. |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
263 * @param header The HTTP header containing authorization information. |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
264 * @return Response object. |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
265 */ |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
266 @POST |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
267 @Path("/import") |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
268 @Produces("application/json") |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
269 @Consumes("multipart/form-data") |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
270 public Response upload(MultipartFormDataInput input, @Context HttpHeaders header) { |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
271 try { |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
272 AuthenticationResponse auth = authentication.authorizedGroups(header); |
321
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
273 if (!authentication.isAuthorizedUser(header)) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
274 return new Response(false, 698, null); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
275 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
276 |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
277 String name = ""; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
278 String content = ""; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
279 Map<String, List<InputPart>> data = input.getFormDataMap(); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
280 try { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
281 List<InputPart> parts = input.getParts(); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
282 for (InputPart part: parts) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
283 InputStream inStream = part.getBody(InputStream.class, null); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
284 MultivaluedMap<String, String> headers = part.getHeaders(); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
285 String[] cDisp = headers.getFirst("content-disposition").split(";"); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
286 for (String fName : cDisp) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
287 if (fName.trim().startsWith("filename")) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
288 String[] fileName = fName.split("="); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
289 name = fileName[1].trim().replace("\"", ""); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
290 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
291 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
292 content = IOUtils.toString(inStream); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
293 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
294 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
295 catch (IOException e) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
296 return new Response(false, 603, null); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
297 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
298 |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
299 boolean success = importer.importData(content, auth); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
300 List<Object> respData = new LinkedList<Object>(); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
301 respData.add(importer.getErrors()); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
302 respData.add(importer.getWarnings()); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
303 Map<String, String> fileData = new HashMap<String, String>(); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
304 fileData.put("filename", name); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
305 respData.add(fileData); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
306 int code = 200; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
307 if (!success) { |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
308 code = 660; |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
309 } |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
310 Response response = new Response(success, code, respData); |
5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
Raimund Renkert <rrenkert@intevation.de>
parents:
305
diff
changeset
|
311 return response; |
289
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
312 // TODO: Check Authorisation. How should we check the |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
313 // authorisation while importing? I think we must differ between |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
314 // updating already existing proben and creating new proben. (ti) |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
315 // <2013-08-13 16:24> |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
316 //if (auth.getNetzbetreiber().contains(probe.getNetzbetreiberId()) && |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
317 // auth.getMst().contains(probe.getMstId())) { |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
318 // LProbe p = probe.toLProbe(); |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
319 // return repository.create(p); |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
320 //} |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
321 // TODO: Response must contain a "file" attribute with the name of |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
322 // the uploaded file.(ti) <2013-08-13 16:23> |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
323 //return new Response(false, 698, null); |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
324 } |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
325 catch(AuthenticationException ae) { |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
326 return new Response(false, 699, null); |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
327 } |
f4701a64e8a3
Added upload function to the ProbenService. Must be implemented.
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
263
diff
changeset
|
328 } |
8
1016bcc08bb3
Added stub for REST service for Proben
Torsten Irländer <torsten.irlaender@intevation.de>
parents:
diff
changeset
|
329 } |