annotate src/main/java/de/intevation/lada/rest/importer/LafImportService.java @ 1069:fdc752cd17fe schema-update

Removed old importer stuff and added new Importer based on antlr4 grammar. WIP! Currently only the parser without mapping to objects
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 30 Sep 2016 14:05:28 +0200
parents 5bdd1631a451
children 7683c4162746
rev   line source
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
3 *
629
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
4 * This file is Free Software under the GNU GPL (v>=3)
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
6 * the documentation coming with IMIS-Labordaten-Application for details.
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
7 */
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
8 package de.intevation.lada.rest.importer;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
9
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10 import java.util.HashMap;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.util.Map;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13 import javax.enterprise.context.RequestScoped;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
14 import javax.inject.Inject;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15 import javax.servlet.http.HttpServletRequest;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
16 import javax.ws.rs.Consumes;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 import javax.ws.rs.POST;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
18 import javax.ws.rs.Path;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19 import javax.ws.rs.Produces;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
20 import javax.ws.rs.core.Context;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
21 import javax.ws.rs.core.MediaType;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
22
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
23 import de.intevation.lada.importer.ImportConfig;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 import de.intevation.lada.importer.ImportFormat;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25 import de.intevation.lada.importer.Importer;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26 import de.intevation.lada.util.annotation.AuthorizationConfig;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27 import de.intevation.lada.util.auth.Authorization;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 import de.intevation.lada.util.auth.AuthorizationType;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29 import de.intevation.lada.util.auth.UserInfo;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 import de.intevation.lada.util.rest.Response;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 /**
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 * This class produces a RESTful service to interact with probe objects.
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 *
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 */
1069
fdc752cd17fe Removed old importer stuff and added new Importer based on antlr4 grammar.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 827
diff changeset
37 @Path("data/import")
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 @RequestScoped
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39 public class LafImportService {
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40
629
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
41 /**
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
42 * The importer
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
43 */
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 @Inject
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 @ImportConfig(format=ImportFormat.LAF)
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 private Importer importer;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47
629
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
48 /**
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
49 * The authorization module.
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
50 */
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 @Inject
722
c81881dac97e Switch to shibboleth authorization in all REST-services.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 684
diff changeset
52 @AuthorizationConfig(type=AuthorizationType.HEADER)
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 private Authorization authorization;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 /**
629
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
56 * Import a LAF formatted file.
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 *
629
3bbfdef05ee1 Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 617
diff changeset
58 * @param input String containing file content.
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 * @param header The HTTP header containing authorization information.
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 * @return Response object.
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 */
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 @POST
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 @Path("/laf")
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 @Produces(MediaType.APPLICATION_JSON)
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 @Consumes(MediaType.TEXT_PLAIN)
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 public Response upload(
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 String content,
1069
fdc752cd17fe Removed old importer stuff and added new Importer based on antlr4 grammar.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 827
diff changeset
68 @Context HttpServletRequest request
fdc752cd17fe Removed old importer stuff and added new Importer based on antlr4 grammar.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 827
diff changeset
69 ) {
612
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 UserInfo userInfo = authorization.getInfo(request);
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
72 importer.doImport(content, userInfo);
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
73 Map<String, Object> respData = new HashMap<String,Object>();
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
74 respData.put("errors", importer.getErrors());
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 respData.put("warnings", importer.getWarnings());
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 int code = 200;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 Response response = new Response(importer.getErrors().isEmpty(), code, respData);
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78 importer.reset();
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 return response;
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 }
23ab3247b36e Added REST services for Im-/Export for laf files.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)