view 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 source
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