Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportHYKFormation.java @ 1218:00e37d22a589
Added importer models for HYKs.
flys-backend/trunk@2344 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 17 Jul 2011 19:03:33 +0000 |
parents | |
children | d80997bd94ce |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportHYKFormation.java Sun Jul 17 19:03:33 2011 +0000 @@ -0,0 +1,103 @@ +package de.intevation.flys.importer; + +import de.intevation.flys.model.HYKFormation; +import de.intevation.flys.model.HYKEntry; + +import java.util.ArrayList; +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.Query; + +import java.math.BigDecimal; + +public class ImportHYKFormation +{ + protected int formationNum; + protected ImportHYKEntry entry; + protected BigDecimal top; + protected BigDecimal bottom; + protected BigDecimal distanceVL; + protected BigDecimal distanceHF; + protected BigDecimal distanceVR; + + protected List<ImportHYKFlowZone> zones; + + protected HYKFormation peer; + + public ImportHYKFormation() { + zones = new ArrayList<ImportHYKFlowZone>(); + } + + public ImportHYKFormation( + int formationNum, + ImportHYKEntry entry, + BigDecimal top, + BigDecimal bottom, + BigDecimal distanceVL, + BigDecimal distanceHF, + BigDecimal distanceVR + ) { + this(); + this.formationNum = formationNum; + this.entry = entry; + this.top = top; + this.bottom = bottom; + this.distanceVL = distanceVL; + this.distanceHF = distanceHF; + this.distanceVR = distanceVR; + } + + public void addFlowZone(ImportHYKFlowZone zone) { + zones.add(zone); + zone.setFormation(this); + } + + public int getFormationNum() { + return formationNum; + } + + public void setFormationNum(int formationNum) { + this.formationNum = formationNum; + } + + public ImportHYKEntry getEntry() { + return entry; + } + + public void setEntry(ImportHYKEntry entry) { + this.entry = entry; + } + + public HYKFormation getPeer() { + if (peer == null) { + HYKEntry e = entry.getPeer(); + Session session = ImporterSession.getInstance() + .getDatabaseSession(); + Query query = session.createQuery( + "from HYKFormation where formationNum=:formationNum " + + "and entry=:entry and top=:top and bottom=:bottom " + + "and distanceVL=:distanceVL and distanceHF=:distanceHF " + + "and distanceVR=:distanceVR"); + query.setParameter("formationNum", formationNum); + query.setParameter("entry", e); + query.setParameter("top", top); + query.setParameter("bottom", bottom); + query.setParameter("distanceVL", distanceVL); + query.setParameter("distanceHF", distanceHF); + query.setParameter("distanceVR", distanceVR); + List<HYKFormation> formations = query.list(); + if (formations.isEmpty()) { + peer = new HYKFormation( + formationNum, e, top, bottom, + distanceVL, distanceHF, distanceVR); + session.save(peer); + } + else { + peer = formations.get(0); + } + } + return peer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :