teichmann@5829: package org.dive4elements.river.importer; sascha@1218: teichmann@5829: import org.dive4elements.river.model.HYKFormation; teichmann@5829: import org.dive4elements.river.model.HYKEntry; sascha@1218: sascha@1218: import java.util.ArrayList; sascha@1218: import java.util.List; sascha@1218: sascha@1218: import org.hibernate.Session; sascha@1218: import org.hibernate.Query; sascha@1218: sascha@1218: import java.math.BigDecimal; sascha@1218: sascha@1218: public class ImportHYKFormation sascha@1218: { sascha@1218: protected int formationNum; sascha@1218: protected ImportHYKEntry entry; sascha@1218: protected BigDecimal top; sascha@1218: protected BigDecimal bottom; sascha@1218: protected BigDecimal distanceVL; sascha@1218: protected BigDecimal distanceHF; sascha@1218: protected BigDecimal distanceVR; sascha@1218: sascha@1218: protected List zones; sascha@1218: sascha@1218: protected HYKFormation peer; sascha@1218: sascha@1218: public ImportHYKFormation() { sascha@1218: zones = new ArrayList(); sascha@1218: } sascha@1218: sascha@1218: public ImportHYKFormation( sascha@1218: int formationNum, sascha@1218: ImportHYKEntry entry, sascha@1218: BigDecimal top, sascha@1218: BigDecimal bottom, sascha@1218: BigDecimal distanceVL, sascha@1218: BigDecimal distanceHF, sascha@1218: BigDecimal distanceVR sascha@1218: ) { sascha@1218: this(); sascha@1218: this.formationNum = formationNum; sascha@1218: this.entry = entry; sascha@1218: this.top = top; sascha@1218: this.bottom = bottom; sascha@1218: this.distanceVL = distanceVL; sascha@1218: this.distanceHF = distanceHF; sascha@1218: this.distanceVR = distanceVR; sascha@1218: } sascha@1218: sascha@1218: public void addFlowZone(ImportHYKFlowZone zone) { sascha@1218: zones.add(zone); sascha@1218: zone.setFormation(this); sascha@1218: } sascha@1218: sascha@1218: public int getFormationNum() { sascha@1218: return formationNum; sascha@1218: } sascha@1218: sascha@1218: public void setFormationNum(int formationNum) { sascha@1218: this.formationNum = formationNum; sascha@1218: } sascha@1218: sascha@1218: public ImportHYKEntry getEntry() { sascha@1218: return entry; sascha@1218: } sascha@1218: sascha@1218: public void setEntry(ImportHYKEntry entry) { sascha@1218: this.entry = entry; sascha@1218: } sascha@1218: sascha@1224: public BigDecimal getTop() { sascha@1224: return top; sascha@1224: } sascha@1224: sascha@1224: public void setTop(BigDecimal top) { sascha@1224: this.top = top; sascha@1224: } sascha@1224: sascha@1224: public BigDecimal getBottom() { sascha@1224: return bottom; sascha@1224: } sascha@1224: sascha@1224: public void setBottom(BigDecimal bottom) { sascha@1224: this.bottom = bottom; sascha@1224: } sascha@1224: sascha@1219: public BigDecimal getDistanceVL() { sascha@1219: return distanceVL; sascha@1219: } sascha@1219: sascha@1219: public void setDistanceVL(BigDecimal distanceVL) { sascha@1219: this.distanceVL = distanceVL; sascha@1219: } sascha@1219: sascha@1219: public BigDecimal getDistanceHF() { sascha@1219: return distanceHF; sascha@1219: } sascha@1219: sascha@1219: public void setDistanceHF(BigDecimal distanceHF) { sascha@1219: this.distanceHF = distanceHF; sascha@1219: } sascha@1219: sascha@1219: public BigDecimal getDistanceVR() { sascha@1219: return distanceVR; sascha@1219: } sascha@1219: sascha@1219: public void setDistanceVR(BigDecimal distanceVR) { sascha@1219: this.distanceVR = distanceVR; sascha@1219: } sascha@1219: sascha@1221: public void storeDependencies() { sascha@1221: getPeer(); sascha@1221: for (ImportHYKFlowZone zone: zones) { sascha@1221: zone.storeDependencies(); sascha@1221: } sascha@1221: } sascha@1221: sascha@1218: public HYKFormation getPeer() { sascha@1218: if (peer == null) { sascha@1218: HYKEntry e = entry.getPeer(); sascha@1218: Session session = ImporterSession.getInstance() sascha@1218: .getDatabaseSession(); sascha@1218: Query query = session.createQuery( sascha@1218: "from HYKFormation where formationNum=:formationNum " + sascha@1218: "and entry=:entry and top=:top and bottom=:bottom " + sascha@1218: "and distanceVL=:distanceVL and distanceHF=:distanceHF " + sascha@1218: "and distanceVR=:distanceVR"); sascha@1218: query.setParameter("formationNum", formationNum); sascha@1218: query.setParameter("entry", e); sascha@1218: query.setParameter("top", top); sascha@1218: query.setParameter("bottom", bottom); sascha@1218: query.setParameter("distanceVL", distanceVL); sascha@1218: query.setParameter("distanceHF", distanceHF); sascha@1218: query.setParameter("distanceVR", distanceVR); sascha@1218: List formations = query.list(); sascha@1218: if (formations.isEmpty()) { sascha@1218: peer = new HYKFormation( sascha@1218: formationNum, e, top, bottom, sascha@1218: distanceVL, distanceHF, distanceVR); sascha@1218: session.save(peer); sascha@1218: } sascha@1218: else { sascha@1218: peer = formations.get(0); sascha@1218: } sascha@1218: } sascha@1218: return peer; sascha@1218: } sascha@1218: } sascha@1218: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :