ingo@2843: package de.intevation.flys.importer; ingo@2843: ingo@2843: import java.util.ArrayList; ingo@2843: import java.util.List; ingo@2843: ingo@2843: import org.apache.log4j.Logger; ingo@2843: ingo@2843: import org.hibernate.Session; ingo@2843: import org.hibernate.Query; ingo@2843: ingo@2843: import de.intevation.flys.model.Waterlevel; ingo@2843: import de.intevation.flys.model.WaterlevelQRange; ingo@2843: ingo@2843: ingo@2843: public class ImportWaterlevelQRange { ingo@2843: ingo@2843: private static final Logger log = ingo@2843: Logger.getLogger(ImportWaterlevelQRange.class); ingo@2843: ingo@2843: ingo@2843: private Double q; ingo@2843: ingo@2843: private List values; ingo@2843: ingo@2843: private WaterlevelQRange peer; ingo@2843: ingo@2843: ingo@2843: public ImportWaterlevelQRange(Double q) { ingo@2843: this.values = new ArrayList(); ingo@2843: this.q = q; ingo@2843: } ingo@2843: ingo@2843: public void addValue(ImportWaterlevelValue value) { ingo@2843: this.values.add(value); ingo@2843: } ingo@2843: ingo@2843: ingo@2843: public void storeDependencies(Waterlevel waterlevel) { ingo@2845: log.info("store dependencies"); ingo@2845: ingo@2843: WaterlevelQRange peer = getPeer(waterlevel); ingo@2843: ingo@2843: int i = 0; ingo@2843: ingo@2843: for (ImportWaterlevelValue value: values) { ingo@2843: value.storeDependencies(peer); ingo@2843: i++; ingo@2843: } ingo@2843: ingo@2843: log.info("stored " + i + " waterlevel values"); ingo@2843: } ingo@2843: ingo@2843: ingo@2843: public WaterlevelQRange getPeer(Waterlevel waterlevel) { ingo@2843: if (peer == null) { ingo@2843: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@2843: Query query = session.createQuery( ingo@2843: "from WaterlevelQRange where " + ingo@2843: " waterlevel=:waterlevel and " + ingo@2843: " q=:q" ingo@2843: ); ingo@2843: ingo@2843: query.setParameter("waterlevel", waterlevel); ingo@2843: query.setParameter("q", q); ingo@2843: ingo@2843: List qRanges = query.list(); ingo@2843: if (qRanges.isEmpty()) { ingo@2843: peer = new WaterlevelQRange(waterlevel, q); ingo@2843: session.save(peer); ingo@2843: } ingo@2843: else { ingo@2843: peer = qRanges.get(0); ingo@2843: } ingo@2843: } ingo@2843: ingo@2843: return peer; ingo@2843: } ingo@2843: } ingo@2843: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :