view 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 source
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 :

http://dive4elements.wald.intevation.org