Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java @ 1206:c7370734b872
Prevent parsing and storing PRF duplicates.
flys-backend/trunk@2315 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 11 Jul 2011 09:31:52 +0000 |
parents | 22858e7cca79 |
children | f08fe480092c |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Fri Jul 08 09:45:48 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportRiver.java Mon Jul 11 09:31:52 2011 +0000 @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.HashSet; import java.util.ArrayList; import java.util.Date; import java.util.Calendar; @@ -16,12 +18,12 @@ import de.intevation.flys.model.River; import de.intevation.flys.utils.FileTools; +import de.intevation.flys.utils.FileTools.HashedFile; import org.hibernate.Session; import org.hibernate.Query; public class ImportRiver -implements PRFParser.Callback { private static Logger log = Logger.getLogger(ImportRiver.class); @@ -362,7 +364,44 @@ .getParentFile() // Basisdaten .getParentFile() // Hydrologie .getParentFile(); // <river> - parser.parsePRFs(riverDir, this); + + parser.parsePRFs(riverDir, new PRFParser.Callback() { + + Set<HashedFile> prfs = new HashSet<HashedFile>(); + + @Override + public boolean prfAccept(File file) { + HashedFile hf = new HashedFile(file); + boolean success = prfs.add(hf); + if (!success) { + log.warn("PRF file '" + file + "' seems to be a duplicate."); + } + return success; + } + + @Override + public void prfParsed(PRFParser parser) { + log.debug("callback from PRF parser"); + + String description = parser.getDescription(); + Integer year = parser.getYear(); + ImportTimeInterval ti = year != null + ? new ImportTimeInterval(yearToDate(year)) + : null; + + List<ImportCrossSectionLine> lines = + new ArrayList<ImportCrossSectionLine>(); + + for (Map.Entry<Double, List<XY>> entry: parser.getData().entrySet()) { + BigDecimal km = new BigDecimal(entry.getKey()); + List<XY> points = entry.getValue(); + lines.add(new ImportCrossSectionLine(km, points)); + } + + crossSections.add(new ImportCrossSection( + ImportRiver.this, description, ti, lines)); + } + }); } public static Date yearToDate(int year) { @@ -373,29 +412,6 @@ return cal.getTime(); } - @Override - public void prfParsed(PRFParser parser) { - log.debug("callback from PRF parser"); - - String description = parser.getDescription(); - Integer year = parser.getYear(); - ImportTimeInterval ti = year != null - ? new ImportTimeInterval(yearToDate(year)) - : null; - - List<ImportCrossSectionLine> lines = - new ArrayList<ImportCrossSectionLine>(); - - for (Map.Entry<Double, List<XY>> entry: parser.getData().entrySet()) { - BigDecimal km = new BigDecimal(entry.getKey()); - List<XY> points = entry.getValue(); - lines.add(new ImportCrossSectionLine(km, points)); - } - - crossSections.add(new ImportCrossSection( - this, description, ti, lines)); - } - public void storeDependencies() { storeAnnotations(); storeCrossSections();