1 |
package dk.daoas.adressevedligehold.dawa; |
package dk.daoas.adressevedligehold.dawa; |
2 |
|
|
3 |
import java.util.ArrayList; |
import java.util.ArrayList; |
4 |
|
import java.util.Collections; |
5 |
import java.util.List; |
import java.util.List; |
6 |
import java.util.Map; |
import java.util.Map; |
7 |
import java.util.Set; |
import java.util.Map.Entry; |
8 |
import java.util.TreeMap; |
import java.util.TreeMap; |
9 |
import java.util.TreeSet; |
|
10 |
|
import com.google.common.base.Splitter; |
11 |
|
|
12 |
import dk.daoas.adressevedligehold.MailSender; |
import dk.daoas.adressevedligehold.MailSender; |
13 |
import dk.daoas.adressevedligehold.beans.Address; |
import dk.daoas.adressevedligehold.beans.Address; |
27 |
|
|
28 |
public class DawaTask extends Task { |
public class DawaTask extends Task { |
29 |
|
|
30 |
final String kommentarTemplate = "Oprettet via DAWA"; |
final static String KOMMENTAR_TEMPLATE = "Oprettet via DAWA"; |
31 |
|
|
32 |
private TaskLogger logger = TaskLogger.getInstance(); |
private TaskLogger logger = TaskLogger.getInstance(); |
33 |
|
|
34 |
private short regionCode; |
private short regionCode; |
35 |
private String regionName; |
private String regionName; |
36 |
|
|
37 |
|
int antalBehandlede = 0; |
38 |
|
int antalKommuner = 0; |
39 |
|
|
40 |
|
|
41 |
|
DeduplicateHelper<String> dedup = new DeduplicateHelper<>(); |
42 |
|
|
|
DatabaseCoverageUpdate db = new DatabaseCoverageUpdate(); |
|
43 |
|
|
44 |
DeduplicateHelper<String> dedup = new DeduplicateHelper<>(); |
|
45 |
|
|
46 |
public DawaTask(short regionCode, String regionName){ |
public DawaTask(short regionCode, String regionName){ |
47 |
this.regionCode = regionCode; |
this.regionCode = regionCode; |
52 |
@Override |
@Override |
53 |
protected void taskRun() throws Exception { |
protected void taskRun() throws Exception { |
54 |
TimingHelper timer = new TimingHelper(); |
TimingHelper timer = new TimingHelper(); |
55 |
|
|
56 |
|
DatabaseCoverageUpdate db = new DatabaseCoverageUpdate(); |
57 |
|
|
58 |
DawaWebservice dawa = new DawaWebservice(); |
DawaWebservice dawa = new DawaWebservice(); |
59 |
TreeMap<String, DawaGade> search = new TreeMap<>(); |
TreeMap<String, DawaGade> search = new TreeMap<>(); |
60 |
|
|
85 |
StringBuilder headerSB = new StringBuilder(); |
StringBuilder headerSB = new StringBuilder(); |
86 |
headerSB.append("<h1>Indlæsnings rapport for " + regionName + " </h1><br>"); |
headerSB.append("<h1>Indlæsnings rapport for " + regionName + " </h1><br>"); |
87 |
|
|
88 |
int totalAntalNye = 0; |
List<Address> totalNye = new ArrayList<>(); |
89 |
int totalAntalFejl = 0; |
List<Address> totalFejl = new ArrayList<>(); |
90 |
int totalAntalUkendt = 0; |
CountMap totalUkendtDAV = new CountMap(); |
91 |
int totalAntalDobbelt = 0; |
CountMap totalDobbeltDav = new CountMap(); |
92 |
|
|
93 |
|
|
94 |
|
|
95 |
|
antalKommuner = kommuner.size(); |
96 |
|
|
97 |
|
|
98 |
StringBuilder sb = new StringBuilder(); |
StringBuilder sb = new StringBuilder(); |
136 |
if (fundet == false) { |
if (fundet == false) { |
137 |
dawaAddr.gadeid = gade.gadeids.iterator().next(); |
dawaAddr.gadeid = gade.gadeids.iterator().next(); |
138 |
dawaAddr.state = AddressState.CREATED; |
dawaAddr.state = AddressState.CREATED; |
139 |
dawaAddr.kommentar = kommentarTemplate; |
dawaAddr.kommentar = KOMMENTAR_TEMPLATE; |
140 |
nyeAdresser.add(dawaAddr); |
nyeAdresser.add(dawaAddr); |
141 |
} |
} |
142 |
} |
} |
144 |
|
|
145 |
db.saveNewAddresses(nyeAdresser); |
db.saveNewAddresses(nyeAdresser); |
146 |
|
|
147 |
logger.info("Save to db done - sending report mail"); |
logger.info("Save to db done - adding to report mail"); |
148 |
|
|
149 |
List<Address> saveOK = new ArrayList<>(); |
List<Address> saveOK = new ArrayList<>(); |
150 |
List<Address> saveFail = new ArrayList<>(); |
List<Address> saveFail = new ArrayList<>(); |
156 |
} |
} |
157 |
} |
} |
158 |
|
|
159 |
totalAntalNye += saveOK.size(); |
totalNye.addAll(saveOK); |
160 |
totalAntalFejl += saveFail.size(); |
totalFejl.addAll(saveFail); |
161 |
totalAntalUkendt += ukendteDAV.size(); |
|
162 |
totalAntalDobbelt += dobbeltGadeidDAV.size(); |
totalUkendtDAV.putAll(ukendteDAV); |
163 |
|
totalDobbeltDav.putAll(dobbeltGadeidDAV); |
164 |
|
|
165 |
|
|
166 |
|
antalBehandlede++; |
167 |
|
|
168 |
|
|
169 |
sb.append("<h2>Kommune: " + kommunenavn + "</h2>\n"); |
sb.append("<h2>Kommune: " + kommunenavn + "</h2>\n"); |
173 |
sb.append("Antal insert fails: " + saveFail.size() + "<br>\n"); |
sb.append("Antal insert fails: " + saveFail.size() + "<br>\n"); |
174 |
sb.append("Antal ukendte dav: " + ukendteDAV.size() + "<br>\n"); |
sb.append("Antal ukendte dav: " + ukendteDAV.size() + "<br>\n"); |
175 |
sb.append("Antal dobbelt gadeid dav: " + dobbeltGadeidDAV.size() + "<br>\n"); |
sb.append("Antal dobbelt gadeid dav: " + dobbeltGadeidDAV.size() + "<br>\n"); |
|
|
|
|
sb.append("<h3>Adresser ok:</h3>\n"); |
|
|
addressTable(sb, saveOK); |
|
|
|
|
|
sb.append("<h3>SQL INSERT fejl:</h3>\n"); |
|
|
addressTable(sb, saveFail); |
|
|
|
|
|
sb.append("<h3>Ukendte DAV:</h3>\n"); |
|
|
for (Map.Entry<String, Integer> dav : ukendteDAV.entrySet()) { |
|
|
sb.append(dav.getKey() + " : " + dav.getValue() + "<br>\n"); |
|
|
} |
|
|
|
|
|
sb.append("<h3>Dobbelt gadeid DAV:</h3>\n"); |
|
|
for (Map.Entry<String, Integer> dav : dobbeltGadeidDAV.entrySet()) { |
|
|
sb.append(dav.getKey() + " : " + dav.getValue() + "<br>\n"); |
|
|
} |
|
176 |
} |
} |
177 |
|
|
178 |
headerSB.append("Antal Inserts: " + totalAntalNye + "<br>\n"); |
logger.info("Sendingreport mail"); |
179 |
headerSB.append("Antal insert fails: " + totalAntalFejl + "<br>\n"); |
|
180 |
headerSB.append("Antal ukendte dav: " + totalAntalUkendt + "<br>\n"); |
headerSB.append("Antal Inserts: " + totalNye.size() + "<br>\n"); |
181 |
headerSB.append("Antal dobbelt gadeid dav: " + totalAntalDobbelt + "<br>\n"); |
headerSB.append("Antal insert fails: " + totalFejl.size() + "<br>\n"); |
182 |
|
headerSB.append("Antal ukendte dav: " + totalUkendtDAV.size() + "<br>\n"); |
183 |
|
headerSB.append("Antal dobbelt gadeid dav: " + totalDobbeltDav.size() + "<br>\n"); |
184 |
headerSB.append("Elapsed: " + timer.getElapsed() + " ms.<br>\n"); |
headerSB.append("Elapsed: " + timer.getElapsed() + " ms.<br>\n"); |
185 |
|
|
186 |
MailSender.sendMail(subject, headerSB.toString() + sb.toString() ); |
Map<String,String> attachments = new TreeMap<>(); |
187 |
|
attachments.put("saveok.csv", buildAddressFile(totalNye) ); |
188 |
|
attachments.put("savefailed.csv", buildAddressFile(totalFejl) ); |
189 |
|
|
190 |
|
attachments.put("ukendte_dav.csv", buildDavFile(totalUkendtDAV) ); |
191 |
|
attachments.put("dobbelt_dav_gadeid.csv", buildDavFile(totalDobbeltDav) ); |
192 |
|
|
193 |
|
|
194 |
|
MailSender.sendMailWithAttachments(subject, headerSB.toString() + sb.toString(), attachments); |
195 |
|
|
196 |
|
|
197 |
|
//Cleaning |
198 |
|
dedup.clear(); |
199 |
} |
} |
200 |
|
|
201 |
private void addressTable(StringBuilder sb, List<Address> addr) { |
private String buildDavFile(CountMap dav) { |
202 |
sb.append("<table border=0>\n"); |
StringBuilder sb = new StringBuilder(); |
203 |
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>"); |
|
204 |
|
sb.append("DAVid;Vejnavn;Antal\r\n"); |
205 |
|
for ( Entry<String,Integer> entry : dav.entrySet()) { |
206 |
|
|
207 |
|
List<String> split = Splitter.on(' ').limit(2).splitToList(entry.getKey()); |
208 |
|
sb.append( split.get(0) ).append(";");//DAVid |
209 |
|
sb.append( split.get(1) ).append(";");//vejnavn |
210 |
|
|
211 |
|
sb.append( entry.getValue() ).append("\r\n");//vejnavn |
212 |
|
|
213 |
|
} |
214 |
|
|
215 |
|
return sb.toString(); |
216 |
|
} |
217 |
|
|
218 |
|
private String buildAddressFile(List<Address> addr) { |
219 |
|
|
220 |
|
Collections.sort(addr); //brug dens egen compareTo funktion |
221 |
|
|
222 |
|
StringBuilder sb = new StringBuilder(); |
223 |
|
|
224 |
|
sb.append("GadeID;Postnr;Kom.kode;Vejkode;Vejnavn;Husnr;Litra\r\n"); |
225 |
for (Address a: addr) { |
for (Address a: addr) { |
226 |
sb.append("<tr>"); |
sb.append(a.gadeid).append(";"); |
227 |
sb.append("<td> ").append(a.gadeid).append(" </td>"); |
sb.append(a.postnr).append(";"); |
228 |
sb.append("<td> ").append(a.postnr).append(" </td>"); |
sb.append(a.kommunekode).append(";"); |
229 |
sb.append("<td> ").append(a.kommunekode).append(" </td>"); |
sb.append(a.vejkode).append(";"); |
230 |
sb.append("<td> ").append(a.vejkode).append(" </td>"); |
sb.append(a.vejnavn).append(";"); |
231 |
sb.append("<td> ").append(a.vejnavn).append(" </td>"); |
sb.append(a.husnr).append(";"); |
232 |
sb.append("<td> ").append(a.husnr).append(" </td>"); |
sb.append(a.husnrbogstav).append("\r\n"); |
|
sb.append("<td> ").append(a.husnrbogstav).append(" </td>"); |
|
233 |
} |
} |
234 |
sb.append("</table><br>\n"); |
return sb.toString(); |
235 |
|
|
236 |
} |
} |
237 |
|
|
238 |
|
|
239 |
String getDAVid(Address addr) { |
String getDAVid(Address addr) { |
240 |
String dav = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode); |
String dav = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode); |
241 |
|
|
254 |
|
|
255 |
@Override |
@Override |
256 |
public double getPercentCompleted() { |
public double getPercentCompleted() { |
257 |
return 0; |
if (antalKommuner == 0) { |
258 |
|
return 0; |
259 |
|
} |
260 |
|
|
261 |
|
return (antalBehandlede / ((double)antalKommuner) ) * 100.0; |
262 |
|
|
263 |
} |
} |
264 |
|
|
265 |
|
|