ingo@2850: package de.intevation.flys.importer; ingo@2850: ingo@2850: import java.util.List; ingo@2850: ingo@2850: import org.apache.log4j.Logger; ingo@2850: ingo@2850: import org.hibernate.Session; ingo@2850: import org.hibernate.Query; ingo@2850: ingo@2850: import de.intevation.flys.model.WaterlevelDifferenceColumn; ingo@2850: import de.intevation.flys.model.WaterlevelDifferenceValue; ingo@2850: ingo@2850: ingo@2850: public class ImportWaterlevelDifferenceValue { ingo@2850: ingo@2850: private static final Logger log = ingo@2850: Logger.getLogger(ImportWaterlevelDifferenceValue.class); ingo@2850: ingo@2850: ingo@2850: private Double station; ingo@2850: private Double value; ingo@2850: ingo@2850: private WaterlevelDifferenceValue peer; ingo@2850: ingo@2850: ingo@2850: public ImportWaterlevelDifferenceValue(Double station, Double value) { ingo@2850: this.station = station; ingo@2850: this.value = value; ingo@2850: } ingo@2850: ingo@2850: ingo@2850: public void storeDependencies(WaterlevelDifferenceColumn column) { ingo@2850: getPeer(column); ingo@2850: } ingo@2850: ingo@2850: felix@5228: /** Get the (usually W/cm) value. */ felix@5228: public Double getValue() { felix@5228: return value; felix@5228: } felix@5228: felix@5228: felix@5228: /** Get the (km) station. */ felix@5228: public Double getStation() { felix@5228: return station; felix@5228: } felix@5228: felix@5228: ingo@2850: public WaterlevelDifferenceValue getPeer(WaterlevelDifferenceColumn column) { ingo@2850: if (peer == null) { ingo@2850: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2850: Query query = session.createQuery( ingo@2850: "from WaterlevelDifferenceValue where " + ingo@2850: " column=:column and " + ingo@2850: " station=:station and " + ingo@2850: " value=:value" ingo@2850: ); ingo@2850: ingo@2850: query.setParameter("column", column); ingo@2850: query.setParameter("station", station); ingo@2850: query.setParameter("value", value); ingo@2850: ingo@2850: List values = query.list(); ingo@2850: if (values.isEmpty()) { ingo@2850: peer = new WaterlevelDifferenceValue(column, station, value); ingo@2850: session.save(peer); ingo@2850: } ingo@2850: else { ingo@2850: peer = values.get(0); ingo@2850: } ingo@2850: } ingo@2850: ingo@2850: return peer; ingo@2850: } ingo@2850: } ingo@2850: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :