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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3005 - (show annotations) (download)
Tue Apr 19 12:56:57 2016 UTC (8 years ago) by torben
File size: 5054 byte(s)
Report new addresses in html table
1 package dk.daoas.adressevedligehold.dawa;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Set;
6 import java.util.TreeMap;
7 import java.util.TreeSet;
8
9 import dk.daoas.adressevedligehold.MailSender;
10 import dk.daoas.adressevedligehold.beans.Address;
11 import dk.daoas.adressevedligehold.beans.Address.AddressState;
12 import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;
13 import dk.daoas.adressevedligehold.tasks.Task;
14 import dk.daoas.adressevedligehold.tasks.TaskLogger;
15 import dk.daoas.adressevedligehold.util.DeduplicateHelper;
16
17 /*
18 * Alle regioner: http://dawa.aws.dk/regioner/
19 * Enkelt region: http://dawa.aws.dk/regioner/{region}
20 */
21
22
23 public class DawaTask extends Task {
24
25 final String kommentarTemplate = "Oprettet via DAWA";
26
27 private TaskLogger logger = TaskLogger.getInstance();
28
29 private short regionCode;
30 private String regionName;
31
32
33
34 DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
35
36 DeduplicateHelper<String> dedup = new DeduplicateHelper<>();
37
38 public DawaTask(short regionCode, String regionName){
39 this.regionCode = regionCode;
40 this.regionName = regionName;
41
42 }
43
44 @Override
45 protected void taskRun() throws Exception {
46
47 int kommunekode = 779;
48 String kommunenavn = "Skive";
49
50 // stage 1 - hent alle data
51 DawaWebservice dawa = new DawaWebservice();
52 List<Address> dawaListe = dawa.lookup(kommunekode);
53
54 List<Address> adresser = db.getAllAdresses();
55
56
57
58 // stage 2 opbyg søge struktur
59 logger.info("Building search structure");
60 TreeMap<String, DawaGade> search = new TreeMap<>();
61
62 for (Address addr : adresser) {
63 String dav = getDAVid(addr);
64 DawaGade gade = search.get(dav);
65 if (gade == null) {
66 gade = new DawaGade();
67 search.put(dav, gade);
68 }
69 gade.gadeids.add( addr.gadeid );
70 gade.adresser.add(addr);
71 }
72 logger.info("Build search structure done");
73
74 // stage 3 søg
75 Set<String> ukendteDAV = new TreeSet<>();
76 Set<String> dobbeltGadeidDAV = new TreeSet<>();
77 List<Address> nyeAdresser = new ArrayList<>();
78
79 for (Address dawaAddr : dawaListe) {
80 String dav = getDAVid(dawaAddr);
81 DawaGade gade = search.get(dav);
82 if (gade == null) {
83 ukendteDAV.add(dav + " " + dawaAddr.vejnavn);
84 continue;
85 }
86
87 if (gade.gadeids.size() != 1) {
88 dobbeltGadeidDAV.add(dav + " " + dawaAddr.vejnavn);
89 }
90
91 boolean fundet = false;
92 for (Address target : gade.adresser) {
93 if ( target.husnr == dawaAddr.husnr && target.husnrbogstav.equals(dawaAddr.husnrbogstav) ) {
94 fundet = true;
95 break;
96 }
97 }
98
99 if (fundet == false) {
100 dawaAddr.gadeid = gade.gadeids.iterator().next();
101 dawaAddr.state = AddressState.CREATED;
102 dawaAddr.kommentar = kommentarTemplate;
103 nyeAdresser.add(dawaAddr);
104 }
105 }
106 logger.info("Address Search done - starting save to DB");
107
108 db.saveNewAddresses(nyeAdresser);
109
110 logger.info("Save to db done - sending report mail");
111
112 List<Address> saveOK = new ArrayList<>();
113 List<Address> saveFail = new ArrayList<>();
114 for (Address a : nyeAdresser) {
115 if (a.state == AddressState.CREATE_FAIL) {
116 saveFail.add(a);
117 } else {
118 saveOK.add(a);
119 }
120 }
121
122 String subject = "DAWA indlæsning done";
123
124 StringBuilder sb = new StringBuilder();
125 sb.append("<h1>Indlæsnings rapport for " + regionName + " / " + regionCode + " </h1><br>");
126
127 sb.append("<h2>Kommune: " + kommunenavn + " / " + kommunekode + "</h2><br>\n");
128 sb.append("<h3>Adresser ok:</h3>\n");
129 addressTable(sb, saveOK);
130
131 sb.append("<h3>SQL INSERT fejl:</h3>\n");
132 addressTable(sb, saveFail);
133
134 sb.append("<h3>Ukendte DAV:</h3>\n");
135 for (String dav : ukendteDAV) {
136 sb.append(dav + "<br>\n");
137 }
138
139 sb.append("<h3>Dobbelt gadeid DAV:</h3>\n");
140 for (String dav : dobbeltGadeidDAV) {
141 sb.append(dav + "<br>\n");
142 }
143
144 MailSender.sendMail(subject, sb.toString() );
145
146 }
147
148 private void addressTable(StringBuilder sb, List<Address> addr) {
149 sb.append("<table border=0>\n");
150 sb.append("<tr><th>GadeID</th><th>Postnr</th><th>Kom.kode</th><th>Vejkode</th><th>Vejnavn</th><th>Husnr<th><th>Litra</th></tr>");
151 for (Address a: addr) {
152 sb.append("<tr>");
153 sb.append("<td>&nbsp;").append(a.gadeid).append(" </td>");
154 sb.append("<td>&nbsp;").append(a.postnr).append(" </td>");
155 sb.append("<td>&nbsp;").append(a.kommunekode).append(" </td>");
156 sb.append("<td>&nbsp;").append(a.vejkode).append(" </td>");
157 sb.append("<td>&nbsp;").append(a.vejnavn).append(" </td>");
158 sb.append("<td>&nbsp;").append(a.husnr).append(" </td>");
159 sb.append("<td>&nbsp;").append(a.husnrbogstav).append(" </td>");
160 }
161 sb.append("</table><br>\n");
162
163 }
164
165 String getDAVid(Address addr) {
166 String dav = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode);
167
168 return dedup.getInstance(dav);
169 }
170
171 @Override
172 public String getDescription() {
173 return "DawaTask";
174 }
175
176 @Override
177 public String getDetail() {
178 return "Region: " + regionCode + "/" + regionName;
179 }
180
181 @Override
182 public double getPercentCompleted() {
183 return 0;
184 }
185
186
187
188 }

  ViewVC Help
Powered by ViewVC 1.1.20