Mercurial > lada > lada-server
annotate src/main/java/de/intevation/lada/rest/AuditTrailService.java @ 1310:c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 08 Mar 2017 15:59:47 +0100 |
parents | d531e8e8afa2 |
children | 6fbfb8f0927a |
rev | line source |
---|---|
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.rest; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
9 |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
10 import java.text.DateFormat; |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
11 import java.text.ParseException; |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
12 import java.text.SimpleDateFormat; |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
13 import java.util.Date; |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 import java.util.HashMap; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 import java.util.Iterator; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 import java.util.List; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 import java.util.Map; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
18 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
19 import javax.annotation.PostConstruct; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
20 import javax.enterprise.context.RequestScoped; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 import javax.inject.Inject; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 import javax.persistence.EntityManager; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 import javax.servlet.http.HttpServletRequest; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 import javax.ws.rs.GET; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 import javax.ws.rs.Path; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 import javax.ws.rs.PathParam; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
27 import javax.ws.rs.Produces; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 import javax.ws.rs.core.Context; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 import javax.ws.rs.core.MediaType; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 import org.apache.log4j.Logger; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 import com.fasterxml.jackson.databind.ObjectMapper; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 import com.fasterxml.jackson.databind.node.ArrayNode; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 import com.fasterxml.jackson.databind.node.ObjectNode; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 import de.intevation.lada.model.land.AuditTrailMessung; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
38 import de.intevation.lada.model.land.AuditTrailProbe; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
39 import de.intevation.lada.model.land.Messung; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
40 import de.intevation.lada.model.land.Probe; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
41 import de.intevation.lada.util.annotation.AuthorizationConfig; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
42 import de.intevation.lada.util.annotation.RepositoryConfig; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
43 import de.intevation.lada.util.auth.Authorization; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
44 import de.intevation.lada.util.auth.AuthorizationType; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
45 import de.intevation.lada.util.data.QueryBuilder; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
46 import de.intevation.lada.util.data.Repository; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
47 import de.intevation.lada.util.data.RepositoryType; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
48 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
49 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
50 * REST service for AuditTrail. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
51 * <p> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
52 * The services produce data in the application/json media type. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
53 * All HTTP methods use the authorization module to determine if the user is |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 * allowed to perform the requested action. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 * A typical response holds information about the action performed and the data. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 * <pre> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 * <code> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 * { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 * "success": [boolean]; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 * "message": [string], |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 * "data":[{ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 * "id": [number], |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 * "identifier: [string] |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
64 * "audit": [array] |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
65 * }], |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
66 * } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
67 * </code> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
68 * </pre> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
69 * |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
70 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a> |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
71 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
72 @Path("rest/audit") |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
73 @RequestScoped |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
74 public class AuditTrailService { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
75 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
76 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
77 * Class to store tablename and value field for foreign key mappings. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
78 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
79 private class TableMapper { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
80 public String mappingTable; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
81 public String valueField; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
82 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
83 public TableMapper( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
84 String mappingTable, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
85 String valueField |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
86 ) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
87 this.mappingTable = mappingTable; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
88 this.valueField = valueField; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
89 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
90 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
91 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
92 @Inject Logger logger; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
93 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
94 * The data repository granting read/write access. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
95 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
96 @Inject |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
97 @RepositoryConfig(type=RepositoryType.RO) |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
98 private Repository repository; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
99 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
100 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
101 * The authorization module. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
102 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
103 @Inject |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
104 @AuthorizationConfig(type=AuthorizationType.HEADER) |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
105 private Authorization authorization; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
106 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
107 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
108 * Map foreign key to their associated table and the display value. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
109 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
110 private Map<String, TableMapper> mappings; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
111 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
112 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
113 * Initialize the object with key <-> table mappings. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
114 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
115 @PostConstruct |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
116 public void initialize() { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
117 mappings = new HashMap<String, TableMapper>(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
118 mappings.put("messgroesse_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
119 new TableMapper("messgroesse", "messgroesse")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
120 mappings.put("meh_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
121 new TableMapper("mess_einheit", "einheit")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
122 mappings.put("ort_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
123 new TableMapper("ort", "ort_id")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
124 mappings.put("datenbasis_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
125 new TableMapper("datenbasis", "datenbasis")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
126 mappings.put("ba_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
127 new TableMapper("betriebsart", "name")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
128 mappings.put("mpl_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
129 new TableMapper("messprogramm_kategorie", "code")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
130 mappings.put("probenart_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
131 new TableMapper("probenart", "probenart")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
132 mappings.put("probe_nehmer_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 new TableMapper("probenehmer", "prn_id")); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
134 mappings.put("probeentnahme_beginn", |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
135 new TableMapper("date", "dd.MM.yy HH:mm")); |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
136 mappings.put("probeentnahme_ende", |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
137 new TableMapper("date", "dd.MM.yy HH:mm")); |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
138 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
139 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
140 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
141 * Service to generate audit trail for probe objects. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
142 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
143 @GET |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
144 @Path("/probe/{id}") |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
145 @Produces(MediaType.APPLICATION_JSON) |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
146 public String getProbe( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
147 @Context HttpServletRequest request, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
148 @PathParam("id") String id |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
149 ) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
150 if (id == null || "".equals(id)) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
151 String ret = "{\"success\": false," + |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
152 "\"message\":698,\"data\":null}"; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
153 return ret; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
155 Integer pId = null; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 try { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 pId = Integer.valueOf(id); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 catch(NumberFormatException nfe) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
160 String ret = "{\"success\": false," + |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 "\"message\":600,\"data\":null}"; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 return ret; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
165 // Get all entries for the probe and its sub objects. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
166 QueryBuilder<AuditTrailProbe> builder = |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
167 new QueryBuilder<AuditTrailProbe>( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
168 repository.entityManager("land"), |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
169 AuditTrailProbe.class); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
170 builder.and("objectId", id); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
171 builder.and("tableName", "probe"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
172 builder.or("probeId", id); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
173 builder.orderBy("tstamp", true); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
174 List<AuditTrailProbe> audit = |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
175 repository.filterPlain(builder.getQuery(), "land"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
176 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
177 // Get the plain probe object to have the hauptproben_nr. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
178 // If only subobjects |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
179 Probe probe = repository.getByIdPlain(Probe.class, pId, "land"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 // Create an empty JsonObject |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 ObjectMapper mapper = new ObjectMapper(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
182 ObjectNode responseNode = mapper.createObjectNode(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
183 responseNode.put("success", true); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
184 responseNode.put("message", 200); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
185 ObjectNode auditJson = responseNode.putObject("data"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
186 ArrayNode entries = auditJson.putArray("audit"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
187 auditJson.put("id", probe.getId()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
188 auditJson.put("identifier", probe.getHauptprobenNr()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
189 for (AuditTrailProbe a : audit) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
190 entries.add(createEntry(a, mapper)); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
191 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
192 return responseNode.toString(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
193 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
194 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
195 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
196 * Create a JSON object for an AuditTrailProbe entry. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
197 * |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
198 * @param audit The table entry |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
199 * @param mapper JSON object mapper |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
200 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
201 private ObjectNode createEntry(AuditTrailProbe audit, ObjectMapper mapper) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
202 ObjectNode node = mapper.createObjectNode(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
203 node.put("timestamp", audit.getTstamp().getTime()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
204 node.put("type", audit.getTableName()); |
1308
db46646375e3
Added action to probe audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1304
diff
changeset
|
205 node.put("action", audit.getAction()); |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
206 ObjectNode data = (ObjectNode)audit.getChangedFields(); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
207 data = translateValues(data); |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
208 node.putPOJO("changedFields", data); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
209 if ("kommentar_p".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
210 node.put("identifier", audit.getRowData().get("datum").toString()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
211 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
212 if ("zusatz_wert".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
213 node.put("identifier", audit.getRowData().get("pzs_id").toString()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
214 } |
1304
e51c56914e52
Fixed typo in audit trail service.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1301
diff
changeset
|
215 if ("ortszuordnung".equals(audit.getTableName())) { |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
216 String value = translateId( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
217 "ort", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
218 "ort_id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
219 audit.getRowData().get("ort_id").toString(), |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
220 "id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
221 "stamm"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
222 node.put("identifier", value); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
223 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
224 if ("messung".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
225 logger.debug("npr: " + audit.getRowData()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
226 node.put("identifier", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
227 audit.getRowData() |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
228 .get("nebenproben_nr").toString().replaceAll("\"", "")); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
229 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
230 if (audit.getMessungsId() != null) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
231 Messung m = repository.getByIdPlain( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
232 Messung.class, audit.getMessungsId(), "land"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
233 ObjectNode identifier = node.putObject("identifier"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
234 identifier.put("messung", m.getNebenprobenNr()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
235 if ("kommentar_m".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
236 identifier.put("identifier", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
237 audit.getRowData().get("datum").toString()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
238 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
239 if ("messwert".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
240 String value = translateId( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
241 "messgroesse", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
242 "messgroesse", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
243 audit.getRowData().get("messgroesse_id").toString(), |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
244 "id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
245 "stamm"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
246 identifier.put("identifier", value); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
247 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
248 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
249 return node; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
250 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
251 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
252 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
253 * Service to generate audit trail for messung objects. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
254 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
255 @GET |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
256 @Path("/messung/{id}") |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
257 @Produces(MediaType.APPLICATION_JSON) |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
258 public String getMessung( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
259 @Context HttpServletRequest request, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
260 @PathParam("id") String id |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
261 ) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
262 if (id == null || "".equals(id)) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
263 String ret = "{\"success\": false," + |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
264 "\"message\":698,\"data\":null}"; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
265 return ret; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
266 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
267 Integer mId = null; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
268 try { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
269 mId = Integer.valueOf(id); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
270 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
271 catch(NumberFormatException nfe) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
272 String ret = "{\"success\": false," + |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
273 "\"message\":600,\"data\":null}"; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
274 return ret; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
275 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
276 QueryBuilder<AuditTrailMessung> builder = |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
277 new QueryBuilder<AuditTrailMessung>( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
278 repository.entityManager("land"), |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
279 AuditTrailMessung.class); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
280 builder.and("objectId", mId); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
281 builder.and("tableName", "messung"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
282 builder.or("messungsId", mId); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
283 builder.orderBy("tstamp", true); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
284 List<AuditTrailMessung> audit = |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
285 repository.filterPlain(builder.getQuery(), "land"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
286 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
287 Messung messung = repository.getByIdPlain(Messung.class, mId, "land"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
288 // Create an empty JsonObject |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
289 ObjectMapper mapper = new ObjectMapper(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
290 ObjectNode responseNode = mapper.createObjectNode(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
291 responseNode.put("success", true); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
292 responseNode.put("message", 200); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
293 ObjectNode auditJson = responseNode.putObject("data"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
294 ArrayNode entries = auditJson.putArray("audit"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
295 auditJson.put("id", messung.getId()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
296 auditJson.put("identifier", messung.getNebenprobenNr()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
297 for (AuditTrailMessung a : audit) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
298 entries.add(createEntry(a, mapper)); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
299 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
300 return responseNode.toString(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
301 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
302 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
303 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
304 * Create a JSON object for an AuditTrailMessung entry. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
305 * |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
306 * @param audit The table entry |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
307 * @param mapper JSON object mapper |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
308 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
309 private ObjectNode createEntry(AuditTrailMessung audit, ObjectMapper mapper) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
310 ObjectNode node = mapper.createObjectNode(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
311 node.put("timestamp", audit.getTstamp().getTime()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
312 node.put("type", audit.getTableName()); |
1308
db46646375e3
Added action to probe audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1304
diff
changeset
|
313 node.put("action", audit.getAction()); |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
314 ObjectNode data = (ObjectNode)audit.getChangedFields(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
315 node.putPOJO("changedFields", data); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
316 if ("kommentar_m".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
317 node.put("identifier", audit.getRowData().get("datum").toString()); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
318 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
319 if ("messwert".equals(audit.getTableName())) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
320 String value = translateId( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
321 "messgroesse", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
322 "messgroesse", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
323 audit.getRowData().get("messgroesse_id").toString(), |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
324 "id", |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
325 "stamm"); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
326 node.put("identifier", value); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
327 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
328 return node; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
329 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
330 |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
331 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
332 * Translate a foreign key into the associated value. |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
333 */ |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
334 private String translateId( |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
335 String table, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
336 String field, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
337 String id, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
338 String idField, |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
339 String source |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
340 ) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
341 EntityManager manager = repository.entityManager(source); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
342 String sql = "SELECT " + field + " FROM " + table + |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
343 " WHERE " + idField + " = " + id + ";"; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
344 javax.persistence.Query query = manager.createNativeQuery(sql); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
345 List<String> result = query.getResultList(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
346 return result.get(0); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
347 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
348 |
1310
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
349 private Long formatDate(String format, String date) { |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
350 DateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssXXX"); |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
351 try { |
1310
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
352 return inFormat.parse(date).getTime(); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
353 } catch (ParseException e) { |
1310
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
354 return 0L; |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
355 } |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
356 } |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
357 |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
358 /** |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
359 * Translate all known foreign keys |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
360 */ |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
361 private ObjectNode translateValues(ObjectNode node) { |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
362 for (Iterator<String> i = node.fieldNames(); i.hasNext();) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
363 String key = i.next(); |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
364 if (mappings.containsKey(key)) { |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
365 TableMapper m = mappings.get(key); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
366 if (m.mappingTable.equals("date")) { |
1310
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
367 Long value = formatDate(m.valueField, node.get(key).asText()); |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
368 node.put(key, value); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
369 } |
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
370 else { |
1310
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
371 String value = translateId( |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
372 m.mappingTable, |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
373 m.valueField, |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
374 node.get(key).asText(), |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
375 "id", |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
376 "stamm"); |
c5721e624c0e
Insert timestamp into audit trail changed fields instead of date string.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1309
diff
changeset
|
377 node.put(key, value); |
1309
d531e8e8afa2
Format date values for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1308
diff
changeset
|
378 } |
1301
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
379 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
380 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
381 return node; |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
382 } |
a3f281b350f2
Added service for audit trail.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
383 } |