mschaefer@9014: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde mschaefer@9014: * Software engineering by mschaefer@9014: * Björnsen Beratende Ingenieure GmbH mschaefer@9014: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt mschaefer@9014: * mschaefer@9014: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9014: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9014: * documentation coming with Dive4Elements River for details. mschaefer@9014: */ mschaefer@9014: mschaefer@9014: package org.dive4elements.river.model.uinfo; mschaefer@9014: mschaefer@9014: import java.io.Serializable; mschaefer@9401: import java.util.List; mschaefer@9014: mschaefer@9014: import javax.persistence.Column; mschaefer@9014: import javax.persistence.Entity; mschaefer@9014: import javax.persistence.GeneratedValue; mschaefer@9014: import javax.persistence.GenerationType; mschaefer@9014: import javax.persistence.Id; mschaefer@9014: import javax.persistence.JoinColumn; mschaefer@9014: import javax.persistence.OneToOne; mschaefer@9014: import javax.persistence.SequenceGenerator; mschaefer@9014: import javax.persistence.Table; mschaefer@9401: import javax.persistence.Transient; mschaefer@9401: mschaefer@9401: import org.dive4elements.river.backend.SessionHolder; mschaefer@9401: import org.dive4elements.river.model.River; mschaefer@9401: import org.hibernate.Query; mschaefer@9401: import org.hibernate.Session; mschaefer@9014: mschaefer@9014: mschaefer@9014: /** mschaefer@9014: * Hibernate binding for the DB table vegetation_zone mschaefer@9014: * mschaefer@9014: * @author Matthias Schäfer mschaefer@9014: * mschaefer@9014: */ mschaefer@9014: @Entity mschaefer@9014: @Table(name = "vegetation_zone") mschaefer@9014: public class VegetationZone implements Serializable { mschaefer@9014: mschaefer@9014: /***** FIELDS *****/ mschaefer@9014: mschaefer@9014: private static final long serialVersionUID = -6579828019873800147L; mschaefer@9014: mschaefer@9014: private Integer id; mschaefer@9014: mschaefer@9014: private Vegetation vegetation; mschaefer@9014: mschaefer@9014: private VegetationType vegetationType; mschaefer@9014: mschaefer@9014: private Integer min_overflow_days; mschaefer@9014: mschaefer@9014: private Integer max_overflow_days; mschaefer@9014: mschaefer@9401: private Integer color_r; mschaefer@9401: mschaefer@9401: private Integer color_g; mschaefer@9401: mschaefer@9401: private Integer color_b; mschaefer@9014: mschaefer@9014: /***** CONSTRUCTORS *****/ mschaefer@9014: mschaefer@9014: public VegetationZone() { mschaefer@9014: } mschaefer@9014: mschaefer@9401: public VegetationZone(final Vegetation vegetation, final VegetationType vegetationType, final Integer min_overflow_days, final Integer max_overflow_days, mschaefer@9401: final Integer color_r, mschaefer@9401: final Integer color_g, final Integer color_b) { mschaefer@9014: this.vegetation = vegetation; mschaefer@9014: this.vegetationType = vegetationType; mschaefer@9014: this.min_overflow_days = min_overflow_days; mschaefer@9014: this.max_overflow_days = max_overflow_days; mschaefer@9401: this.color_r = color_r; mschaefer@9401: this.color_g = color_g; mschaefer@9401: this.color_b = color_b; mschaefer@9014: } mschaefer@9014: mschaefer@9014: mschaefer@9014: /***** METHODS *****/ mschaefer@9014: mschaefer@9014: @Id mschaefer@9014: @SequenceGenerator(name = "SEQUENCE_VEGETATION_ZONE_ID_SEQ", sequenceName = "VEGETATION_ZONE_ID_SEQ", allocationSize = 1) mschaefer@9014: @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE_VEGETATION_ZONE_ID_SEQ") mschaefer@9014: @Column(name = "id") mschaefer@9014: public Integer getId() { mschaefer@9014: return this.id; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setId(final Integer id) { mschaefer@9014: this.id = id; mschaefer@9014: } mschaefer@9014: mschaefer@9014: @OneToOne mschaefer@9014: @JoinColumn(name = "vegetation_id") mschaefer@9014: public Vegetation getVegetation() { mschaefer@9014: return this.vegetation; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setVegetation(final Vegetation vegetation) { mschaefer@9014: this.vegetation = vegetation; mschaefer@9014: } mschaefer@9014: mschaefer@9014: @OneToOne mschaefer@9014: @JoinColumn(name = "vegetation_type_id") mschaefer@9014: public VegetationType getVegetationType() { mschaefer@9014: return this.vegetationType; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setVegetationType(final VegetationType vegetationType) { mschaefer@9014: this.vegetationType = vegetationType; mschaefer@9014: } mschaefer@9014: mschaefer@9014: @Column(name = "min_overflow_days") mschaefer@9014: public Integer getMin_overflow_days() { mschaefer@9014: return this.min_overflow_days; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setMin_overflow_days(final Integer min_overflow_days) { mschaefer@9014: this.min_overflow_days = min_overflow_days; mschaefer@9014: } mschaefer@9014: mschaefer@9014: @Column(name = "max_overflow_days") mschaefer@9014: public Integer getMax_overflow_days() { mschaefer@9014: return this.max_overflow_days; mschaefer@9014: } mschaefer@9014: mschaefer@9014: public void setMax_overflow_days(final Integer max_overflow_days) { mschaefer@9014: this.max_overflow_days = max_overflow_days; mschaefer@9014: } mschaefer@9401: mschaefer@9401: @Column(name = "color_r") mschaefer@9401: public Integer getColor_r() { mschaefer@9401: return this.color_r; mschaefer@9401: } mschaefer@9401: mschaefer@9401: public void setColor_r(final Integer color_r) { mschaefer@9401: this.color_r = color_r; mschaefer@9401: } mschaefer@9401: mschaefer@9401: @Column(name = "color_g") mschaefer@9401: public Integer getColor_g() { mschaefer@9401: return this.color_g; mschaefer@9401: } mschaefer@9401: mschaefer@9401: public void setColor_g(final Integer color_g) { mschaefer@9401: this.color_g = color_g; mschaefer@9401: } mschaefer@9401: mschaefer@9401: @Column(name = "color_b") mschaefer@9401: public Integer getColor_b() { mschaefer@9401: return this.color_b; mschaefer@9401: } mschaefer@9401: mschaefer@9401: public void setColor_b(final Integer color_b) { mschaefer@9401: this.color_b = color_b; mschaefer@9401: } mschaefer@9401: mschaefer@9401: @Transient mschaefer@9401: public String getColor() { mschaefer@9401: return String.format("#%02x%02x%02x", getColor_r(), getColor_g(), getColor_b()); mschaefer@9401: } mschaefer@9401: mschaefer@9401: /** mschaefer@9401: * Selects from the database the vegetation zones of a river mschaefer@9401: */ mschaefer@9401: public static List getValues(final River river) { mschaefer@9401: final Session session = SessionHolder.HOLDER.get(); mschaefer@9401: final Query query = session.createQuery("SELECT v" mschaefer@9401: + " FROM VegetationZone AS v JOIN v.vegetation AS s" mschaefer@9401: + " WHERE (s.river.id=:riverid)" mschaefer@9401: + " ORDER BY v.vegetationType.id"); mschaefer@9401: query.setParameter("riverid", river.getId()); mschaefer@9401: return query.list(); mschaefer@9401: } mschaefer@9014: }