view backend/src/main/java/org/dive4elements/river/importer/uinfo/importitem/VegetationZoneImport.java @ 9401:361de818f76e

Added color fields to the vegetation zone database table and importer, max days field changed from exclusive to inclusive
author mschaefer
date Tue, 14 Aug 2018 14:02:26 +0200
parents 201817aa7b1c
children
line wrap: on
line source
/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
 * Software engineering by
 *  Björnsen Beratende Ingenieure GmbH
 *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
 *
 * 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.uinfo.importitem;

import java.util.List;

import org.apache.log4j.Logger;
import org.dive4elements.river.importer.common.AbstractKmLineImport;
import org.dive4elements.river.model.uinfo.Vegetation;
import org.dive4elements.river.model.uinfo.VegetationType;
import org.dive4elements.river.model.uinfo.VegetationZone;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Imported vegetation values of a river station.
 *
 * @author Matthias Schäfer
 *
 */
public class VegetationZoneImport extends AbstractKmLineImport<Vegetation, VegetationZone> {

    /***** FIELDS *****/

    private static Logger log = Logger.getLogger(VegetationZoneImport.class);

    private final VegetationTypeImport vegetationType;

    private final Integer minOverflowDays;

    private final Integer maxOverflowDays;

    private final Integer color_r;

    private final Integer color_g;

    private final Integer color_b;

    /***** CONSTRUCTOR *****/

    public VegetationZoneImport(final int vegetationTypeId, final int minOverflowDays, final int maxOverflowDays, final int color_r,
            final int color_g, final int color_b) {
        super(Double.NaN);
        this.vegetationType = new VegetationTypeImport(vegetationTypeId);
        this.minOverflowDays = Integer.valueOf(minOverflowDays);
        this.maxOverflowDays = Integer.valueOf(maxOverflowDays);
        this.color_r = Integer.valueOf(color_r);
        this.color_g = Integer.valueOf(color_g);
        this.color_b = Integer.valueOf(color_b);
    }


    /***** METHODS *****/

    @Override
    public VegetationZone queryValueItem(final Session session, final Vegetation parent) {
        final Query query = session.createQuery("FROM VegetationZone WHERE (vegetation=:parent)"
                + " AND (vegetationType=:type)");
        query.setParameter("parent", parent);
        query.setParameter("type", this.vegetationType);
        final List rows = query.list();
        if (!rows.isEmpty())
            return (VegetationZone) rows.get(0);
        else
            return null;
    }


    @Override
    public VegetationZone createValueItem(final Vegetation parent) {
        final VegetationType type = this.vegetationType.getPeer();
        if (type == null) {
            log.error("Unknown vegetation zone class " + this.vegetationType.getId());
            return null;
        }
        return new VegetationZone(parent, type, this.minOverflowDays, this.maxOverflowDays, this.color_r, this.color_g, this.color_b);
    }
}

http://dive4elements.wald.intevation.org