ingo@2831: package de.intevation.flys.importer; ingo@2831: ingo@2831: import java.math.BigDecimal; ingo@2831: import java.sql.SQLException; 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: import org.hibernate.exception.ConstraintViolationException; ingo@2831: ingo@2831: import de.intevation.flys.model.FlowVelocityMeasurement; ingo@2831: import de.intevation.flys.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: ingo@2831: public void storeDependencies(FlowVelocityMeasurement measurement) ingo@2831: throws SQLException, ConstraintViolationException ingo@2831: { 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@2831: " measurement:=measurement and " + ingo@2831: " station:=station" ingo@2831: ); ingo@2831: ingo@2831: query.setParameter("measurement", m); ingo@2831: query.setParameter("station", station); 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 :