Mercurial > dive4elements > river
view backend/src/main/java/org/dive4elements/river/model/MainValueType.java @ 9587:d116a791b1f8
zu Punkt 10.4 Sohlhöhe Feld 1 (links)...
author | gernotbelger |
---|---|
date | Thu, 10 Jan 2019 09:07:16 +0100 |
parents | 4cccbd32b680 |
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.model; import java.io.Serializable; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import org.dive4elements.river.backend.SessionHolder; import org.hibernate.Query; import org.hibernate.Session; @Entity @Table(name = "main_value_types") public class MainValueType implements Serializable { /***** TYPES *****/ /** * Main value type names * */ public enum MainValueTypeKey { NONE(""), W("W"), Q("Q"), DURATION("D"), UNKNOWN("-"), INVISIBLE_D("D_INV"); private final String name; private int id; private boolean ready; MainValueTypeKey(final String name) { this.name = name; this.id = 0; this.ready = false; } /** * Type name in the database */ public String getName() { return this.name; } /** * Type id in the database */ public int getId() { initFromDatabase(); return this.id; } /** * Set the type id */ public void setId(final int id) { this.id = id; } protected boolean getReady() { return this.ready; } protected void setReady(final boolean ready) { this.ready = ready; } /** * Main value type key for a database name value */ public static MainValueTypeKey forDbName(final String dbname) { initFromDatabase(); for (final MainValueTypeKey k : MainValueTypeKey.values()) { if (k.getName().equalsIgnoreCase(dbname)) return k; } return NONE; } /** * Main value type key for a database id value */ public static MainValueTypeKey forDbId(final int dbid) { initFromDatabase(); for (final MainValueTypeKey k : MainValueTypeKey.values()) { if (k.getId() == dbid) return k; } return NONE; } /** * Initially queries the database ids */ private static void initFromDatabase() { if (W.getReady()) return; // Avoid recursion for (final MainValueTypeKey k : MainValueTypeKey.values()) k.setReady(true); // Select database ids final Session session = SessionHolder.HOLDER.get(); final Query query = session.createQuery("FROM MainValueType"); final List<MainValueType> rows = query.list(); if (!rows.isEmpty()) { for (int i = 0; i <= rows.size() - 1; i++) { if (forDbName(rows.get(i).getName()) != NONE) forDbName(rows.get(i).getName()).setId(rows.get(i).getId()); } } } } /***** FIELDS *****/ private Integer id; private String name; // static private List<Integer> typeids; // static private List<String> typenames; /***** CONSTRUCTORS *****/ public MainValueType() { } public MainValueType(final String name) { this.name = name; } /***** METHODS *****/ @Id @SequenceGenerator(name = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ", sequenceName = "MAIN_VALUE_TYPES_ID_SEQ", allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ") @Column(name = "id") public Integer getId() { return this.id; } public void setId(final Integer id) { this.id = id; } @Column(name = "name") // FIXME: Type conversion needed? public String getName() { return this.name; } public void setName(final String name) { this.name = name; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :