/[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 3021 - (show annotations) (download)
Mon Apr 25 09:34:22 2016 UTC (8 years, 1 month ago) by torben
File size: 3599 byte(s)
More findBugs
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> kommunerIRegion(int regionskode) 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 region = current.getInt("regionskode");
46
47 if (region != regionskode) {
48 continue;
49 }
50
51 int kode = current.getInt("kode");
52 String navn = current.getString("navn");
53
54 result.put(navn, kode);
55 }
56
57
58 return result;
59 }
60
61 public List<Address> adresserIKommune(int kommunekode) throws IOException {
62
63 TimingHelper timer = new TimingHelper();
64 List<Address> result = new ArrayList<>();
65
66 final String url = "http://dawa.aws.dk/adgangsadresser?kommunekode=" + kommunekode+ "&format=csv";
67
68 File file = File.createTempFile("dawa_" + kommunekode + "_", "csv");
69 logger.info("Gemmer til " + file.getName() );
70 HttpUtil.getContentToFile(url, file, 5000);
71
72
73
74 logger.info("Downloaded dawa file, elapsed:" + timer.getElapsed());
75 timer = new TimingHelper();
76
77
78
79
80 try (FileInputStream fin = new FileInputStream(file);
81 InputStreamReader reader = new InputStreamReader(fin, Charset.forName("UTF-8"));
82 CSVParser parser = new CSVParser(reader, CSVFormat.EXCEL);
83
84 ) {
85
86
87 Iterator<CSVRecord> it = parser.iterator();
88
89 it.next(); //Skip header line
90
91
92 while (it.hasNext()) {
93 CSVRecord rec = it.next();
94
95 Address a = new Address();
96 a.vejkode = Short.parseShort( rec.get(4) );
97 a.vejnavn = dedup.getInstance( rec.get(5) );
98 String husnrStr = rec.get(7);
99
100 a.husnr = Short.parseShort( husnrStr.replaceAll("[^\\d]","") );
101
102 if (a.husnr > 900) {
103 continue;
104 }
105
106 a.husnrbogstav = dedup.getInstance( husnrStr.replaceAll("\\d", "") );
107
108 a.postnr = Short.parseShort( rec.get(9) );
109 a.kommunekode = Short.parseShort( rec.get(13) );
110
111
112 a.latitude = safeParseFloat( rec.get(21) );
113 a.longitude = safeParseFloat( rec.get(22) );
114
115 result.add(a);
116
117 }
118 }
119 boolean deleted = file.delete();
120 if (deleted == false) {
121 logger.info("Could not delete tmp file");
122 }
123
124 logger.info("AdressCount:" + result.size() + " - " + timer.getElapsed() + "ms");
125
126
127
128 return result;
129 }
130
131 private float safeParseFloat(String str) {
132 if (str.equals(""))
133 return (float) 0.0;
134
135 return Float.parseFloat(str);
136
137 }
138
139 }

  ViewVC Help
Powered by ViewVC 1.1.20