Mercurial > lada > lada-server
comparison src/main/java/de/intevation/lada/data/exporter/LAFCreator.java @ 327:891a2133cf46
Added LAF exporter and LAF creator.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 27 Aug 2013 09:45:23 +0200 |
parents | |
children | 046cdc094c72 |
comparison
equal
deleted
inserted
replaced
326:86cda4c57092 | 327:891a2133cf46 |
---|---|
1 package de.intevation.lada.data.exporter; | |
2 | |
3 import java.text.DateFormat; | |
4 import java.text.SimpleDateFormat; | |
5 import java.util.ArrayList; | |
6 import java.util.List; | |
7 import java.util.Map; | |
8 | |
9 import javax.inject.Inject; | |
10 import javax.inject.Named; | |
11 | |
12 import de.intevation.lada.data.QueryBuilder; | |
13 import de.intevation.lada.data.Repository; | |
14 import de.intevation.lada.model.LKommentarM; | |
15 import de.intevation.lada.model.LKommentarP; | |
16 import de.intevation.lada.model.LMessung; | |
17 import de.intevation.lada.model.LMesswert; | |
18 import de.intevation.lada.model.LOrt; | |
19 import de.intevation.lada.model.LProbe; | |
20 import de.intevation.lada.model.LProbeInfo; | |
21 import de.intevation.lada.model.Ort; | |
22 import de.intevation.lada.model.SMessEinheit; | |
23 import de.intevation.lada.model.SMessgroesse; | |
24 import de.intevation.lada.model.SProbenart; | |
25 import de.intevation.lada.rest.Response; | |
26 | |
27 @Named("lafcreator") | |
28 public class LAFCreator | |
29 implements Creator | |
30 { | |
31 | |
32 @Inject | |
33 @Named("lproberepository") | |
34 private Repository proben; | |
35 | |
36 @Inject | |
37 @Named("lmessungrepository") | |
38 private Repository messungRepo; | |
39 | |
40 @Inject | |
41 @Named("lortrepository") | |
42 private Repository ortRepo; | |
43 | |
44 @Inject | |
45 @Named("lmessungrepository") | |
46 private Repository messwertRepo; | |
47 | |
48 @Inject | |
49 @Named("lkommentarmrepository") | |
50 private Repository mkommentarRepo; | |
51 | |
52 @Inject | |
53 @Named("lkommentarRepository") | |
54 private Repository pkommentarRepo; | |
55 | |
56 @Inject | |
57 @Named("readonlyrepository") | |
58 private Repository readonlyRepo; | |
59 | |
60 @Override | |
61 public String create(String probeId) { | |
62 String lafProbe = "%PROBE%\n"; | |
63 lafProbe += probeToLAF(probeId); | |
64 return lafProbe; | |
65 } | |
66 | |
67 private String probeToLAF(String probeId) { | |
68 Response found = this.proben.findById(LProbe.class, probeId); | |
69 if (found.getData() == null) { | |
70 return null; | |
71 } | |
72 ArrayList<LProbeInfo> aProbe = (ArrayList<LProbeInfo>)found.getData(); | |
73 LProbeInfo probe = aProbe.get(0); | |
74 String lafProbe = writeAttributes(probe); | |
75 return lafProbe; | |
76 } | |
77 | |
78 private String writeAttributes(LProbeInfo probe) { | |
79 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); | |
80 QueryBuilder<LKommentarP> kommBuilder = | |
81 new QueryBuilder<LKommentarP>( | |
82 pkommentarRepo.getEntityManager(), LKommentarP.class); | |
83 kommBuilder.and("probeId", probe.getProbeId()); | |
84 Response kommentar = mkommentarRepo.filter(kommBuilder.getQuery()); | |
85 List<LKommentarP> kommentare = (List<LKommentarP>)kommentar.getData(); | |
86 | |
87 QueryBuilder<SProbenart> artBuilder = | |
88 new QueryBuilder<SProbenart>( | |
89 readonlyRepo.getEntityManager(), SProbenart.class); | |
90 artBuilder.and("probenartId", probe.getProbenartId()); | |
91 Response art = readonlyRepo.filter(artBuilder.getQuery()); | |
92 List<SProbenart> probenart = (List<SProbenart>)art.getData(); | |
93 | |
94 String laf = ""; | |
95 laf += probe.getDatenbasisId() == null ? | |
96 "": lafLine("DATENBASIS_S", probe.getDatenbasisId().toString()); | |
97 laf += probe.getNetzbetreiberId() == null ? | |
98 "" : lafLine("NETZKENNUNG", probe.getNetzbetreiberId()); | |
99 laf += probe.getMstId() == null ? | |
100 "" : lafLine("MESSSTELLE", probe.getMstId()); | |
101 laf += lafLine("PROBEID", probe.getProbeId()); | |
102 laf += lafLine("HAUPTPROBENNUMMER", probe.getHauptprobenNr()); | |
103 laf += probe.getBaId() == null ? | |
104 "" : lafLine("MESSPROGRAMM_S", "\"" + probe.getBaId() + "\""); | |
105 laf += probe.getProbenartId() == null ? | |
106 "" : lafLine("PROBENART", | |
107 "\"" + probenart.get(0).getProbenart() + "\""); | |
108 laf += probe.getSolldatumBeginn() == null ? | |
109 "" : lafLine("SOLL_DATUM_UHRZEIT_A", | |
110 format.format(probe.getSolldatumBeginn())); | |
111 laf += probe.getSolldatumEnde() == null ? | |
112 "" : lafLine("SOLL_DATUM_UHRZEIT_E", | |
113 format.format(probe.getSolldatumEnde())); | |
114 laf += probe.getProbeentnahmeBeginn() == null ? | |
115 "" : lafLine("PROBENAHME_DATUM_UHRZEIT_A", | |
116 format.format(probe.getProbeentnahmeBeginn())); | |
117 laf += probe.getProbeentnahmeEnde() == null ? | |
118 "" : lafLine("PROBENAHME_DATUM_UHRZEIT_E", | |
119 format.format(probe.getProbeentnahmeEnde())); | |
120 laf += probe.getUmwId() == null ? | |
121 "" : lafLine("UMWELTBEREICH_S", probe.getUmwId()); | |
122 laf += probe.getMedia() == null ? | |
123 "" : lafLine("MEDIA", "\"" + probe.getMedia() + "\""); | |
124 laf += probe.getMediaDesk() == null ? | |
125 "" : lafLine("DESKRIPTOREN", "\"" + probe.getMediaDesk() + "\""); | |
126 laf += probe.getTest() == Boolean.TRUE ? | |
127 lafLine("TESTDATEN", "1") : lafLine("TESTDATEN", "0"); | |
128 for (LKommentarP kp : kommentare) { | |
129 laf += writeKommentar(kp); | |
130 } | |
131 laf += writeMessung(probe); | |
132 laf += writeOrt(probe); | |
133 return laf; | |
134 } | |
135 | |
136 private String writeOrt(LProbeInfo probe) { | |
137 QueryBuilder<LOrt> builder = | |
138 new QueryBuilder<LOrt>( | |
139 ortRepo.getEntityManager(), | |
140 LOrt.class); | |
141 builder.and("probeId", probe.getProbeId()); | |
142 Response objects = ortRepo.filter(builder.getQuery()); | |
143 List<LOrt> orte = (List<LOrt>)objects.getData(); | |
144 | |
145 String laf = ""; | |
146 for(LOrt o : orte) { | |
147 laf += "%ORT%\n"; | |
148 QueryBuilder<Ort> oBuilder = | |
149 new QueryBuilder<Ort>( | |
150 readonlyRepo.getEntityManager(), Ort.class); | |
151 oBuilder.and("ortId", o.getOrtId()); | |
152 Response resp = readonlyRepo.filter(oBuilder.getQuery()); | |
153 List<Ort> ort = (List<Ort>)resp.getData(); | |
154 laf += lafLine("ORT_CODE", | |
155 "\"" + ort.get(0).getBezeichnung() + "\""); | |
156 laf += lafLine("ORT_TYP", "\"" + o.getOrtsTyp() + "\""); | |
157 laf += o.getOrtszusatztext() == null ? "": | |
158 lafLine("ORT_ZUSATZTEXT", "\"" + o.getOrtszusatztext() + "\""); | |
159 } | |
160 return laf; | |
161 } | |
162 | |
163 private String writeKommentar(LKommentarP kp) { | |
164 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); | |
165 String value = "\"" + kp.getErzeuger() + "\" " + | |
166 format.format(kp.getKDatum()) + " " + | |
167 "\"" + kp.getKText() + "\""; | |
168 return lafLine("PROBENKOMMENTAR", value); | |
169 } | |
170 | |
171 private String writeMessung(LProbeInfo probe) { | |
172 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); | |
173 // Get all messungen | |
174 QueryBuilder<LMessung> builder = | |
175 new QueryBuilder<LMessung>( | |
176 messungRepo.getEntityManager(), | |
177 LMessung.class); | |
178 builder.and("probeId", probe.getProbeId()); | |
179 Response objects = messungRepo.filter(builder.getQuery()); | |
180 List<LMessung> mess = (List<LMessung>)objects.getData(); | |
181 | |
182 String laf = ""; | |
183 for(LMessung m : mess) { | |
184 laf += "%MESSUNG%\n"; | |
185 QueryBuilder<LMesswert> wertBuilder = | |
186 new QueryBuilder<LMesswert>( | |
187 messwertRepo.getEntityManager(), LMesswert.class); | |
188 wertBuilder.and("probeId", probe.getProbeId()).and("messungsId", m.getMessungsId()); | |
189 Response messw = messwertRepo.filter(wertBuilder.getQuery()); | |
190 List<LMesswert> werte = (List<LMesswert>)messw.getData(); | |
191 QueryBuilder<LKommentarM> kommBuilder = | |
192 new QueryBuilder<LKommentarM>( | |
193 mkommentarRepo.getEntityManager(), LKommentarM.class); | |
194 kommBuilder.and("probeId", probe.getProbeId()).and("messungsId", m.getMessungsId()); | |
195 Response kommentar = mkommentarRepo.filter(kommBuilder.getQuery()); | |
196 List<LKommentarM> kommentare = (List<LKommentarM>)kommentar.getData(); | |
197 laf += lafLine("MESSUNGSID", m.getMessungsId().toString()); | |
198 laf += lafLine("NEBENPROBENNUMMER", m.getNebenprobenNr()); | |
199 laf += m.getMesszeitpunkt() == null ? | |
200 "" : lafLine( | |
201 "MESS_DATUM_UHRZEIT", | |
202 format.format(m.getMesszeitpunkt())); | |
203 laf += m.getMessdauer() == null ? | |
204 "" : lafLine("MESSZEIT_SEKUNDEN", m.getMessdauer().toString()); | |
205 laf += m.getMmtId() == null ? | |
206 "" : lafLine("MESSMETHODE_S", m.getMmtId()); | |
207 for (LMesswert mw : werte) { | |
208 laf += writeMesswert(mw); | |
209 } | |
210 for (LKommentarM mk: kommentare) { | |
211 laf += writeKommentar(mk); | |
212 } | |
213 } | |
214 return laf; | |
215 } | |
216 | |
217 private String writeKommentar(LKommentarM mk) { | |
218 DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm"); | |
219 String value = "\"" + mk.getErzeuger() + "\" " + | |
220 format.format(mk.getKDatum()) + " " + | |
221 "\"" + mk.getKText() + "\""; | |
222 return lafLine("KOMMENTAR", value); | |
223 } | |
224 | |
225 private String writeMesswert(LMesswert mw) { | |
226 QueryBuilder<SMessgroesse> builder = | |
227 new QueryBuilder<SMessgroesse>( | |
228 readonlyRepo.getEntityManager(), SMessgroesse.class); | |
229 builder.and("messgroesseId", mw.getMessgroesseId()); | |
230 Response r = readonlyRepo.filter(builder.getQuery()); | |
231 List<SMessgroesse> sm = (List<SMessgroesse>)r.getData(); | |
232 QueryBuilder<SMessEinheit> einheitBuilder = | |
233 new QueryBuilder<SMessEinheit>( | |
234 readonlyRepo.getEntityManager(), SMessEinheit.class); | |
235 einheitBuilder.and("mehId", mw.getMehId()); | |
236 Response re = readonlyRepo.filter(einheitBuilder.getQuery()); | |
237 List<SMessEinheit> me = (List<SMessEinheit>)re.getData(); | |
238 String value = "\"" + sm.get(0).getMessgro0esse() + "\""; | |
239 if (mw.getGrenzwertueberschreitung() != null && | |
240 !mw.getGrenzwertueberschreitung()) { | |
241 value += " <"; | |
242 } | |
243 else { | |
244 value += " "; | |
245 } | |
246 value += mw.getMesswert(); | |
247 value += " \"" + me.get(0).getEinheit() + "\""; | |
248 value += mw.getMessfehler() == null ? " NULL" : " " + mw.getMessfehler(); | |
249 value += mw.getNwgZuMesswert() == null ? " NULL" : " " + mw.getNwgZuMesswert(); | |
250 value += mw.getGrenzwertueberschreitung() == null ? " N" : | |
251 mw.getGrenzwertueberschreitung() ? " Y" : " N"; | |
252 return lafLine("MESSWERT", value); | |
253 } | |
254 | |
255 private String lafLine(String key, String value) { | |
256 for (int i = key.length(); i < 30; i++) { | |
257 key += " "; | |
258 } | |
259 return key + value + "\n"; | |
260 } | |
261 } |