package dk.daoas.adressevedligehold.dawa; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; import org.json.JSONArray; import org.json.JSONObject; import dk.daoas.adressevedligehold.beans.Address; import dk.daoas.adressevedligehold.tasks.TaskLogger; import dk.daoas.adressevedligehold.util.DeduplicateHelper; import dk.daoas.adressevedligehold.util.HttpUtil; import dk.daoas.adressevedligehold.util.TimingHelper; public class DawaWebservice { private TaskLogger logger = TaskLogger.getInstance(); DeduplicateHelper dedup = new DeduplicateHelper<>(); public Map kommunerIRegion(int regionskode) throws IOException { final String url = "http://dawa.aws.dk/kommuner"; Map result = new TreeMap<>(); String jsonStr = HttpUtil.getContentString(url, 5000); JSONArray root = new JSONArray( jsonStr) ; for (int i=0; i adresserIKommune(int kommunekode) throws IOException { List
result = new ArrayList<>(); final String url = "http://dawa.aws.dk/adgangsadresser?kommunekode=" + kommunekode+ "&format=csv"; File file = File.createTempFile("dawa_" + kommunekode + "_", "csv"); logger.info("Gemmer til " + file.getName() ); HttpUtil.getContentToFile(url, file, 5000); TimingHelper timer = new TimingHelper(); logger.info("Loaded data elapsed:" + timer.getElapsed()); timer = new TimingHelper(); try (FileReader fin = new FileReader(file); CSVParser parser = new CSVParser(fin, CSVFormat.EXCEL); ) { Iterator it = parser.iterator(); it.next(); //Skip header line while (it.hasNext()) { CSVRecord rec = it.next(); Address a = new Address(); a.vejkode = Short.parseShort( rec.get(4) ); a.vejnavn = dedup.getInstance( rec.get(5) ); String husnrStr = rec.get(7); a.husnr = Short.parseShort( husnrStr.replaceAll("[^\\d]","") ); if (a.husnr > 900) { continue; } a.husnrbogstav = dedup.getInstance( husnrStr.replaceAll("\\d", "") ); a.postnr = Short.parseShort( rec.get(9) ); a.kommunekode = Short.parseShort( rec.get(13) ); a.latitude = safeParseFloat( rec.get(21) ); a.longitude = safeParseFloat( rec.get(22) ); result.add(a); } } file.delete(); logger.info("AdressCount:" + result.size() + " - " + timer.getElapsed() + "ms"); return result; } private float safeParseFloat(String str) { if (str.equals("")) return (float) 0.0; return Float.parseFloat(str); } }