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@2831: import java.math.BigDecimal; teichmann@5446: ingo@2831: import java.util.Date; 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.FlowVelocityMeasurementValue; ingo@2831: ingo@2831: ingo@2831: public class ImportFlowVelocityMeasurementValue { ingo@2831: ingo@2831: private static final Logger log = ingo@2831: Logger.getLogger(ImportFlowVelocityMeasurementValue.class); ingo@2831: ingo@2831: ingo@2831: private Date datetime; ingo@2831: ingo@2831: private String description; ingo@2831: ingo@2831: private BigDecimal station; ingo@2831: private BigDecimal w; ingo@2831: private BigDecimal q; ingo@2831: private BigDecimal v; ingo@2831: ingo@2831: private FlowVelocityMeasurementValue peer; ingo@2831: ingo@2831: ingo@2831: public ImportFlowVelocityMeasurementValue( ingo@2831: Date datetime, ingo@2831: BigDecimal station, ingo@2831: BigDecimal w, ingo@2831: BigDecimal q, ingo@2831: BigDecimal v, ingo@2831: String description ingo@2831: ) { ingo@2831: this.datetime = datetime; ingo@2831: this.station = station; ingo@2831: this.w = w; ingo@2831: this.q = q; ingo@2831: this.v = v; ingo@2831: this.description = description; ingo@2831: } ingo@2831: ingo@2831: ingo@2831: tom@5416: public void storeDependencies(FlowVelocityMeasurement measurement) { ingo@2831: log.debug("store dependencies"); ingo@2831: ingo@2831: getPeer(measurement); ingo@2831: } ingo@2831: ingo@2831: ingo@2831: public FlowVelocityMeasurementValue getPeer(FlowVelocityMeasurement m) { ingo@2831: if (peer == null) { ingo@2831: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2831: ingo@2831: Query query = session.createQuery( ingo@2831: "from FlowVelocityMeasurementValue where " + ingo@2832: " measurement=:measurement and " + ingo@2832: " station=:station and " + ingo@2832: " datetime=:datetime" ingo@2831: ); ingo@2831: ingo@2831: query.setParameter("measurement", m); ingo@2831: query.setParameter("station", station); ingo@2832: query.setParameter("datetime", datetime); ingo@2831: ingo@2831: List values = query.list(); ingo@2831: ingo@2831: if (values.isEmpty()) { ingo@2831: peer = new FlowVelocityMeasurementValue( ingo@2831: m, ingo@2831: datetime, ingo@2831: station, ingo@2831: w, ingo@2831: q, ingo@2831: v, ingo@2831: description); ingo@2831: ingo@2831: session.save(peer); ingo@2831: } ingo@2831: else { ingo@2831: peer = values.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 :