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