Mercurial > dive4elements > river
comparison flys-backend/src/main/java/org/dive4elements/river/importer/ImportMeasurementStation.java @ 5828:dfb26b03b179
Moved directories to org.dive4elements.river
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 11:53:11 +0200 |
parents | flys-backend/src/main/java/de/intevation/flys/importer/ImportMeasurementStation.java@bc140668db82 |
children | 18619c1e7c2a |
comparison
equal
deleted
inserted
replaced
5827:e308d4ecd35a | 5828:dfb26b03b179 |
---|---|
1 package de.intevation.flys.importer; | |
2 | |
3 import java.util.List; | |
4 | |
5 import org.apache.log4j.Logger; | |
6 import org.hibernate.Session; | |
7 | |
8 import de.intevation.flys.model.Gauge; | |
9 import de.intevation.flys.model.MeasurementStation; | |
10 import de.intevation.flys.model.Range; | |
11 import de.intevation.flys.model.River; | |
12 import de.intevation.flys.model.TimeInterval; | |
13 | |
14 | |
15 public class ImportMeasurementStation { | |
16 | |
17 private static final Logger log = Logger | |
18 .getLogger(ImportMeasurementStation.class); | |
19 | |
20 private MeasurementStation peer; | |
21 | |
22 public String name; | |
23 public Double station; | |
24 public ImportRange range; | |
25 public String measurementType; | |
26 public String riverside; | |
27 public String gauge; | |
28 public ImportTimeInterval observationTimerange; | |
29 public String operator; | |
30 public String description; | |
31 | |
32 public ImportMeasurementStation() { | |
33 } | |
34 | |
35 private Gauge getGaugeFromDB() { | |
36 Session session = ImporterSession.getInstance().getDatabaseSession(); | |
37 | |
38 org.hibernate.Query query = session | |
39 .createQuery("FROM Gauge WHERE name=:name"); | |
40 | |
41 query.setParameter("name", gauge); | |
42 List<Gauge> gauges = query.list(); | |
43 | |
44 return gauges.isEmpty() ? null : gauges.get(0); | |
45 } | |
46 | |
47 public boolean storeDependencies(River river) { | |
48 getPeer(river); | |
49 | |
50 return peer != null; | |
51 } | |
52 | |
53 public Object getPeer(River river) { | |
54 if (peer == null) { | |
55 Gauge gauge = null; | |
56 try { | |
57 gauge = getGaugeFromDB(); | |
58 if (gauge == null) { | |
59 log.warn("No gauge found for measurement station '" + name | |
60 + "'"); | |
61 } | |
62 } | |
63 catch (Exception e) { | |
64 log.error("Exception: " + e.getMessage()); | |
65 } | |
66 | |
67 Range range = null; | |
68 | |
69 if (this.range != null) { | |
70 range = this.range.getPeer(river); | |
71 } | |
72 | |
73 if (range == null) { | |
74 log.warn("No range found for measurement station '" + name + "'"); | |
75 } | |
76 | |
77 TimeInterval observationTimerange = this.observationTimerange | |
78 .getPeer(); | |
79 if (observationTimerange == null) { | |
80 log.warn("No time range found for measurement station '" | |
81 + name + "'"); | |
82 } | |
83 | |
84 Session session = ImporterSession.getInstance() | |
85 .getDatabaseSession(); | |
86 | |
87 org.hibernate.Query query = session | |
88 .createQuery( | |
89 "FROM MeasurementStation " + | |
90 "WHERE river=:river" + | |
91 " AND station=:station " + | |
92 " AND measurement_type=:measurement_type "); | |
93 | |
94 query.setParameter("river", river); | |
95 query.setParameter("station", station); | |
96 query.setParameter("measurement_type", measurementType); | |
97 | |
98 List<MeasurementStation> stations = query.list(); | |
99 | |
100 if (stations.isEmpty()) { | |
101 log.info("create new measurement station '" + name + "'"); | |
102 | |
103 peer = new MeasurementStation(river, name, measurementType, | |
104 riverside, station, range, gauge, this.gauge, | |
105 observationTimerange, operator, description); | |
106 | |
107 session.save(peer); | |
108 } | |
109 } | |
110 | |
111 return peer; | |
112 } | |
113 } |