/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaWebservice.java
ViewVC logotype

Contents of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/dawa/DawaWebservice.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3020 - (show annotations) (download)
Mon Apr 25 09:23:26 2016 UTC (8 years ago) by torben
File size: 3627 byte(s)
FindBugs: dont rely on default encoding
1 package dk.daoas.adressevedligehold.dawa;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
8 import java.nio.charset.Charset;
9 import java.util.ArrayList;
10 import java.util.Iterator;
11 import java.util.List;
12 import java.util.Map;
13 import java.util.TreeMap;
14
15 import org.apache.commons.csv.CSVFormat;
16 import org.apache.commons.csv.CSVParser;
17 import org.apache.commons.csv.CSVRecord;
18 import org.json.JSONArray;
19 import org.json.JSONObject;
20
21 import dk.daoas.adressevedligehold.beans.Address;
22 import dk.daoas.adressevedligehold.tasks.TaskLogger;
23 import dk.daoas.adressevedligehold.util.DeduplicateHelper;
24 import dk.daoas.adressevedligehold.util.HttpUtil;
25 import dk.daoas.adressevedligehold.util.TimingHelper;
26
27
28 public class DawaWebservice {
29
30 private TaskLogger logger = TaskLogger.getInstance();
31
32 DeduplicateHelper<String> dedup = new DeduplicateHelper<>();
33
34 public Map<String, Integer> kommunerIRegion(int regionskode) throws IOException {
35
36 final String url = "http://dawa.aws.dk/kommuner";
37
38 Map<String,Integer> result = new TreeMap<>();
39
40 String jsonStr = HttpUtil.getContentString(url, 5000);
41 JSONArray root = new JSONArray( jsonStr) ;
42
43 for (int i=0; i<root.length(); i++) {
44 JSONObject current = root.getJSONObject(i);
45
46 int region = current.getInt("regionskode");
47
48 if (region != regionskode) {
49 continue;
50 }
51
52 int kode = current.getInt("kode");
53 String navn = current.getString("navn");
54
55 result.put(navn, kode);
56 }
57
58
59 return result;
60 }
61
62 public List<Address> adresserIKommune(int kommunekode) throws IOException {
63
64 TimingHelper timer = new TimingHelper();
65 List<Address> result = new ArrayList<>();
66
67 final String url = "http://dawa.aws.dk/adgangsadresser?kommunekode=" + kommunekode+ "&format=csv";
68
69 File file = File.createTempFile("dawa_" + kommunekode + "_", "csv");
70 logger.info("Gemmer til " + file.getName() );
71 HttpUtil.getContentToFile(url, file, 5000);
72
73
74
75 logger.info("Downloaded dawa file, elapsed:" + timer.getElapsed());
76 timer = new TimingHelper();
77
78
79
80
81 try (FileInputStream fin = new FileInputStream(file);
82 InputStreamReader reader = new InputStreamReader(fin, Charset.forName("UTF-8"));
83 CSVParser parser = new CSVParser(reader, CSVFormat.EXCEL);
84
85 ) {
86
87
88 Iterator<CSVRecord> it = parser.iterator();
89
90 it.next(); //Skip header line
91
92
93 while (it.hasNext()) {
94 CSVRecord rec = it.next();
95
96 Address a = new Address();
97 a.vejkode = Short.parseShort( rec.get(4) );
98 a.vejnavn = dedup.getInstance( rec.get(5) );
99 String husnrStr = rec.get(7);
100
101 a.husnr = Short.parseShort( husnrStr.replaceAll("[^\\d]","") );
102
103 if (a.husnr > 900) {
104 continue;
105 }
106
107 a.husnrbogstav = dedup.getInstance( husnrStr.replaceAll("\\d", "") );
108
109 a.postnr = Short.parseShort( rec.get(9) );
110 a.kommunekode = Short.parseShort( rec.get(13) );
111
112
113 a.latitude = safeParseFloat( rec.get(21) );
114 a.longitude = safeParseFloat( rec.get(22) );
115
116 result.add(a);
117
118 }
119 }
120 boolean deleted = file.delete();
121 if (deleted == false) {
122 logger.info("Could not delete tmp file");
123 }
124
125 logger.info("AdressCount:" + result.size() + " - " + timer.getElapsed() + "ms");
126
127
128
129 return result;
130 }
131
132 private float safeParseFloat(String str) {
133 if (str.equals(""))
134 return (float) 0.0;
135
136 return Float.parseFloat(str);
137
138 }
139
140 }

  ViewVC Help
Powered by ViewVC 1.1.20