/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AddressReport.java
ViewVC logotype

Diff of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AddressReport.java

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

dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressReport.java revision 2838 by torben, Sun Jan 24 21:48:55 2016 UTC dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/coveragefileupload/AddressReport.java revision 3044 by torben, Wed Jun 8 15:31:27 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold;  package dk.daoas.adressevedligehold.coveragefileupload;
2    
3  import java.util.HashMap;  import java.util.HashMap;
4  import java.util.List;  import java.util.List;
5  import java.util.Properties;  import java.util.Map.Entry;
   
 import javax.mail.Message;  
 import javax.mail.MessagingException;  
 import javax.mail.Session;  
 import javax.mail.Transport;  
 import javax.mail.internet.InternetAddress;  
 import javax.mail.internet.MimeMessage;  
6    
7    import dk.daoas.adressevedligehold.MailSender;
8  import dk.daoas.adressevedligehold.beans.Address;  import dk.daoas.adressevedligehold.beans.Address;
9  import dk.daoas.adressevedligehold.beans.Address.AddressState;  import dk.daoas.adressevedligehold.beans.Address.AddressState;
10    import dk.daoas.adressevedligehold.tasks.TaskLogger;
11  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
12    
13    /*
14     *
15     */
16    
17  public class AddressReport {  public class AddressReport {
18            
19          class NumEntry {          static class NumEntry {
20                  int open = 0;                  int open = 0;
21                  int closed = 0;                  int closed = 0;
22                  int modified = 0;                  int modified = 0;
23                  int created = 0;                  int created = 0;
24                    
25                  public void updateFromState(AddressState st) {                  public void updateFromState(AddressState st) {
26                          if (st == AddressState.OPENED)                          if (st == AddressState.OPENED)
27                                  open++;                                  open++;
# Line 38  public class AddressReport { Line 37  public class AddressReport {
37                          this.created += other.created;                          this.created += other.created;
38                  }                  }
39          }          }
40          class WeekEntry {          static class WeekEntry {
41                  NumEntry man = new NumEntry();                  NumEntry man = new NumEntry();
42                  NumEntry tir = new NumEntry();                  NumEntry tir = new NumEntry();
43                  NumEntry ons = new NumEntry();                  NumEntry ons = new NumEntry();
# Line 46  public class AddressReport { Line 45  public class AddressReport {
45                  NumEntry fre = new NumEntry();                  NumEntry fre = new NumEntry();
46                  NumEntry lor = new NumEntry();                  NumEntry lor = new NumEntry();
47                  NumEntry son = new NumEntry();                  NumEntry son = new NumEntry();
48                    
49                  public void incrementFromOther(WeekEntry other) {                  public void incrementFromOther(WeekEntry other) {
50                          man.updateFromOther(other.man);                          man.updateFromOther(other.man);
51                          tir.updateFromOther(other.tir);                          tir.updateFromOther(other.tir);
# Line 56  public class AddressReport { Line 55  public class AddressReport {
55                          lor.updateFromOther(other.lor);                          lor.updateFromOther(other.lor);
56                          son.updateFromOther(other.son);                          son.updateFromOther(other.son);
57                  }                  }
58                    
59                  public void incrementCreated() {                  public void incrementCreated() {
60                          man.created++;                          man.created++;
61                          tir.created++;                          tir.created++;
# Line 67  public class AddressReport { Line 66  public class AddressReport {
66                          son.created++;                          son.created++;
67                  }                  }
68          }          }
69            
70                    private static TaskLogger logger = TaskLogger.getInstance();
71    
72            AddressManager addrManager;
73          List<Address> addressList;          List<Address> addressList;
74          int entryCount;          int entryCount;
75          EntryUgedage ugedage;          EntryUgedage ugedage;
76          AddressSource source;          AddressSource source;
77          TimingHelper timer;          TimingHelper timer;
78          boolean writeBack;          boolean writeBack;
79                    int duplicateCount;
80          //TODO: Afviste adresser  
81          public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack ) {  
82            public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {
83                    this.addrManager = addrManager;
84                  addressList = addrManager.getAddressList();                  addressList = addrManager.getAddressList();
85                  this.entryCount = entryCount;                  this.entryCount = entryCount;
86                  this.ugedage = ugedage;                  this.ugedage = ugedage;
87                  this.source = source;                  this.source = source;
88                  this.timer = timer;                  this.timer = timer;
89                  this.writeBack = writeBack;                  this.writeBack = writeBack;
90                                    this.duplicateCount = duplicateCount;
91          }          }
92            
93          public void sendRapport() {          public void sendRapport() {
94                  System.out.println("Sending mail");                  logger.info("Sending mail");
95                    
96                  String reportData = getReportData();                  String reportData = getReportData();
97                  String subject = "Indlæsnings rapport for " + source.getDistributor();                  String subject = "Indlæsnings rapport for " + source.getDistributor();
98                                    
99                                    String newOpenCloseAttachment = getAttachement();
100          Properties props = new Properties();  
101          props.put("mail.smtp.host", "10.30.1.28");                  MailSender.sendMailWithAttachment(subject, reportData, "Details.csv", newOpenCloseAttachment);
102          //props.put("mail.smtp.host", "192.168.12.10");  
           
         try {  
                 // create some properties and get the default Session  
                 Session session = Session.getDefaultInstance(props, null);  
                 session.setDebug(false);  
                   
                 MimeMessage msg = new MimeMessage(session);  
                         msg.setFrom( new InternetAddress("no-reply@daoas.dk") );  
                           
                           
                         msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail  
                         msg.setSubject( subject );                        
                         msg.setContent(reportData, "text/html; charset=utf-8");  
                           
                         Transport.send(msg);  
                           
                   
         } catch (MessagingException e) {  
                         System.out.println("Unable to send report mail " + e.getMessage() );  
                 }  
                   
                   
103          }          }
104            
105    
106    
107          public String getReportData() {          public String getReportData() {
108            
109                  WeekEntry total = new WeekEntry();                  WeekEntry total = new WeekEntry();
110                  HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();                  HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
111                    
112                                    int createFailCount = 0;
113    
114                    int antalUdenGadeid = 0;
115                  int antalUdenKommunekode = 0;                  int antalUdenKommunekode = 0;
116                  int antalUdenLatitude = 0;                  int antalUdenLatitude = 0;
117                  int antalUdenDBKBane = 0;                  int antalUdenDBKBane = 0;
118                    
119                  // first gather the intel                  // first gather the intel
120                  for (Address a : addressList) {                  for (Address a : addressList) {
121                          if (a.kommunekode == 0 || a.vejkode == 0) {  
122                            if (a.state == AddressState.CREATE_FAIL) {
123                                    createFailCount++;
124                                    continue;                      
125                            }
126    
127                            if (a.gadeid == 0) {
128                                    antalUdenGadeid++;
129                            }
130    
131                            if (a.kommunekode == 0 || a.vejkode == 0) {                            
132                                  antalUdenKommunekode++;                                  antalUdenKommunekode++;
133                          }                          }
134                            
135                          if (a.latitude == 0 || a.longitude == 0) {                          if (a.latitude == 0 || a.longitude == 0) {
136                                  antalUdenLatitude++;                                  antalUdenLatitude++;
137                          }                          }
138                            
139                          if (a.state == AddressState.NOT_CHANGED) {                          if (a.state == AddressState.NOT_CHANGED) {
140                                  continue;                                  continue;
141                          }                          }
142                          if (a.dbkBane == 0) {                          if (a.dbkBane == 0) {
143                                  antalUdenDBKBane++;                                  antalUdenDBKBane++;
144                          }                          }
145                            
146                          WeekEntry weekEntry = postnrEntries.get(a.postnr);                          WeekEntry weekEntry = postnrEntries.get(a.postnr);
147                          if (weekEntry == null) {                          if (weekEntry == null) {
148                                  weekEntry = new WeekEntry();                                  weekEntry = new WeekEntry();
149                                  postnrEntries.put(a.postnr, weekEntry);                                  postnrEntries.put(a.postnr, weekEntry);
150                          }                          }
151                            
152                            
153    
154                          if (a.state == AddressState.CREATED) {                          if (a.state == AddressState.CREATED) {
155                                  weekEntry.incrementCreated();                                  weekEntry.incrementCreated();
156                          } else {                          } else {
# Line 165  public class AddressReport { Line 161  public class AddressReport {
161                                  weekEntry.fre.updateFromState(a.stateFre);                                  weekEntry.fre.updateFromState(a.stateFre);
162                                  weekEntry.lor.updateFromState(a.stateLor);                                  weekEntry.lor.updateFromState(a.stateLor);
163                                  weekEntry.son.updateFromState(a.stateSon);                                  weekEntry.son.updateFromState(a.stateSon);
164                                    
165                          }                                                }                      
166                  }                  }
167                  for (WeekEntry w : postnrEntries.values()) {                  for (WeekEntry w : postnrEntries.values()) {
168                          total.incrementFromOther(w);                          total.incrementFromOther(w);
169                  }                  }
170                    
171                  StringBuilder sb = new StringBuilder();                  StringBuilder sb = new StringBuilder();
172                    
173                  sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");                  sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
174                  sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");                  sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
175                  sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");                  sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
176                  sb.append("Skriv til DB: ").append( writeBack ).append("<br>");                  sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
177                  sb.append("Antal entries: " ).append( entryCount ).append("<br>");                  sb.append("Antal entries: " ).append( entryCount ).append("<br>");
178                                    sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
179                    sb.append("Antal dubletter: " ).append( duplicateCount ).append("<br>");
180                    sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
181                    sb.append("Filen indeholder data til: ");
182                    if (ugedage.mandag) sb.append("Mandag, ");
183                    if (ugedage.tirsdag) sb.append("Tirsdag, ");
184                    if (ugedage.onsdag) sb.append("Onsdag, ");
185                    if (ugedage.torsdag) sb.append("Torsdag, ");
186                    if (ugedage.fredag) sb.append("Fredag, ");
187                    if (ugedage.lordag) sb.append("Lørdag, ");
188                    if (ugedage.sondag) sb.append("Søndag, ");
189                    sb.append("<br>");
190    
191                  sb.append("<h2>Data Mangler</h2>\n");                  sb.append("<h2>Data Mangler</h2>\n");
192                  sb.append("<pre>");                  sb.append("<pre>");
193                  sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");                  sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
194                    sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
195                  sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");                  sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
196                  sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");                  sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
197                  sb.append("</pre>");                  sb.append("</pre>");
                   
198    
199                    
200    
201                  sb.append("<h2>Ændrings oversigt</h2>\n");                  sb.append("<h2>Ændrings oversigt</h2>\n");
202                  sb.append("<table>");                  sb.append("<table>");
203                    
204                  sb.append("<tr><td>&nbsp;</td><td>Mandag</td><td>Tirsdag</td><td>Onsdag</td><td>Torsdag</td><td>Fredag</td><td>Lørdag</td><td>Søndag</td></tr>");                  sb.append("<tr><td>&nbsp;</td><td>Mandag</td><td>Tirsdag</td><td>Onsdag</td><td>Torsdag</td><td>Fredag</td><td>Lørdag</td><td>Søndag</td></tr>");
205                  sb.append("<tr><td>Oprettet:</td><td>").append(total.man.created).append("</td><td>").append(total.tir.created).append("</td><td>").append(total.ons.created).append("</td><td>").append(total.tor.created).append("</td><td>").append(total.fre.created).append("</td><td>").append(total.lor.created).append("</td><td>").append(total.son.created).append("</td></tr>");                  sb.append("<tr><td>Oprettet:</td><td>").append(total.man.created).append("</td><td>").append(total.tir.created).append("</td><td>").append(total.ons.created).append("</td><td>").append(total.tor.created).append("</td><td>").append(total.fre.created).append("</td><td>").append(total.lor.created).append("</td><td>").append(total.son.created).append("</td></tr>");
206                  sb.append("<tr><td>Åbnet:</td><td>").append(total.man.open).append("</td><td>").append(total.tir.open).append("</td><td>").append(total.ons.open).append("</td><td>").append(total.tor.open).append("</td><td>").append(total.fre.open).append("</td><td>").append(total.lor.open).append("</td><td>").append(total.son.open).append("</td></tr>");                  sb.append("<tr><td>Åbnet:</td><td>").append(total.man.open).append("</td><td>").append(total.tir.open).append("</td><td>").append(total.ons.open).append("</td><td>").append(total.tor.open).append("</td><td>").append(total.fre.open).append("</td><td>").append(total.lor.open).append("</td><td>").append(total.son.open).append("</td></tr>");
207                  sb.append("<tr><td>Ændret:</td><td>").append(total.man.modified).append("</td><td>").append(total.tir.modified).append("</td><td>").append(total.ons.modified).append("</td><td>").append(total.tor.modified).append("</td><td>").append(total.fre.modified).append("</td><td>").append(total.lor.modified).append("</td><td>").append(total.son.modified).append("</td></tr>");                  sb.append("<tr><td>Ændret:</td><td>").append(total.man.modified).append("</td><td>").append(total.tir.modified).append("</td><td>").append(total.ons.modified).append("</td><td>").append(total.tor.modified).append("</td><td>").append(total.fre.modified).append("</td><td>").append(total.lor.modified).append("</td><td>").append(total.son.modified).append("</td></tr>");
208                  sb.append("<tr><td>Lukket:</td><td>").append(total.man.closed).append("</td><td>").append(total.tir.closed).append("</td><td>").append(total.ons.closed).append("</td><td>").append(total.tor.closed).append("</td><td>").append(total.fre.closed).append("</td><td>").append(total.lor.closed).append("</td><td>").append(total.son.closed).append("</td></tr>");                  sb.append("<tr><td>Lukket:</td><td>").append(total.man.closed).append("</td><td>").append(total.tir.closed).append("</td><td>").append(total.ons.closed).append("</td><td>").append(total.tor.closed).append("</td><td>").append(total.fre.closed).append("</td><td>").append(total.lor.closed).append("</td><td>").append(total.son.closed).append("</td></tr>");
209                    sb.append("</table>");
210    
211                    sb.append("<br>");
212                    sb.append("<h2>Nye/Ukendte gader</h2>");
213                    sb.append("<table>");
214                    sb.append("<tr><th>Gadeid</th><th>Vejnavn</th></tr>");
215                    for( Entry<Integer,String> unknownStreet : addrManager.getUnknownStreets().entrySet() ) {
216                            sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
217                    }
218                    sb.append("</table>");
219    
220    
                   
                   
221                  sb.append("</table><br>\n");                  sb.append("</table><br>\n");
222    
223                    return sb.toString();
224            }
225            
226            public String getAttachement() {
227                    StringBuilder sb = new StringBuilder();
228                    sb.append("Status;Gadeid;Post;Vejnavn;Husnr;Litra\r\n");
229                    
230                    for (Address a : addressList) {
231                            switch (a.state) {
232                            case CLOSED:
233                                    sb.append("Closed;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
234                                    break;                          
235                            case CREATED:
236                                    sb.append("Created;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
237                                    break;                          
238                            case CREATE_FAIL:
239                                    break;
240                            case MODIFIED:
241                                    break;
242                            case NOT_CHANGED:
243                                    break;
244                            case OPENED:
245                                    sb.append("Opened;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
246                                    break;
247                            default:
248                                    break;
249                            }
250                    }
251                                    
252                  return sb.toString();                  return sb.toString();
253          }          }

Legend:
Removed from v.2838  
changed lines
  Added in v.3044

  ViewVC Help
Powered by ViewVC 1.1.20