diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-backend/src/main/java/org/dive4elements/river/importer/ImportMeasurementStation.java	Thu Apr 25 11:53:11 2013 +0200
@@ -0,0 +1,113 @@
+package de.intevation.flys.importer;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Session;
+
+import de.intevation.flys.model.Gauge;
+import de.intevation.flys.model.MeasurementStation;
+import de.intevation.flys.model.Range;
+import de.intevation.flys.model.River;
+import de.intevation.flys.model.TimeInterval;
+
+
+public class ImportMeasurementStation {
+
+    private static final Logger log = Logger
+        .getLogger(ImportMeasurementStation.class);
+
+    private MeasurementStation peer;
+
+    public String name;
+    public Double station;
+    public ImportRange range;
+    public String measurementType;
+    public String riverside;
+    public String gauge;
+    public ImportTimeInterval observationTimerange;
+    public String operator;
+    public String description;
+
+    public ImportMeasurementStation() {
+    }
+
+    private Gauge getGaugeFromDB() {
+        Session session = ImporterSession.getInstance().getDatabaseSession();
+
+        org.hibernate.Query query = session
+            .createQuery("FROM Gauge WHERE name=:name");
+
+        query.setParameter("name", gauge);
+        List<Gauge> gauges = query.list();
+
+        return gauges.isEmpty() ? null : gauges.get(0);
+    }
+
+    public boolean storeDependencies(River river) {
+        getPeer(river);
+
+        return peer != null;
+    }
+
+    public Object getPeer(River river) {
+        if (peer == null) {
+            Gauge gauge = null;
+            try {
+                gauge = getGaugeFromDB();
+                if (gauge == null) {
+                    log.warn("No gauge found for measurement station '" + name
+                        + "'");
+                }
+            }
+            catch (Exception e) {
+                log.error("Exception: " + e.getMessage());
+            }
+
+            Range range = null;
+
+            if (this.range != null) {
+                range = this.range.getPeer(river);
+            }
+
+            if (range == null) {
+                log.warn("No range found for measurement station '" + name + "'");
+            }
+
+            TimeInterval observationTimerange = this.observationTimerange
+                .getPeer();
+            if (observationTimerange == null) {
+                log.warn("No time range found for measurement station '"
+                    + name + "'");
+            }
+
+            Session session = ImporterSession.getInstance()
+                .getDatabaseSession();
+
+            org.hibernate.Query query = session
+                .createQuery(
+                    "FROM MeasurementStation " +
+                    "WHERE river=:river" +
+                    "   AND station=:station " +
+                    "   AND measurement_type=:measurement_type ");
+
+            query.setParameter("river", river);
+            query.setParameter("station", station);
+            query.setParameter("measurement_type", measurementType);
+
+            List<MeasurementStation> stations = query.list();
+
+            if (stations.isEmpty()) {
+                log.info("create new measurement station '" + name + "'");
+
+                peer = new MeasurementStation(river, name, measurementType,
+                    riverside, station, range, gauge, this.gauge,
+                    observationTimerange, operator, description);
+
+                session.save(peer);
+            }
+        }
+
+        return peer;
+    }
+}

http://dive4elements.wald.intevation.org