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

  ViewVC Help
Powered by ViewVC 1.1.20