/[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 3002 by torben, Mon Apr 18 18:56:35 2016 UTC revision 3003 by torben, Tue Apr 19 12:36:31 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold.dawa;  package dk.daoas.adressevedligehold.dawa;
2    
3  import com.google.gson.Gson;  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;  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/   * Alle regioner: http://dawa.aws.dk/regioner/
# Line 12  import dk.daoas.adressevedligehold.tasks Line 22  import dk.daoas.adressevedligehold.tasks
22    
23  public class DawaTask extends Task {  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;          private short regionCode;
30          private String regionName;          private String regionName;
31                    
32          private Gson gson = new Gson();          
33            
34            DatabaseCoverageUpdate db = new DatabaseCoverageUpdate();
35            
36            DeduplicateHelper<String> dedup = new DeduplicateHelper<>();
37                    
38          public DawaTask(short regionCode, String regionName){          public DawaTask(short regionCode, String regionName){
39                  this.regionCode = regionCode;                            this.regionCode = regionCode;          
# Line 25  public class DawaTask extends Task { Line 43  public class DawaTask extends Task {
43    
44          @Override          @Override
45          protected void taskRun() throws Exception {          protected void taskRun() throws Exception {
46                  // TODO Auto-generated method stub                  
47                    int kommunekode = 615;
48                    String kommunenavn = "Horsens";
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><br>\n");
129                    for (Address a: saveOK) {
130                            sb.append(a.toString() + "<br>\n");
131                    }
132                    
133                    sb.append("<h3>SQL INSERT fejl:</h3><br>\n");
134                    for (Address a: saveFail) {
135                            sb.append(a.toString() + "<br>\n");
136                    }
137                    
138                    sb.append("<h3>Ukendte DAV:</h3><br>\n");
139                    for (String dav : ukendteDAV) {
140                            sb.append(dav + "<br>\n");
141                    }
142                    
143                    sb.append("<h3>Dobbelt gadeid DAV:</h3><br>\n");
144                    for (String dav : dobbeltGadeidDAV) {
145                            sb.append(dav + "<br>\n");
146                    }
147                    
148                    MailSender.sendMail(subject, sb.toString() );
149    
150    
151          }          }
152            
153            String getDAVid(Address addr) {
154                    String dav = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode);
155                    
156                    return dedup.getInstance(dav);
157            }
158    
159          @Override          @Override
160          public String getDescription() {          public String getDescription() {

Legend:
Removed from v.3002  
changed lines
  Added in v.3003

  ViewVC Help
Powered by ViewVC 1.1.20