Mercurial > lada > lada-server
comparison src/main/java/de/intevation/lada/data/importer/AttributeMapper.java @ 321:5844d7457dde
Completed importer for LAF format. Ort objects still need some attention.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 23 Aug 2013 11:35:24 +0200 |
parents | 821557a17e5e |
children | 5d11428e6a09 |
comparison
equal
deleted
inserted
replaced
320:6621f7345c06 | 321:5844d7457dde |
---|---|
2 | 2 |
3 import java.text.DateFormat; | 3 import java.text.DateFormat; |
4 import java.text.ParseException; | 4 import java.text.ParseException; |
5 import java.text.SimpleDateFormat; | 5 import java.text.SimpleDateFormat; |
6 import java.util.Date; | 6 import java.util.Date; |
7 import java.util.List; | |
7 import java.util.regex.Matcher; | 8 import java.util.regex.Matcher; |
8 import java.util.regex.Pattern; | 9 import java.util.regex.Pattern; |
9 | 10 |
11 import javax.ejb.Stateless; | |
10 import javax.inject.Inject; | 12 import javax.inject.Inject; |
13 import javax.inject.Named; | |
11 import javax.persistence.EntityManager; | 14 import javax.persistence.EntityManager; |
12 | 15 |
16 import de.intevation.lada.data.Repository; | |
13 import de.intevation.lada.model.LKommentarM; | 17 import de.intevation.lada.model.LKommentarM; |
14 import de.intevation.lada.model.LKommentarP; | 18 import de.intevation.lada.model.LKommentarP; |
15 import de.intevation.lada.model.LMessung; | 19 import de.intevation.lada.model.LMessung; |
16 import de.intevation.lada.model.LMessungId; | 20 import de.intevation.lada.model.LMessungId; |
17 import de.intevation.lada.model.LMesswert; | 21 import de.intevation.lada.model.LMesswert; |
18 import de.intevation.lada.model.LOrt; | 22 import de.intevation.lada.model.LOrt; |
19 import de.intevation.lada.model.LProbe; | 23 import de.intevation.lada.model.LProbe; |
20 | 24 import de.intevation.lada.model.SMessEinheit; |
21 | 25 import de.intevation.lada.model.SMessgroesse; |
26 import de.intevation.lada.rest.Response; | |
27 | |
28 @Stateless | |
22 public class AttributeMapper | 29 public class AttributeMapper |
23 { | 30 { |
24 @Inject | 31 @Inject |
25 private EntityManager em; | 32 private EntityManager em; |
26 | 33 |
34 @Inject | |
35 @Named("readonlyrepository") | |
36 private Repository sRepository; | |
37 | |
27 public LProbe addAttribute(String key, Object value, LProbe probe) { | 38 public LProbe addAttribute(String key, Object value, LProbe probe) { |
28 DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm"); | 39 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); |
29 if ("datenbasis_s".equals(key)) { | 40 if ("datenbasis_s".equals(key)) { |
30 Integer v = Integer.valueOf(value.toString()); | 41 Integer v = Integer.valueOf(value.toString()); |
31 probe.setDatenbasisId(v); | 42 probe.setDatenbasisId(v); |
32 } | 43 } |
33 else if ("probe_id".equals(key)) { | 44 else if ("probe_id".equals(key)) { |
38 } | 49 } |
39 else if ("mpr_id".equals(key)) { | 50 else if ("mpr_id".equals(key)) { |
40 Integer v = Integer.valueOf(value.toString()); | 51 Integer v = Integer.valueOf(value.toString()); |
41 probe.setMprId(v); | 52 probe.setMprId(v); |
42 } | 53 } |
54 else if ("netzkennung".equals(key)) { | |
55 probe.setNetzbetreiberId(value.toString()); | |
56 } | |
43 else if ("messprogramm_land".equals(key)) { | 57 else if ("messprogramm_land".equals(key)) { |
44 probe.setMplId(value.toString()); | 58 probe.setMplId(value.toString()); |
45 } | 59 } |
46 else if ("messstelle".equals(key)) { | 60 else if ("messstelle".equals(key)) { |
47 probe.setMstId(value.toString()); | 61 probe.setMstId(value.toString()); |
97 } | 111 } |
98 else { | 112 else { |
99 probe.setTest(false); | 113 probe.setTest(false); |
100 } | 114 } |
101 } | 115 } |
116 | |
117 probe.setProbenartId(1); | |
102 return probe; | 118 return probe; |
103 } | 119 } |
104 | 120 |
105 public LKommentarP addAttribute( | 121 public LKommentarP addAttribute( |
106 String key, | 122 String key, |
107 Object values, | 123 Object values, |
108 LKommentarP kommentar | 124 LKommentarP kommentar |
109 ) { | 125 ) { |
110 DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm"); | 126 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); |
111 String v = values.toString(); | 127 String v = values.toString(); |
112 String erzeuger = v.substring(1, 5); | 128 String erzeuger = v.substring(1, 5); |
113 String date = v.substring(8, 21); | 129 String date = v.substring(8, 21); |
114 Date d; | 130 Date d; |
115 try { | 131 try { |
128 public LKommentarM addAttribute( | 144 public LKommentarM addAttribute( |
129 String key, | 145 String key, |
130 Object values, | 146 Object values, |
131 LKommentarM kommentar | 147 LKommentarM kommentar |
132 ) { | 148 ) { |
133 DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm"); | 149 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); |
134 String v = values.toString(); | 150 String v = values.toString(); |
135 String erzeuger = v.substring(1, 5); | 151 String erzeuger = v.substring(1, 5); |
136 String date = v.substring(8, 21); | 152 String date = v.substring(8, 21); |
137 Date d; | 153 Date d; |
138 try { | 154 try { |
151 public LMessung addAttribute( | 167 public LMessung addAttribute( |
152 String key, | 168 String key, |
153 Object values, | 169 Object values, |
154 LMessung messung | 170 LMessung messung |
155 ) { | 171 ) { |
156 DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm"); | 172 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); |
157 if ("messungs_id".equals(key)) { | 173 if ("messungs_id".equals(key)) { |
158 LMessungId id = messung.getId(); | 174 LMessungId id = messung.getId(); |
159 Integer v = Integer.valueOf(values.toString()); | 175 Integer v = Integer.valueOf(values.toString()); |
160 id.setMessungsId(v); | 176 id.setMessungsId(v); |
177 messung.setMessungsId(v); | |
161 messung.setId(id); | 178 messung.setId(id); |
162 } | 179 } |
163 else if ("nebenprobennummer".equals(key)) { | 180 else if ("nebenprobennummer".equals(key)) { |
164 messung.setNebenprobenNr(values.toString()); | 181 messung.setNebenprobenNr(values.toString()); |
165 } | 182 } |
201 Pattern p = Pattern.compile( | 218 Pattern p = Pattern.compile( |
202 "(\".+\")( .+ )(\".+\")( .*)( .{1,12})( .{1,9})(.{0,9})(.{0,3})"); | 219 "(\".+\")( .+ )(\".+\")( .*)( .{1,12})( .{1,9})(.{0,9})(.{0,3})"); |
203 //TODO Does not perfectly match... Use better matching for floats. | 220 //TODO Does not perfectly match... Use better matching for floats. |
204 Matcher m = p.matcher(values.toString()); | 221 Matcher m = p.matcher(values.toString()); |
205 if (m.matches()) { | 222 if (m.matches()) { |
206 String messgroesse = m.group(1); | 223 String messgroesse = m.group(1).substring(1, m.group(1).length() - 1); |
207 String wert = m.group(2); | 224 String wert = m.group(2); |
208 String einheit = m.group(3); | 225 String einheit = m.group(3).substring(1, m.group(3).length() - 1); |
209 if (wert.startsWith(" <")) { | 226 if (wert.startsWith(" <")) { |
210 wert = wert.substring(2); | 227 wert = wert.substring(2); |
211 messwert.setGrenzwertueberschreitung(false); | 228 messwert.setGrenzwertueberschreitung(false); |
212 } | 229 } |
213 else if (wert.startsWith(" >")) { | 230 else if (wert.startsWith(" >")) { |
214 wert = wert.substring(2); | 231 wert = wert.substring(2); |
215 messwert.setGrenzwertueberschreitung(true); | 232 messwert.setGrenzwertueberschreitung(true); |
216 } | 233 } |
217 float fWert = Float.valueOf(wert); | 234 float fWert = Float.valueOf(wert); |
218 messwert.setMesswert(fWert); | 235 messwert.setMesswert(fWert); |
236 Response responseEinheit = sRepository.findAll(SMessEinheit.class); | |
237 List<SMessEinheit> einheiten = | |
238 (List<SMessEinheit>)responseEinheit.getData(); | |
239 boolean foundEinheit = false; | |
240 for (SMessEinheit e: einheiten) { | |
241 if(e.getEinheit().equals(einheit)) { | |
242 foundEinheit = true; | |
243 messwert.setMehId((int) e.getMehId()); | |
244 } | |
245 } | |
246 if (!foundEinheit) { | |
247 return null; | |
248 //TODO: handle warning! | |
249 } | |
250 Response responseGroesse = sRepository.findAll(SMessgroesse.class); | |
251 List<SMessgroesse> messgroessen = | |
252 (List<SMessgroesse>)responseGroesse.getData(); | |
253 boolean foundGroesse = false; | |
254 for (SMessgroesse g: messgroessen) { | |
255 if(g.getMessgro0esse().equals(messgroesse)) { | |
256 foundGroesse = true; | |
257 messwert.setMessgroesseId(g.getMessgroesseId()); | |
258 messwert.getId().setMessgroesseId(g.getMessgroesseId()); | |
259 } | |
260 } | |
261 if (!foundGroesse) { | |
262 return null; | |
263 //TODO: handle warning! | |
264 } | |
219 } | 265 } |
220 //TODO: Match the other values. | 266 //TODO: Match the other values. |
221 return messwert; | 267 return messwert; |
222 } | 268 } |
223 | 269 |