Mercurial > dive4elements > river
view backend/src/main/java/org/dive4elements/river/importer/ImportHYKFormation.java @ 9709:b74f817435fe
comment removed
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 27 Jan 2021 11:47:38 +0100 |
parents | 392bbcd8a88b |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.importer; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import org.dive4elements.river.importer.common.StoreMode; import org.dive4elements.river.model.HYKEntry; import org.dive4elements.river.model.HYKFormation; import org.hibernate.Query; import org.hibernate.Session; 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 StoreMode storeMode; protected HYKFormation peer; public ImportHYKFormation() { this.zones = new ArrayList<>(); this.storeMode = StoreMode.NONE; } public ImportHYKFormation( final int formationNum, final ImportHYKEntry entry, final BigDecimal top, final BigDecimal bottom, final BigDecimal distanceVL, final BigDecimal distanceHF, final 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(final ImportHYKFlowZone zone) { this.zones.add(zone); zone.setFormation(this); } public int getFormationNum() { return this.formationNum; } public void setFormationNum(final int formationNum) { this.formationNum = formationNum; } public ImportHYKEntry getEntry() { return this.entry; } public void setEntry(final ImportHYKEntry entry) { this.entry = entry; } public BigDecimal getTop() { return this.top; } public void setTop(final BigDecimal top) { this.top = top; } public BigDecimal getBottom() { return this.bottom; } public void setBottom(final BigDecimal bottom) { this.bottom = bottom; } public BigDecimal getDistanceVL() { return this.distanceVL; } public void setDistanceVL(final BigDecimal distanceVL) { this.distanceVL = distanceVL; } public BigDecimal getDistanceHF() { return this.distanceHF; } public void setDistanceHF(final BigDecimal distanceHF) { this.distanceHF = distanceHF; } public BigDecimal getDistanceVR() { return this.distanceVR; } public void setDistanceVR(final BigDecimal distanceVR) { this.distanceVR = distanceVR; } public void storeDependencies() { getPeer(); for (final ImportHYKFlowZone zone: this.zones) { zone.storeDependencies(); } } public HYKFormation getPeer() { if (this.peer == null) { final HYKEntry e = this.entry.getPeer(); final Session session = ImporterSession.getInstance() .getDatabaseSession(); List<HYKFormation> formations; if (this.entry.storeMode == StoreMode.INSERT) formations = null; else { final 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", this.formationNum); query.setParameter("entry", e); query.setParameter("top", this.top); query.setParameter("bottom", this.bottom); query.setParameter("distanceVL", this.distanceVL); query.setParameter("distanceHF", this.distanceHF); query.setParameter("distanceVR", this.distanceVR); formations = query.list(); } if ((formations == null) || formations.isEmpty()) { this.peer = new HYKFormation( this.formationNum, e, this.top, this.bottom, this.distanceVL, this.distanceHF, this.distanceVR); session.save(this.peer); this.storeMode = StoreMode.INSERT; } else { this.peer = formations.get(0); this.storeMode = StoreMode.UPDATE; } } return this.peer; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :