teichmann@5829: package org.dive4elements.river.importer; ingo@198: ingo@198: import java.util.ArrayList; ingo@198: import java.util.List; ingo@198: ingo@198: import org.hibernate.Session; ingo@198: import org.hibernate.Query; ingo@198: teichmann@5829: import org.dive4elements.river.model.DischargeTable; teichmann@5829: import org.dive4elements.river.model.Gauge; teichmann@5829: import org.dive4elements.river.model.TimeInterval; ingo@198: sascha@499: import org.apache.log4j.Logger; sascha@499: ingo@198: public class ImportDischargeTable ingo@198: { sascha@499: private static Logger log = Logger.getLogger(ImportDischargeTable.class); sascha@499: ingo@198: protected DischargeTable peer; ingo@198: sascha@493: protected String description; sascha@493: sascha@493: protected Integer kind; sascha@467: ingo@198: protected List dischargeTableValues; ingo@198: sascha@486: protected ImportTimeInterval timeInterval; ingo@198: ingo@198: public ImportDischargeTable() { sascha@493: this(0, null); sascha@492: } sascha@492: sascha@493: public ImportDischargeTable(int kind, String description) { sascha@493: this.kind = kind; sascha@493: this.description = description; ingo@198: dischargeTableValues = new ArrayList(); ingo@198: } ingo@198: ingo@198: sascha@493: public String getDescription() { sascha@493: return description; sascha@493: } sascha@493: sascha@493: public void setDescription(String description) { sascha@493: this.description = description; sascha@493: } sascha@493: sascha@493: ingo@198: public void addDischargeTableValue(ImportDischargeTableValue value) { ingo@198: dischargeTableValues.add(value); ingo@198: } ingo@198: ingo@198: ingo@198: public void setDischargeTableValues(List values){ ingo@198: this.dischargeTableValues = values; ingo@198: } ingo@198: ingo@198: ingo@198: public List getDischargeTableValues() { ingo@198: return dischargeTableValues; ingo@198: } ingo@198: sascha@486: public ImportTimeInterval getTimeInterval() { sascha@486: return timeInterval; sascha@486: } sascha@486: sascha@486: public void setTimeInterval(ImportTimeInterval timeInterval) { sascha@486: this.timeInterval = timeInterval; sascha@486: } sascha@486: ingo@198: ingo@198: public DischargeTable getPeer(Gauge gauge) { ingo@198: if (peer == null) { sascha@486: TimeInterval ti = timeInterval != null sascha@486: ? timeInterval.getPeer() sascha@486: : null; sascha@497: Session session = ImporterSession.getInstance().getDatabaseSession(); ingo@198: ingo@198: Query query = session.createQuery( sascha@486: "from DischargeTable where " + sascha@493: "gauge.id=:gauge and kind=:kind and " + sascha@493: "description=:description and timeInterval=:interval"); sascha@493: query.setParameter("gauge", gauge.getId()); sascha@493: query.setParameter("description", description); sascha@493: query.setParameter("kind", kind); sascha@493: query.setParameter("interval", ti); ingo@198: ingo@198: List dischargeTables = query.list(); ingo@198: if (dischargeTables.isEmpty()) { teichmann@4776: peer = new DischargeTable(gauge, description, null, kind, ti); ingo@198: session.save(peer); ingo@198: } ingo@198: else { ingo@198: peer = dischargeTables.get(0); ingo@198: } ingo@198: } ingo@198: ingo@198: return peer; ingo@198: } ingo@198: ingo@198: ingo@198: public void storeDependencies(Gauge gauge) { sascha@499: log.info("store discharge table '" + description + "'"); ingo@198: storeDischargeTableValues(gauge); ingo@198: } ingo@198: ingo@198: ingo@198: public void storeDischargeTableValues(Gauge gauge) { ingo@198: DischargeTable dischargeTable = getPeer(gauge); ingo@198: ingo@198: for (ImportDischargeTableValue value: dischargeTableValues) { ingo@198: value.getPeer(dischargeTable); ingo@198: } ingo@198: } ingo@198: } ingo@198: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :