diff 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
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/data/importer/AttributeMapper.java	Fri Aug 23 11:32:21 2013 +0200
+++ b/src/main/java/de/intevation/lada/data/importer/AttributeMapper.java	Fri Aug 23 11:35:24 2013 +0200
@@ -4,12 +4,16 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.ejb.Stateless;
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.persistence.EntityManager;
 
+import de.intevation.lada.data.Repository;
 import de.intevation.lada.model.LKommentarM;
 import de.intevation.lada.model.LKommentarP;
 import de.intevation.lada.model.LMessung;
@@ -17,15 +21,22 @@
 import de.intevation.lada.model.LMesswert;
 import de.intevation.lada.model.LOrt;
 import de.intevation.lada.model.LProbe;
+import de.intevation.lada.model.SMessEinheit;
+import de.intevation.lada.model.SMessgroesse;
+import de.intevation.lada.rest.Response;
 
-
+@Stateless
 public class AttributeMapper
 {
     @Inject
     private EntityManager em;
 
+    @Inject
+    @Named("readonlyrepository")
+    private Repository sRepository;
+
     public LProbe addAttribute(String key, Object value, LProbe probe) {
-        DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm");
+        DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm");
         if ("datenbasis_s".equals(key)) {
             Integer v = Integer.valueOf(value.toString());
             probe.setDatenbasisId(v);
@@ -40,6 +51,9 @@
             Integer v = Integer.valueOf(value.toString());
             probe.setMprId(v);
         }
+        else if ("netzkennung".equals(key)) {
+            probe.setNetzbetreiberId(value.toString());
+        }
         else if ("messprogramm_land".equals(key)) {
             probe.setMplId(value.toString());
         }
@@ -99,6 +113,8 @@
                 probe.setTest(false);
             }
         }
+        
+        probe.setProbenartId(1);
         return probe;
     }
 
@@ -107,7 +123,7 @@
         Object values,
         LKommentarP kommentar
     ) {
-        DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm");
+        DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm");
         String v = values.toString();
         String erzeuger = v.substring(1, 5);
         String date = v.substring(8, 21);
@@ -130,7 +146,7 @@
         Object values,
         LKommentarM kommentar
     ) {
-        DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm");
+        DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm");
         String v = values.toString();
         String erzeuger = v.substring(1, 5);
         String date = v.substring(8, 21);
@@ -153,11 +169,12 @@
         Object values,
         LMessung messung
     ) {
-        DateFormat format = new SimpleDateFormat("yyyyMMDD hhmm");
+        DateFormat format = new SimpleDateFormat("yyyyMMdd HHmm");
         if ("messungs_id".equals(key)) {
             LMessungId id = messung.getId();
             Integer v = Integer.valueOf(values.toString());
             id.setMessungsId(v);
+            messung.setMessungsId(v);
             messung.setId(id);
         }
         else if ("nebenprobennummer".equals(key)) {
@@ -203,9 +220,9 @@
         //TODO Does not perfectly match... Use better matching for floats.
         Matcher m = p.matcher(values.toString());
         if (m.matches()) {
-            String messgroesse = m.group(1);
+            String messgroesse = m.group(1).substring(1, m.group(1).length() - 1);
             String wert = m.group(2);
-            String einheit = m.group(3);
+            String einheit = m.group(3).substring(1, m.group(3).length() - 1);
             if (wert.startsWith(" <")) {
                 wert = wert.substring(2);
                 messwert.setGrenzwertueberschreitung(false);
@@ -216,6 +233,35 @@
             }
             float fWert = Float.valueOf(wert);
             messwert.setMesswert(fWert);
+            Response responseEinheit = sRepository.findAll(SMessEinheit.class);
+            List<SMessEinheit> einheiten = 
+                (List<SMessEinheit>)responseEinheit.getData();
+            boolean foundEinheit = false;
+            for (SMessEinheit e: einheiten) {
+                if(e.getEinheit().equals(einheit)) {
+                    foundEinheit = true;
+                    messwert.setMehId((int) e.getMehId());
+                }
+            }
+            if (!foundEinheit) {
+                return null;
+                //TODO: handle warning!
+            }
+            Response responseGroesse = sRepository.findAll(SMessgroesse.class);
+            List<SMessgroesse> messgroessen = 
+                (List<SMessgroesse>)responseGroesse.getData();
+            boolean foundGroesse = false;
+            for (SMessgroesse g: messgroessen) {
+                if(g.getMessgro0esse().equals(messgroesse)) {
+                    foundGroesse = true;
+                    messwert.setMessgroesseId(g.getMessgroesseId());
+                    messwert.getId().setMessgroesseId(g.getMessgroesseId());
+                }
+            }
+            if (!foundGroesse) {
+                return null;
+                //TODO: handle warning!
+            }
         }
         //TODO: Match the other values.
         return messwert;
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)