Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/Importer.java @ 5027:25c180fa6162
Use BWASTRParser to set official numbers on rivers.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 19 Feb 2013 16:41:00 +0100 |
parents | 255898799ed9 |
children | b87e504f916e |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/Importer.java Tue Feb 19 12:03:55 2013 +0100 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/Importer.java Tue Feb 19 16:41:00 2013 +0100 @@ -2,13 +2,16 @@ import de.intevation.artifacts.common.utils.XMLUtils; +import de.intevation.flys.importer.parsers.AnnotationClassifier; +import de.intevation.flys.importer.parsers.BundesWasserStrassenParser; import de.intevation.flys.importer.parsers.InfoGewParser; -import de.intevation.flys.importer.parsers.AnnotationClassifier; import java.io.File; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.sql.SQLException; @@ -19,6 +22,7 @@ import org.w3c.dom.Document; +import de.intevation.flys.utils.StringUtil; /** Data Importer. Further processing happens per-river. */ public class Importer @@ -26,6 +30,8 @@ /** Private logger. */ private static Logger log = Logger.getLogger(Importer.class); + private static String BWASTR_ID_CSV_FILE = "BWASTR_ID.csv"; + protected List<ImportRiver> rivers; public Importer() { @@ -43,6 +49,7 @@ this.rivers = rivers; } + /** Write rivers and their dependencies/dependants to db. */ public void writeRivers() { log.debug("write rivers started"); @@ -122,10 +129,16 @@ log.info("Start parsing rivers..."); + File bwastrFile = null; + for (String gew: args) { log.info("parsing info gew file: " + gew); + File gewFile = new File(gew); + if (bwastrFile == null) { + bwastrFile = new File(gewFile.getParentFile(), BWASTR_ID_CSV_FILE); + } try { - infoGewParser.parse(new File(gew)); + infoGewParser.parse(gewFile); } catch (IOException ioe) { log.error("error while parsing gew: " + gew); @@ -135,14 +148,46 @@ String gew = Config.INSTANCE.getInfoGewFile(); if (gew != null && gew.length() > 0) { log.info("parsing info gew file: " + gew); + File gewFile = new File(gew); + if (bwastrFile == null) { + bwastrFile = new File(gewFile.getParentFile(), BWASTR_ID_CSV_FILE); + } try { - infoGewParser.parse(new File(gew)); + infoGewParser.parse(gewFile); } catch (IOException ioe) { log.error("error while parsing gew: " + gew); } } + // Look for official numbers. + BundesWasserStrassenParser bwastrIdParser = + new BundesWasserStrassenParser(); + + // Read bwastFile (river-dir + BWASTR_ID_CSV_FILE). + if (!Config.INSTANCE.skipBWASTR()) { + try{ + bwastrIdParser.parse(bwastrFile); + HashMap<String,Long> map = bwastrIdParser.getMap(); + + // Now link rivers with official numbers. + for(ImportRiver river: infoGewParser.getRivers()) { + for(Map.Entry<String, Long> entry: map.entrySet()) { + if (StringUtil.containsIgnoreCase(entry.getKey(), river.getName())) { + river.setOfficialNumber(entry.getValue()); + river.storeOfficialNumber(); + log.debug(river.getName() + " is mapped to bwastr " + entry.getValue()); + } + } + } + } catch (IOException ioe) { + log.warn("BWASTR-file could not be loaded."); + } + } + else { + log.debug("skip reading BWASTR_ID.csv"); + } + if (!Config.INSTANCE.dryRun()) { new Importer(infoGewParser.getRivers()).writeToDatabase(); }