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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3006 by torben, Tue Apr 19 15:49:14 2016 UTC revision 3070 by torben, Fri Jul 22 09:53:45 2016 UTC
# Line 1  Line 1 
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;
# Line 13  import dk.daoas.adressevedligehold.beans Line 15  import dk.daoas.adressevedligehold.beans
15  import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;  import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;
16  import dk.daoas.adressevedligehold.tasks.Task;  import dk.daoas.adressevedligehold.tasks.Task;
17  import dk.daoas.adressevedligehold.tasks.TaskLogger;  import dk.daoas.adressevedligehold.tasks.TaskLogger;
18    import dk.daoas.adressevedligehold.util.CountMap;
19  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
20  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
21    
# Line 24  import dk.daoas.adressevedligehold.util. Line 27  import dk.daoas.adressevedligehold.util.
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;          
# Line 46  public class DawaTask extends Task { Line 52  public class DawaTask extends Task {
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                                    
# Line 72  public class DawaTask extends Task { Line 80  public class DawaTask extends Task {
80                                    
81                  Map<String,Integer> kommuner = dawa.kommunerIRegion(regionCode);                  Map<String,Integer> kommuner = dawa.kommunerIRegion(regionCode);
82                                    
83                  String subject = "DAWA indlæsning done";                  String subject = "DAWA indlæsning - " + regionName;
84                                    
85                  StringBuilder headerSB = new StringBuilder();                  StringBuilder headerSB = new StringBuilder();
86                  headerSB.append("<h1>Indlæsnings rapport for " + regionName + " / " + regionCode + " </h1><br>");                  headerSB.append("<h1>Indlæsnings rapport for " + regionName + " </h1><br>");
87                    
88                    List<Address> totalNye = new ArrayList<>();
89                    List<Address> totalFejl = new ArrayList<>();
90                    CountMap totalUkendtDAV = new CountMap();
91                    CountMap totalDobbeltDav = new CountMap();
92                                    
93                  int totalAntalNye = 0;                  
94                  int totalAntalFejl = 0;                  
95                  int totalAntalUkendt = 0;                  antalKommuner = kommuner.size();
                 int totalAntalDobbelt = 0;  
96                                    
97                                    
98                  StringBuilder sb = new StringBuilder();                  StringBuilder sb = new StringBuilder();
# Line 94  public class DawaTask extends Task { Line 106  public class DawaTask extends Task {
106                                                    
107                          List<Address> dawaListe = dawa.adresserIKommune(kommunekode);                          List<Address> dawaListe = dawa.adresserIKommune(kommunekode);
108                          // stage 3 søg                                  // stage 3 søg        
109                          Set<String> ukendteDAV = new TreeSet<>();                          CountMap ukendteDAV = new CountMap();
110                          Set<String> dobbeltGadeidDAV = new TreeSet<>();                          CountMap dobbeltGadeidDAV = new CountMap();
111                          List<Address> nyeAdresser = new ArrayList<>();                          List<Address> nyeAdresser = new ArrayList<>();
112                                                    
113                          for (Address dawaAddr : dawaListe) {                          for (Address dawaAddr : dawaListe) {
114                                  String dav = getDAVid(dawaAddr);                                  String dav = getDAVid(dawaAddr);
115                                  DawaGade gade = search.get(dav);                                  DawaGade gade = search.get(dav);
116                                  if (gade == null) {                                  if (gade == null) {
117                                          ukendteDAV.add(dav + " " + dawaAddr.vejnavn);                                          String key = dav + " " + dawaAddr.vejnavn;
118                                            ukendteDAV.increment(key);
119                                          continue;                                          continue;
120                                  }                                  }
121                                                                    
122                                  if (gade.gadeids.size() != 1) {                                  if (gade.gadeids.size() != 1) {
123                                          dobbeltGadeidDAV.add(dav + " " + dawaAddr.vejnavn);                                          String key = dav + " " + dawaAddr.vejnavn;
124                                            dobbeltGadeidDAV.increment(key);
125                                            continue;
126                                  }                                  }
127                                                                    
128                                  boolean fundet = false;                                  boolean fundet = false;
# Line 121  public class DawaTask extends Task { Line 136  public class DawaTask extends Task {
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                          }                          }
# Line 129  public class DawaTask extends Task { Line 144  public class DawaTask extends Task {
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<>();
# Line 141  public class DawaTask extends Task { Line 156  public class DawaTask extends Task {
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 + " / " + kommunekode + "</h2><br>\n");                          sb.append("<h2>Kommune: " + kommunenavn + "</h2>\n");
170                            
171                            sb.append("Kommunekode: " + kommunekode + "<br>\n");
172                          sb.append("Antal Inserts: " + saveOK.size() + "<br>\n");                          sb.append("Antal Inserts: " + saveOK.size() + "<br>\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 (String dav : ukendteDAV) {  
                                 sb.append(dav + "<br>\n");  
                         }  
                           
                         sb.append("<h3>Dobbelt gadeid DAV:</h3>\n");  
                         for (String dav : dobbeltGadeidDAV) {  
                                 sb.append(dav + "<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>&nbsp;").append(a.gadeid).append(" </td>");                          sb.append(a.postnr).append(";");
228                          sb.append("<td>&nbsp;").append(a.postnr).append(" </td>");                          sb.append(a.kommunekode).append(";");
229                          sb.append("<td>&nbsp;").append(a.kommunekode).append(" </td>");                          sb.append(a.vejkode).append(";");
230                          sb.append("<td>&nbsp;").append(a.vejkode).append(" </td>");                          sb.append(a.vejnavn).append(";");
231                          sb.append("<td>&nbsp;").append(a.vejnavn).append(" </td>");                          sb.append(a.husnr).append(";");
232                          sb.append("<td>&nbsp;").append(a.husnr).append(" </td>");                          sb.append(a.husnrbogstav).append("\r\n");
                         sb.append("<td>&nbsp;").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                                    
# Line 216  public class DawaTask extends Task { Line 254  public class DawaTask extends Task {
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    

Legend:
Removed from v.3006  
changed lines
  Added in v.3070

  ViewVC Help
Powered by ViewVC 1.1.20