Mercurial > dive4elements > river
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 : |