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

  ViewVC Help
Powered by ViewVC 1.1.20