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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3005 - (hide annotations) (download)
Tue Apr 19 12:56:57 2016 UTC (8 years, 1 month ago) by torben
File size: 5054 byte(s)
Report new addresses in html table
1 torben 3002 package dk.daoas.adressevedligehold.dawa;
2    
3 torben 3003 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 torben 3002
9 torben 3003 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 torben 3002 import dk.daoas.adressevedligehold.tasks.Task;
14 torben 3003 import dk.daoas.adressevedligehold.tasks.TaskLogger;
15     import dk.daoas.adressevedligehold.util.DeduplicateHelper;
16 torben 3002
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 torben 3003 final String kommentarTemplate = "Oprettet via DAWA";
26    
27     private TaskLogger logger = TaskLogger.getInstance();
28    
29 torben 3002 private short regionCode;
30     private String regionName;
31    
32    
33 torben 3003
34     DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
35    
36     DeduplicateHelper<String> dedup = new DeduplicateHelper<>();
37    
38 torben 3002 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 torben 3003
47 torben 3005 int kommunekode = 779;
48     String kommunenavn = "Skive";
49 torben 3003
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 torben 3004 sb.append("<h3>Adresser ok:</h3>\n");
129 torben 3005 addressTable(sb, saveOK);
130 torben 3003
131 torben 3004 sb.append("<h3>SQL INSERT fejl:</h3>\n");
132 torben 3005 addressTable(sb, saveFail);
133 torben 3003
134 torben 3004 sb.append("<h3>Ukendte DAV:</h3>\n");
135 torben 3003 for (String dav : ukendteDAV) {
136     sb.append(dav + "<br>\n");
137     }
138    
139 torben 3004 sb.append("<h3>Dobbelt gadeid DAV:</h3>\n");
140 torben 3003 for (String dav : dobbeltGadeidDAV) {
141     sb.append(dav + "<br>\n");
142     }
143    
144     MailSender.sendMail(subject, sb.toString() );
145 torben 3002
146     }
147 torben 3003
148 torben 3005 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 torben 3003 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 torben 3002
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