diff src/main/java/de/intevation/lada/data/importer/LAFParser.java @ 331:5d11428e6a09

Made the importer a little more robust and introduced a better warning/error reporting.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 27 Aug 2013 15:28:21 +0200
parents 5844d7457dde
children cb47c33b119d
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/data/importer/LAFParser.java	Tue Aug 27 15:26:46 2013 +0200
+++ b/src/main/java/de/intevation/lada/data/importer/LAFParser.java	Tue Aug 27 15:28:21 2013 +0200
@@ -1,7 +1,10 @@
 package de.intevation.lada.data.importer;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -32,7 +35,12 @@
     List<LKommentarP> probeKommentare;
     List<LKommentarM> messungKommentare;
 
+    private Map<String, List<ReportData>> warnings;
+    private Map<String, List<ReportData>> errors;
+
     public LAFParser() {
+        this.warnings = new HashMap<String, List<ReportData>>();
+        this.errors = new HashMap<String, List<ReportData>>();
         this.setDryRun(false);
         //this.producer = new LAFProducer();
         this.proben = new ArrayList<LProbe>();
@@ -64,11 +72,25 @@
             if (nextPos > 0) {
                 single = laf.substring(0, nextPos + 1);
                 laf = laf.substring(nextPos + 1);
-                readAll(single);
+                try {
+                    readAll(single);
+                }
+                catch (LAFParserException lpe) {
+                    this.errors.putAll(producer.getErrors());
+                    this.producer.reset();
+                    continue;
+                }
             }
             else {
-                readAll(laf);
-                laf = "";
+                try {
+                    readAll(laf);
+                    laf = "";
+                }
+                catch (LAFParserException lpe) {
+                    this.errors.putAll(producer.getErrors());
+                    laf = "";
+                    continue;
+                }
             }
             if (!this.dryRun) {
                 proben.add(producer.getProbe());
@@ -235,4 +257,24 @@
     public List<LKommentarM> getMessungKommentare() {
         return messungKommentare;
     }
+
+    /**
+     * @return the warnings
+     */
+    public Map<String, List<ReportData>> getWarnings() {
+        return warnings;
+    }
+
+    /**
+     * @return the errors
+     */
+    public Map<String, List<ReportData>> getErrors() {
+        return errors;
+    }
+
+    public void reset() {
+        producer.reset();
+        this.errors.clear();
+        this.warnings.clear();
+    }
 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)