sascha@184: package de.intevation.flys.importer; sascha@184: sascha@184: import java.io.File; sascha@184: sascha@192: import java.util.List; sascha@192: sascha@189: import java.math.BigDecimal; sascha@189: sascha@189: import de.intevation.flys.model.River; sascha@189: import de.intevation.flys.model.Gauge; sascha@189: sascha@192: import org.hibernate.Session; sascha@192: import org.hibernate.Query; sascha@192: sascha@189: import java.io.IOException; sascha@189: sascha@184: public class ImportGauge sascha@184: { sascha@185: protected ImportRange range; sascha@184: sascha@189: protected File staFile; sascha@189: protected File atFile; sascha@189: sascha@189: protected String name; sascha@189: protected BigDecimal aeo; sascha@189: protected BigDecimal datum; sascha@192: protected BigDecimal station; sascha@189: sascha@189: protected Gauge peer; sascha@184: sascha@195: protected List mainValueTypes; sascha@195: protected List namedMainValues; sascha@195: protected List mainValues; sascha@195: sascha@184: public ImportGauge() { sascha@184: } sascha@184: sascha@185: public ImportGauge(ImportRange range, File staFile, File atFile) { sascha@185: this.range = range; sascha@184: this.staFile = staFile; sascha@184: this.atFile = atFile; sascha@184: } sascha@184: sascha@185: public void setRange(ImportRange range) { sascha@185: this.range = range; sascha@184: } sascha@184: sascha@184: public void setStaFile(File staFile) { sascha@184: this.staFile = staFile; sascha@184: } sascha@184: sascha@184: public File getStaFile() { sascha@184: return staFile; sascha@184: } sascha@184: sascha@184: public void setAtFile(File atFile) { sascha@184: this.atFile = atFile; sascha@184: } sascha@184: sascha@184: public File getAtFile() { sascha@184: return atFile; sascha@184: } sascha@189: sascha@189: public BigDecimal getAeo() { sascha@189: return aeo; sascha@189: } sascha@189: sascha@189: public void setAeo(BigDecimal aeo) { sascha@189: this.aeo = aeo; sascha@189: } sascha@189: sascha@189: public String getName() { sascha@189: return name; sascha@189: } sascha@189: sascha@189: public void setName(String name) { sascha@189: this.name = name; sascha@189: } sascha@189: sascha@189: public BigDecimal getDatum() { sascha@189: return datum; sascha@189: } sascha@189: sascha@189: public void setDatum(BigDecimal datum) { sascha@189: this.datum = datum; sascha@189: } sascha@189: sascha@192: public BigDecimal getStation() { sascha@192: return station; sascha@192: } sascha@192: sascha@192: public void setStation(BigDecimal station) { sascha@192: this.station = station; sascha@192: } sascha@192: sascha@195: public List getMainValueTypes() { sascha@195: return mainValueTypes; sascha@195: } sascha@195: sascha@195: public void setMainValueTypes(List mainValueTypes) { sascha@195: this.mainValueTypes = mainValueTypes; sascha@195: } sascha@195: sascha@195: public List getNamedMainValues() { sascha@195: return namedMainValues; sascha@195: } sascha@195: sascha@195: public void setNamedMainValues(List namedMainValues) { sascha@195: this.namedMainValues = namedMainValues; sascha@195: } sascha@195: sascha@195: public List getMainValues() { sascha@195: return mainValues; sascha@195: } sascha@195: sascha@195: public void setMainValues(List mainValues) { sascha@195: this.mainValues = mainValues; sascha@195: } sascha@195: sascha@189: public void parseDependencies() throws IOException { sascha@189: StaFileParser sfp = new StaFileParser(); sascha@189: sfp.parse(this); sascha@189: } sascha@189: sascha@191: public void storeDependencies(River river) { sascha@195: sascha@192: Gauge gauge = getPeer(river); sascha@195: sascha@195: for (ImportMainValueType mainValueType: mainValueTypes) { sascha@195: mainValueType.getPeer(); sascha@195: } sascha@195: sascha@195: for (ImportNamedMainValue namedMainValue: namedMainValues) { sascha@195: namedMainValue.getPeer(); sascha@195: } sascha@195: sascha@195: for (ImportMainValue mainValue: mainValues) { sascha@195: mainValue.getPeer(river); sascha@195: } sascha@195: sascha@195: // TODO: Implement ATs sascha@191: } sascha@191: sascha@189: public Gauge getPeer(River river) { sascha@189: if (peer == null) { sascha@192: Session session = Importer.sessionHolder.get(); sascha@192: Query query = session.createQuery( sascha@192: "from Gauge where name=:name " + sascha@193: "and river.id=:river"); sascha@192: query.setString("name", name); sascha@193: query.setParameter("river", river.getId()); sascha@192: List gauges = query.list(); sascha@192: if (gauges.isEmpty()) { sascha@192: peer = new Gauge( sascha@192: name, river, sascha@192: station, aeo, datum, sascha@192: range.getPeer(river)); sascha@192: session.save(peer); sascha@192: } sascha@192: else { sascha@192: peer = gauges.get(0); sascha@192: } sascha@189: } sascha@189: return peer; sascha@189: } sascha@184: } sascha@184: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :