/[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 3004 by torben, Tue Apr 19 12:39:38 2016 UTC revision 3029 by torben, Fri Apr 29 11:23:06 2016 UTC
# Line 2  package dk.daoas.adressevedligehold.dawa Line 2  package dk.daoas.adressevedligehold.dawa
2    
3  import java.util.ArrayList;  import java.util.ArrayList;
4  import java.util.List;  import java.util.List;
5  import java.util.Set;  import java.util.Map;
6  import java.util.TreeMap;  import java.util.TreeMap;
 import java.util.TreeSet;  
7    
8  import dk.daoas.adressevedligehold.MailSender;  import dk.daoas.adressevedligehold.MailSender;
9  import dk.daoas.adressevedligehold.beans.Address;  import dk.daoas.adressevedligehold.beans.Address;
# Line 12  import dk.daoas.adressevedligehold.beans Line 11  import dk.daoas.adressevedligehold.beans
11  import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;  import dk.daoas.adressevedligehold.db.DatabaseCoverageUpdate;
12  import dk.daoas.adressevedligehold.tasks.Task;  import dk.daoas.adressevedligehold.tasks.Task;
13  import dk.daoas.adressevedligehold.tasks.TaskLogger;  import dk.daoas.adressevedligehold.tasks.TaskLogger;
14    import dk.daoas.adressevedligehold.util.CountMap;
15  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
16    import dk.daoas.adressevedligehold.util.TimingHelper;
17    
18  /*  /*
19   * Alle regioner: http://dawa.aws.dk/regioner/   * Alle regioner: http://dawa.aws.dk/regioner/
# Line 22  import dk.daoas.adressevedligehold.util. Line 23  import dk.daoas.adressevedligehold.util.
23    
24  public class DawaTask extends Task {  public class DawaTask extends Task {
25                    
26          final String kommentarTemplate = "Oprettet via DAWA";          final static String KOMMENTAR_TEMPLATE = "Oprettet via DAWA";
27                    
28          private TaskLogger logger = TaskLogger.getInstance();          private TaskLogger logger = TaskLogger.getInstance();
29                    
30          private short regionCode;          private short regionCode;
31          private String regionName;          private String regionName;
32                    
33            int antalBehandlede = 0;
34            int antalKommuner = 0;
35            
36                    
37                    
38          DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();          DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
# Line 43  public class DawaTask extends Task { Line 47  public class DawaTask extends Task {
47    
48          @Override          @Override
49          protected void taskRun() throws Exception {          protected void taskRun() throws Exception {
50                                    TimingHelper timer = new TimingHelper();
51                  int kommunekode = 615;                          
                 String kommunenavn = "Horsens";  
                   
                 // stage 1 - hent alle data              
52                  DawaWebservice dawa = new DawaWebservice();                  DawaWebservice dawa = new DawaWebservice();
53                  List<Address> dawaListe = dawa.lookup(kommunekode);                  TreeMap<String, DawaGade> search = new TreeMap<>();
54                                    
55                    // stage 1 - hent alle data                    
56                  List<Address> adresser = db.getAllAdresses();                  List<Address> adresser = db.getAllAdresses();
57                                    
58                                    
                   
59                  // stage 2 opbyg søge struktur                          // stage 2 opbyg søge struktur        
60                  logger.info("Building search structure");                  logger.info("Building search structure");
61                  TreeMap<String, DawaGade> search = new TreeMap<>();  
62                                    
63                  for (Address addr : adresser) {                  for (Address addr : adresser) {
64                          String dav = getDAVid(addr);                          String dav = getDAVid(addr);
# Line 71  public class DawaTask extends Task { Line 72  public class DawaTask extends Task {
72                  }                  }
73                  logger.info("Build search structure done");                  logger.info("Build search structure done");
74                                    
75                  // stage 3 søg                          Map<String,Integer> kommuner = dawa.kommunerIRegion(regionCode);
                 Set<String> ukendteDAV = new TreeSet<>();  
                 Set<String> dobbeltGadeidDAV = new TreeSet<>();  
                 List<Address> nyeAdresser = new ArrayList<>();  
76                                    
77                  for (Address dawaAddr : dawaListe) {                  String subject = "DAWA indlæsning - " + regionName;
                         String dav = getDAVid(dawaAddr);  
                         DawaGade gade = search.get(dav);  
                         if (gade == null) {  
                                 ukendteDAV.add(dav + " " + dawaAddr.vejnavn);  
                                 continue;  
                         }  
                           
                         if (gade.gadeids.size() != 1) {  
                                 dobbeltGadeidDAV.add(dav + " " + dawaAddr.vejnavn);  
                         }  
                           
                         boolean fundet = false;  
                         for (Address target : gade.adresser) {  
                                 if ( target.husnr == dawaAddr.husnr && target.husnrbogstav.equals(dawaAddr.husnrbogstav) ) {  
                                         fundet = true;  
                                         break;  
                                 }        
                         }  
                           
                         if (fundet == false) {  
                                 dawaAddr.gadeid = gade.gadeids.iterator().next();  
                                 dawaAddr.state = AddressState.CREATED;  
                                 dawaAddr.kommentar = kommentarTemplate;  
                                 nyeAdresser.add(dawaAddr);  
                         }                        
                 }  
                 logger.info("Address Search done - starting save to DB");  
78                                    
79                  db.saveNewAddresses(nyeAdresser);                  StringBuilder headerSB = new StringBuilder();
80                    headerSB.append("<h1>Indlæsnings rapport for " + regionName + " </h1><br>");
81                                    
82                  logger.info("Save to db done - sending report mail");                  int totalAntalNye = 0;
83                    int totalAntalFejl = 0;
84                    int totalAntalUkendt = 0;
85                    int totalAntalDobbelt = 0;
86                                    
87                  List<Address> saveOK = new ArrayList<>();                  antalKommuner = kommuner.size();
                 List<Address> saveFail = new ArrayList<>();  
                 for (Address a : nyeAdresser) {  
                         if (a.state == AddressState.CREATE_FAIL) {  
                                 saveFail.add(a);  
                         } else {  
                                 saveOK.add(a);  
                         }  
                 }  
88                                    
                 String subject = "DAWA indlæsning done";  
89                                    
90                  StringBuilder sb = new StringBuilder();                  StringBuilder sb = new StringBuilder();
                 sb.append("<h1>Indlæsnings rapport for " + regionName + " / " + regionCode + " </h1><br>");  
91                                    
92                  sb.append("<h2>Kommune: " + kommunenavn + " / " + kommunekode + "</h2><br>\n");                  for (Map.Entry<String, Integer> entry : kommuner.entrySet()) {
93                  sb.append("<h3>Adresser ok:</h3>\n");                          int kommunekode = entry.getValue();
94                  for (Address a: saveOK) {                          String kommunenavn = entry.getKey();
95                          sb.append(a.toString() + "<br>\n");                          
96                  }                          logger.info("Behandler: " + kommunekode + " " + kommunenavn);
                   
                 sb.append("<h3>SQL INSERT fejl:</h3>\n");  
                 for (Address a: saveFail) {  
                         sb.append(a.toString() + "<br>\n");  
                 }  
                   
                 sb.append("<h3>Ukendte DAV:</h3>\n");  
                 for (String dav : ukendteDAV) {  
                         sb.append(dav + "<br>\n");  
                 }  
97                                    
98                  sb.append("<h3>Dobbelt gadeid DAV:</h3>\n");                          
99                  for (String dav : dobbeltGadeidDAV) {                          List<Address> dawaListe = dawa.adresserIKommune(kommunekode);
100                          sb.append(dav + "<br>\n");                          // stage 3 søg        
101                            CountMap ukendteDAV = new CountMap();
102                            CountMap dobbeltGadeidDAV = new CountMap();
103                            List<Address> nyeAdresser = new ArrayList<>();
104                            
105                            for (Address dawaAddr : dawaListe) {
106                                    String dav = getDAVid(dawaAddr);
107                                    DawaGade gade = search.get(dav);
108                                    if (gade == null) {
109                                            String key = dav + " " + dawaAddr.vejnavn;
110                                            ukendteDAV.increment(key);
111                                            continue;
112                                    }
113                                    
114                                    if (gade.gadeids.size() != 1) {
115                                            String key = dav + " " + dawaAddr.vejnavn;
116                                            dobbeltGadeidDAV.increment(key);
117                                            continue;
118                                    }
119                                    
120                                    boolean fundet = false;
121                                    for (Address target : gade.adresser) {
122                                            if ( target.husnr == dawaAddr.husnr && target.husnrbogstav.equals(dawaAddr.husnrbogstav) ) {
123                                                    fundet = true;
124                                                    break;
125                                            }      
126                                    }
127                                    
128                                    if (fundet == false) {
129                                            dawaAddr.gadeid = gade.gadeids.iterator().next();
130                                            dawaAddr.state = AddressState.CREATED;
131                                            dawaAddr.kommentar = KOMMENTAR_TEMPLATE;
132                                            nyeAdresser.add(dawaAddr);
133                                    }                      
134                            }
135                            logger.info("Address Search done - starting save to DB");
136                            
137                            db.saveNewAddresses(nyeAdresser);
138                            
139                            logger.info("Save to db done - adding to report mail");
140                            
141                            List<Address> saveOK = new ArrayList<>();
142                            List<Address> saveFail = new ArrayList<>();
143                            for (Address a : nyeAdresser) {
144                                    if (a.state == AddressState.CREATE_FAIL) {
145                                            saveFail.add(a);
146                                    } else {
147                                            saveOK.add(a);
148                                    }
149                            }
150                            
151                            totalAntalNye += saveOK.size();
152                            totalAntalFejl += saveFail.size();
153                            totalAntalUkendt += ukendteDAV.size();
154                            totalAntalDobbelt += dobbeltGadeidDAV.size();
155                            
156                            
157                            antalBehandlede++;
158            
159                            
160                            sb.append("<h2>Kommune: " + kommunenavn + "</h2>\n");
161                            
162                            sb.append("Kommunekode: " + kommunekode + "<br>\n");
163                            sb.append("Antal Inserts: " + saveOK.size() + "<br>\n");
164                            sb.append("Antal insert fails: " + saveFail.size() + "<br>\n");
165                            sb.append("Antal ukendte dav: " + ukendteDAV.size() + "<br>\n");
166                            sb.append("Antal dobbelt gadeid dav: " + dobbeltGadeidDAV.size() + "<br>\n");
167                            
168                            sb.append("<h3>Adresser ok:</h3>\n");
169                            addressTable(sb, saveOK);
170                            
171                            sb.append("<h3>SQL INSERT fejl:</h3>\n");
172                            addressTable(sb, saveFail);
173                            
174                            sb.append("<h3>Ukendte DAV:</h3>\n");
175                            for (Map.Entry<String, Integer> dav : ukendteDAV.entrySet()) {                          
176                                    sb.append(dav.getKey() + " : " + dav.getValue() + "<br>\n");
177                            }
178                            
179                            sb.append("<h3>Dobbelt gadeid DAV:</h3>\n");
180                            for (Map.Entry<String, Integer> dav : dobbeltGadeidDAV.entrySet()) {                            
181                                    sb.append(dav.getKey() + " : " + dav.getValue() + "<br>\n");
182                            }                                              
183                    }
184                    logger.info("Sendingreport mail");
185                    
186                    headerSB.append("Antal Inserts: " + totalAntalNye + "<br>\n");
187                    headerSB.append("Antal insert fails: " + totalAntalFejl + "<br>\n");
188                    headerSB.append("Antal ukendte dav: " + totalAntalUkendt + "<br>\n");
189                    headerSB.append("Antal dobbelt gadeid dav: " + totalAntalDobbelt + "<br>\n");
190                    headerSB.append("Elapsed: " + timer.getElapsed() + " ms.<br>\n");
191                    
192                    MailSender.sendMail(subject, headerSB.toString() + sb.toString() );
193    
194            }
195            
196            private void addressTable(StringBuilder sb, List<Address> addr) {
197                    sb.append("<table border=0>\n");
198                    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>");
199                    for (Address a: addr) {
200                            sb.append("<tr>");
201                            sb.append("<td>&nbsp;").append(a.gadeid).append(" </td>");
202                            sb.append("<td>&nbsp;").append(a.postnr).append(" </td>");
203                            sb.append("<td>&nbsp;").append(a.kommunekode).append(" </td>");
204                            sb.append("<td>&nbsp;").append(a.vejkode).append(" </td>");
205                            sb.append("<td>&nbsp;").append(a.vejnavn).append(" </td>");
206                            sb.append("<td>&nbsp;").append(a.husnr).append(" </td>");
207                            sb.append("<td>&nbsp;").append(a.husnrbogstav).append(" </td>");
208                  }                  }
209                    sb.append("</table><br>\n");
210                                    
                 MailSender.sendMail(subject, sb.toString() );  
   
   
211          }          }
212                    
213          String getDAVid(Address addr) {          String getDAVid(Address addr) {
# Line 168  public class DawaTask extends Task { Line 228  public class DawaTask extends Task {
228    
229          @Override          @Override
230          public double getPercentCompleted() {          public double getPercentCompleted() {
231                  return 0;                  if (antalKommuner == 0) {
232                            return 0;      
233                    }
234                    
235                    return  (antalBehandlede / ((double)antalKommuner) ) * 100.0;
236                    
237          }          }
238                    
239    

Legend:
Removed from v.3004  
changed lines
  Added in v.3029

  ViewVC Help
Powered by ViewVC 1.1.20