teichmann@5844: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5844: * Software engineering by Intevation GmbH teichmann@5844: * teichmann@5992: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5844: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5992: * documentation coming with Dive4Elements River for details. teichmann@5844: */ teichmann@5844: teichmann@5829: package org.dive4elements.river.importer; ingo@2831: ingo@2832: import java.util.ArrayList; ingo@2831: import java.util.List; ingo@2831: ingo@2831: import org.apache.log4j.Logger; ingo@2831: ingo@2831: import org.hibernate.Session; ingo@2831: import org.hibernate.Query; ingo@2831: teichmann@5829: import org.dive4elements.river.model.FlowVelocityMeasurement; teichmann@5829: import org.dive4elements.river.model.River; ingo@2831: ingo@2831: ingo@2831: public class ImportFlowVelocityMeasurement { ingo@2831: ingo@3943: private static final Logger log = Logger ingo@3943: .getLogger(ImportFlowVelocityMeasurement.class); ingo@2831: ingo@2831: private String description; ingo@2831: ingo@2831: private List values; ingo@2831: ingo@2831: private FlowVelocityMeasurement peer; ingo@2831: ingo@2831: public ImportFlowVelocityMeasurement() { ingo@2831: this(null); ingo@2831: } ingo@2831: ingo@2831: public ImportFlowVelocityMeasurement(String description) { ingo@2831: this.description = description; ingo@3943: this.values = new ArrayList(); ingo@2832: } ingo@2832: ingo@2832: public void setDescription(String description) { ingo@2832: this.description = description; ingo@2832: } ingo@2832: ingo@2832: public void addValue(ImportFlowVelocityMeasurementValue value) { ingo@2832: this.values.add(value); ingo@2831: } ingo@2831: tom@5416: public void storeDependencies(River river) { ingo@2831: log.debug("store dependencies"); ingo@2831: ingo@2831: FlowVelocityMeasurement peer = getPeer(river); ingo@2831: ingo@3943: if (peer != null) { ingo@3943: for (ImportFlowVelocityMeasurementValue value : values) { ingo@3943: value.storeDependencies(peer); ingo@3943: } ingo@2831: } ingo@2831: } ingo@2831: ingo@2831: public FlowVelocityMeasurement getPeer(River river) { ingo@2831: if (peer == null) { ingo@3943: Session session = ImporterSession.getInstance() ingo@3943: .getDatabaseSession(); ingo@2831: ingo@3943: Query query = session ingo@3943: .createQuery("from FlowVelocityMeasurement where " ingo@3943: + " river=:river and " + " description=:description"); ingo@2831: ingo@2831: query.setParameter("river", river); ingo@2831: query.setParameter("description", description); ingo@2831: ingo@2831: List measurement = query.list(); ingo@2831: ingo@2831: if (measurement.isEmpty()) { ingo@2831: peer = new FlowVelocityMeasurement(river, description); ingo@2831: ingo@2831: session.save(peer); ingo@2831: } ingo@2831: else { ingo@2831: peer = measurement.get(0); ingo@2831: } ingo@2831: } ingo@2831: ingo@2831: return peer; ingo@2831: } ingo@2831: } ingo@2831: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :