comparison backend/src/main/java/org/dive4elements/river/model/MainValueType.java @ 9159:64e56a51db3f

Added methods to select a gauge's discharge table and main value list; added a main value type key enum
author mschaefer
date Tue, 19 Jun 2018 14:23:15 +0200
parents 4c3ccf2b0304
children 4cccbd32b680
comparison
equal deleted inserted replaced
9158:4a41b7fba4da 9159:64e56a51db3f
7 */ 7 */
8 8
9 package org.dive4elements.river.model; 9 package org.dive4elements.river.model;
10 10
11 import java.io.Serializable; 11 import java.io.Serializable;
12 import java.util.List;
12 13
14 import javax.persistence.Column;
13 import javax.persistence.Entity; 15 import javax.persistence.Entity;
16 import javax.persistence.GeneratedValue;
17 import javax.persistence.GenerationType;
14 import javax.persistence.Id; 18 import javax.persistence.Id;
19 import javax.persistence.SequenceGenerator;
15 import javax.persistence.Table; 20 import javax.persistence.Table;
16 import javax.persistence.GeneratedValue; 21
17 import javax.persistence.Column; 22 import org.dive4elements.river.backend.SessionHolder;
18 import javax.persistence.SequenceGenerator; 23 import org.hibernate.Query;
19 import javax.persistence.GenerationType; 24 import org.hibernate.Session;
20 25
21 @Entity 26 @Entity
22 @Table(name = "main_value_types") 27 @Table(name = "main_value_types")
23 public class MainValueType 28 public class MainValueType
24 implements Serializable 29 implements Serializable
25 { 30 {
31
32 /***** TYPES *****/
33
34 /**
35 * Main value type names
36 *
37 */
38 public enum MainValueTypeKey {
39 NONE(""), W("W"), Q("Q"), DURATION("D"), UNKNOWN("-");
40
41 private final String name;
42 private int id;
43 private boolean ready;
44
45 MainValueTypeKey(final String name) {
46 this.name = name;
47 this.id = 0;
48 this.ready = false;
49 }
50
51 /**
52 * Type name in the database
53 */
54 public String getName() {
55 return this.name;
56 }
57
58 /**
59 * Type id in the database
60 */
61 public int getId() {
62 initFromDatabase();
63 return this.id;
64 }
65
66 /**
67 * Set the type id
68 */
69 public void setId(final int id) {
70 this.id = id;
71 }
72
73 protected boolean getReady() {
74 return this.ready;
75 }
76
77 protected void setReady(final boolean ready) {
78 this.ready = ready;
79 }
80
81 /**
82 * Main value type key for a database name value
83 */
84 public static MainValueTypeKey forDbName(final String dbname) {
85 initFromDatabase();
86 for (final MainValueTypeKey k : MainValueTypeKey.values()) {
87 if (k.getName().equalsIgnoreCase(dbname))
88 return k;
89 }
90 return NONE;
91 }
92
93 /**
94 * Main value type key for a database id value
95 */
96 public static MainValueTypeKey forDbId(final int dbid) {
97 initFromDatabase();
98 for (final MainValueTypeKey k : MainValueTypeKey.values()) {
99 if (k.getId() == dbid)
100 return k;
101 }
102 return NONE;
103 }
104
105 /**
106 * Initially queries the database ids
107 */
108 private static void initFromDatabase() {
109 if (W.getReady())
110 return;
111 // Avoid recursion
112 for (final MainValueTypeKey k : MainValueTypeKey.values())
113 k.setReady(true);
114 // Select database ids
115 final Session session = SessionHolder.HOLDER.get();
116 final Query query = session.createQuery("FROM MainValueType");
117 final List<MainValueType> rows = query.list();
118 if (!rows.isEmpty()) {
119 for (int i = 0; i <= rows.size() - 1; i++) {
120 if (forDbName(rows.get(i).getName()) != NONE)
121 forDbName(rows.get(i).getName()).setId(rows.get(i).getId());
122 }
123 }
124 }
125 }
126
127 /***** FIELDS *****/
128
26 private Integer id; 129 private Integer id;
27 private String name; 130 private String name;
131 // static private List<Integer> typeids;
132 // static private List<String> typenames;
133
134 /***** CONSTRUCTORS *****/
28 135
29 public MainValueType() { 136 public MainValueType() {
30 } 137 }
31 138
32 public MainValueType(String name) { 139 public MainValueType(final String name) {
33 this.name = name; 140 this.name = name;
34 } 141 }
35 142
143
144 /***** METHODS *****/
145
36 @Id 146 @Id
37 @SequenceGenerator( 147 @SequenceGenerator(
38 name = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ", 148 name = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ",
39 sequenceName = "MAIN_VALUE_TYPES_ID_SEQ", 149 sequenceName = "MAIN_VALUE_TYPES_ID_SEQ",
40 allocationSize = 1) 150 allocationSize = 1)
41 @GeneratedValue( 151 @GeneratedValue(
42 strategy = GenerationType.SEQUENCE, 152 strategy = GenerationType.SEQUENCE,
43 generator = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ") 153 generator = "SEQUENCE_MAIN_VALUE_TYPES_ID_SEQ")
44 @Column(name = "id") 154 @Column(name = "id")
45 public Integer getId() { 155 public Integer getId() {
46 return id; 156 return this.id;
47 } 157 }
48 158
49 public void setId(Integer id) { 159 public void setId(final Integer id) {
50 this.id = id; 160 this.id = id;
51 } 161 }
52 162
53 @Column(name = "name") // FIXME: Type conversion needed? 163 @Column(name = "name") // FIXME: Type conversion needed?
54 public String getName() { 164 public String getName() {
55 return name; 165 return this.name;
56 } 166 }
57 167
58 public void setName(String name) { 168 public void setName(final String name) {
59 this.name = name; 169 this.name = name;
60 } 170 }
61 } 171 }
62 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 172 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org