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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)