ingo@2831: package de.intevation.flys.importer; ingo@2831: ingo@2831: import java.sql.SQLException; 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: import org.hibernate.exception.ConstraintViolationException; ingo@2831: ingo@2831: import de.intevation.flys.model.FlowVelocityMeasurement; ingo@2831: import de.intevation.flys.model.River; ingo@2831: ingo@2831: ingo@2831: public class ImportFlowVelocityMeasurement { ingo@2831: ingo@2831: private static final Logger log = ingo@2831: Logger.getLogger(ImportFlowVelocityMeasurement.class); ingo@2831: 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: ingo@2831: public ImportFlowVelocityMeasurement() { ingo@2831: this(null); ingo@2831: } ingo@2831: ingo@2831: ingo@2831: public ImportFlowVelocityMeasurement(String description) { ingo@2831: this.description = description; ingo@2832: this.values = new ArrayList(); ingo@2832: } ingo@2832: ingo@2832: ingo@2832: public void setDescription(String description) { ingo@2832: this.description = description; ingo@2832: } ingo@2832: ingo@2832: ingo@2832: public void addValue(ImportFlowVelocityMeasurementValue value) { ingo@2832: this.values.add(value); ingo@2831: } ingo@2831: ingo@2831: ingo@2831: public void storeDependencies(River river) ingo@2831: throws SQLException, ConstraintViolationException ingo@2831: { ingo@2831: log.debug("store dependencies"); ingo@2831: ingo@2831: FlowVelocityMeasurement peer = getPeer(river); ingo@2831: ingo@2831: for (ImportFlowVelocityMeasurementValue value: values) { ingo@2831: value.storeDependencies(peer); ingo@2831: } ingo@2831: } ingo@2831: ingo@2831: ingo@2831: public FlowVelocityMeasurement getPeer(River river) { ingo@2831: if (peer == null) { ingo@2831: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2831: ingo@2831: Query query = session.createQuery( ingo@2831: "from FlowVelocityMeasurement where " + ingo@2832: " river=:river and " + ingo@2832: " description=:description" ingo@2831: ); 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 :