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; sascha@486: teichmann@5829: import org.dive4elements.river.model.TimeInterval; sascha@486: sascha@486: import org.hibernate.Session; sascha@486: import org.hibernate.Query; sascha@486: sascha@486: import java.util.List; sascha@486: import java.util.Date; sascha@486: sascha@493: import org.apache.log4j.Logger; sascha@493: sascha@486: public class ImportTimeInterval sascha@486: { sascha@493: private static Logger log = Logger.getLogger(ImportTimeInterval.class); sascha@493: sascha@486: protected Date startTime; sascha@486: protected Date stopTime; sascha@486: sascha@486: protected TimeInterval peer; sascha@486: sascha@486: public ImportTimeInterval() { sascha@486: } sascha@486: sascha@1204: public ImportTimeInterval(Date startTime) { teichmann@5896: this(startTime, null); sascha@1204: } sascha@1204: sascha@486: public ImportTimeInterval(Date startTime, Date stopTime) { tom@5780: teichmann@5896: if (startTime != null && stopTime == null) { teichmann@5896: this.startTime = startTime; teichmann@5896: this.stopTime = null; teichmann@5896: } teichmann@5896: else if (startTime == null && stopTime != null) { teichmann@5896: this.startTime = stopTime; teichmann@5896: this.stopTime = null; teichmann@5896: } teichmann@5896: else if (startTime == null && stopTime == null) { teichmann@5896: throw new IllegalArgumentException("Both dates are null."); rrenkert@5775: } rrenkert@5775: else { teichmann@5896: if (startTime.after(stopTime)) { teichmann@5896: Date t = startTime; teichmann@5896: startTime = stopTime; teichmann@5896: stopTime = t; teichmann@5896: } teichmann@5896: this.startTime = startTime; teichmann@5896: this.stopTime = stopTime; rrenkert@5775: } sascha@486: } sascha@486: sascha@486: public Date getStartTime() { sascha@486: return startTime; sascha@486: } sascha@486: sascha@486: public void setStartTime(Date startTime) { sascha@486: this.startTime = startTime; sascha@486: } sascha@486: sascha@486: public Date getStopTime() { sascha@486: return stopTime; sascha@486: } sascha@486: sascha@486: public void setStopTime(Date stopTime) { sascha@486: this.stopTime = stopTime; sascha@486: } sascha@486: sascha@486: public TimeInterval getPeer() { sascha@493: if (peer == null) { tom@8856: Session session = ImporterSession.getInstance() tom@8856: .getDatabaseSession(); felix@5811: if (startTime == null) { felix@5811: log.error("Null Start time will be ignored."); felix@5811: } felix@5811: Query query; felix@5811: if (stopTime == null) { felix@5811: query = session.createQuery( tom@8856: "from TimeInterval " tom@8856: + "where startTime=:a and stopTime is null"); felix@5811: } felix@5811: else { felix@5811: query = session.createQuery( felix@5811: "from TimeInterval where startTime=:a and stopTime=:b"); felix@5811: query.setParameter("b", stopTime); felix@5811: } sascha@486: query.setParameter("a", startTime); felix@5812: sascha@486: List intervals = query.list(); sascha@486: if (intervals.isEmpty()) { sascha@486: peer = new TimeInterval(startTime, stopTime); sascha@486: session.save(peer); sascha@486: } sascha@487: else { sascha@487: peer = intervals.get(0); sascha@487: } sascha@486: } sascha@486: return peer; sascha@486: } teichmann@5896: teichmann@5896: @Override teichmann@5896: public String toString() { teichmann@5896: return "start time: " + startTime + ", stop time: " + stopTime; teichmann@5896: } sascha@486: } sascha@486: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :