annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportSedimentDensity.java @ 3940:aed7aba93718

Improved logging and stabilized minfo import. flys-backend/trunk@5500 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 18 Sep 2012 04:20:33 +0000
parents 8979f2294af9
children 43aa1ac8614b
rev   line source
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
3 import java.sql.SQLException;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
4
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import java.util.ArrayList;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import java.util.List;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import org.apache.log4j.Logger;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
10 import org.hibernate.Session;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
11 import org.hibernate.Query;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
12 import org.hibernate.exception.ConstraintViolationException;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
13
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import de.intevation.flys.model.River;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import de.intevation.flys.model.SedimentDensity;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 public class ImportSedimentDensity {
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 private static Logger log = Logger.getLogger(ImportSedimentDensity.class);
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 protected SedimentDensity peer;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 protected ImportDepth depth;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26
2816
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
27 protected ImportUnit unit;
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
28
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
29 protected String description;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
30
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 protected List<ImportSedimentDensityValue> values;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
34 public ImportSedimentDensity(String description) {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
35 this.description = description;
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
36 this.values = new ArrayList<ImportSedimentDensityValue>();
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
37 }
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
38
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
39
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
40 public String getDescription() {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
41 return description;
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public void setDepth(ImportDepth depth) {
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 this.depth = depth;
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
2816
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
50 public void setUnit(ImportUnit unit) {
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
51 this.unit = unit;
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
52 }
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
53
70b4a31a3306 Implemented the method stubs of the parser for sediment density and made some db schema adaptions.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2813
diff changeset
54
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 public void addValue(ImportSedimentDensityValue value) {
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 values.add(value);
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
60 public void storeDependencies(River river)
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
61 throws SQLException, ConstraintViolationException
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
62 {
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 log.info("store dependencies");
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
64
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
65 if (depth != null) {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
66 depth.storeDependencies();
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
67 }
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
68
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
69 log.info("store sediment density values.");
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
70
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
71 SedimentDensity peer = getPeer(river);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
72
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
73 for (ImportSedimentDensityValue value: values) {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
74 value.storeDependencies(peer);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
75 }
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 public SedimentDensity getPeer(River river) {
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 log.info("get peer");
3940
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
81
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
82 if (depth == null) {
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
83 log.warn("cannot store sediment density '" + description + "': no depth");
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
84 return null;
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
85 }
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
86
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
87 if (unit == null) {
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
88 log.warn("cannot store sediment density '" + description + "': no unit");
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
89 return null;
aed7aba93718 Improved logging and stabilized minfo import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2817
diff changeset
90 }
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91
2817
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
92 if (peer == null) {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
93 Session session = ImporterSession.getInstance().getDatabaseSession();
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
94
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
95 Query query = session.createQuery(
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
96 "from SedimentDensity where " +
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
97 " river=:river and " +
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
98 " depth=:depth and " +
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
99 " unit=:unit");
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
100
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
101 query.setParameter("river", river);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
102 query.setParameter("depth", depth.getPeer());
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
103 query.setParameter("unit", unit.getPeer());
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
104
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
105 List<SedimentDensity> density = query.list();
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
106
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
107 if (density.isEmpty()) {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
108 log.debug("Create new SedimentDensity DB instance.");
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
109
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
110 peer = new SedimentDensity(
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
111 river,
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
112 depth.getPeer(),
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
113 unit.getPeer(),
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
114 description);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
115
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
116 session.save(peer);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
117 }
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
118 else {
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
119 peer = density.get(0);
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
120 }
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
121 }
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
122
8979f2294af9 Finished parsing MINFO specific sediment density.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2816
diff changeset
123 return peer;
2813
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 }
f121c0f456ab Added new importer classes used during MINFO sediment density import.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org