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

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

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

revision 2952 by torben, Tue Feb 16 09:40:51 2016 UTC revision 2953 by torben, Tue Feb 16 13:09:00 2016 UTC
# Line 3  package dk.daoas.adressevedligehold.file Line 3  package dk.daoas.adressevedligehold.file
3  import java.util.HashMap;  import java.util.HashMap;
4  import java.util.List;  import java.util.List;
5  import java.util.Map.Entry;  import java.util.Map.Entry;
 import java.util.Properties;  
   
 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;  import dk.daoas.adressevedligehold.tasks.TaskLogger;
# Line 22  import dk.daoas.adressevedligehold.util. Line 15  import dk.daoas.adressevedligehold.util.
15   */   */
16    
17  public class AddressReport {  public class AddressReport {
18            
19          static 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 52  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 62  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 73  public class AddressReport { Line 66  public class AddressReport {
66                          son.created++;                          son.created++;
67                  }                  }
68          }          }
69            
70          private static TaskLogger logger = TaskLogger.getInstance();          private static TaskLogger logger = TaskLogger.getInstance();
71            
72          AddressManager addrManager;          AddressManager addrManager;
73          List<Address> addressList;          List<Address> addressList;
74          int entryCount;          int entryCount;
# Line 84  public class AddressReport { Line 77  public class AddressReport {
77          TimingHelper timer;          TimingHelper timer;
78          boolean writeBack;          boolean writeBack;
79          int duplicateCount;          int duplicateCount;
80            
81    
82          public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {          public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {
83                  this.addrManager = addrManager;                  this.addrManager = addrManager;
# Line 96  public class AddressReport { Line 89  public class AddressReport {
89                  this.writeBack = writeBack;                  this.writeBack = writeBack;
90                  this.duplicateCount = duplicateCount;                  this.duplicateCount = duplicateCount;
91          }          }
92            
93          public void sendRapport() {          public void sendRapport() {
94                  logger.info("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                  AddressReport.sendMail(subject, reportData);                  MailSender.sendMail(subject, reportData);
100                    
         }  
           
         public static void sendMail(String subject, String htmlBody) {  
                Properties props = new Properties();  
                 props.put("mail.smtp.host", "mail.dao.int");  
                 //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(htmlBody, "text/html; charset=utf-8");  
                                   
                                 Transport.send(msg);  
                                   
                           
                 } catch (MessagingException e) {  
                                 logger.warning("Unable to send report mail ", e );  
                         }                
101          }          }
102            
103            
104    
105          public String getReportData() {          public String getReportData() {
106            
107                  WeekEntry total = new WeekEntry();                  WeekEntry total = new WeekEntry();
108                  HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();                  HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
109                    
110                  int createFailCount = 0;                  int createFailCount = 0;
111                    
112                  int antalUdenGadeid = 0;                  int antalUdenGadeid = 0;
113                  int antalUdenKommunekode = 0;                  int antalUdenKommunekode = 0;
114                  int antalUdenLatitude = 0;                  int antalUdenLatitude = 0;
115                  int antalUdenDBKBane = 0;                  int antalUdenDBKBane = 0;
116                    
117                  // first gather the intel                  // first gather the intel
118                  for (Address a : addressList) {                  for (Address a : addressList) {
119                            
120                          if (a.state == AddressState.CREATE_FAIL) {                          if (a.state == AddressState.CREATE_FAIL) {
121                                  createFailCount++;                                  createFailCount++;
122                                  continue;                                                        continue;                      
123                          }                          }
124                            
125                          if (a.gadeid == 0) {                          if (a.gadeid == 0) {
126                                  antalUdenGadeid++;                                  antalUdenGadeid++;
127                          }                          }
128                            
129                          if (a.kommunekode == 0 || a.vejkode == 0) {                                                      if (a.kommunekode == 0 || a.vejkode == 0) {                            
130                                  antalUdenKommunekode++;                                  antalUdenKommunekode++;
131                          }                          }
132                            
133                          if (a.latitude == 0 || a.longitude == 0) {                          if (a.latitude == 0 || a.longitude == 0) {
134                                  antalUdenLatitude++;                                  antalUdenLatitude++;
135                          }                          }
136                            
137                          if (a.state == AddressState.NOT_CHANGED) {                          if (a.state == AddressState.NOT_CHANGED) {
138                                  continue;                                  continue;
139                          }                          }
140                          if (a.dbkBane == 0) {                          if (a.dbkBane == 0) {
141                                  antalUdenDBKBane++;                                  antalUdenDBKBane++;
142                          }                          }
143                            
144                          WeekEntry weekEntry = postnrEntries.get(a.postnr);                          WeekEntry weekEntry = postnrEntries.get(a.postnr);
145                          if (weekEntry == null) {                          if (weekEntry == null) {
146                                  weekEntry = new WeekEntry();                                  weekEntry = new WeekEntry();
147                                  postnrEntries.put(a.postnr, weekEntry);                                  postnrEntries.put(a.postnr, weekEntry);
148                          }                          }
                           
149    
150                            
151    
152                          if (a.state == AddressState.CREATED) {                          if (a.state == AddressState.CREATED) {
153                                  weekEntry.incrementCreated();                                  weekEntry.incrementCreated();
154                          } else {                          } else {
# Line 191  public class AddressReport { Line 159  public class AddressReport {
159                                  weekEntry.fre.updateFromState(a.stateFre);                                  weekEntry.fre.updateFromState(a.stateFre);
160                                  weekEntry.lor.updateFromState(a.stateLor);                                  weekEntry.lor.updateFromState(a.stateLor);
161                                  weekEntry.son.updateFromState(a.stateSon);                                  weekEntry.son.updateFromState(a.stateSon);
162                                    
163                          }                                                }                      
164                  }                  }
165                  for (WeekEntry w : postnrEntries.values()) {                  for (WeekEntry w : postnrEntries.values()) {
166                          total.incrementFromOther(w);                          total.incrementFromOther(w);
167                  }                  }
168                    
169                  StringBuilder sb = new StringBuilder();                  StringBuilder sb = new StringBuilder();
170                    
171                  sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");                  sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
172                  sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");                  sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
173                  sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");                  sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
# Line 217  public class AddressReport { Line 185  public class AddressReport {
185                  if (ugedage.lordag) sb.append("Lørdag, ");                  if (ugedage.lordag) sb.append("Lørdag, ");
186                  if (ugedage.sondag) sb.append("Søndag, ");                  if (ugedage.sondag) sb.append("Søndag, ");
187                  sb.append("<br>");                  sb.append("<br>");
188                    
189                  sb.append("<h2>Data Mangler</h2>\n");                  sb.append("<h2>Data Mangler</h2>\n");
190                  sb.append("<pre>");                  sb.append("<pre>");
191                  sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");                  sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
# Line 225  public class AddressReport { Line 193  public class AddressReport {
193                  sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");                  sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
194                  sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");                  sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
195                  sb.append("</pre>");                  sb.append("</pre>");
                   
196    
197                    
198    
199                  sb.append("<h2>Ændrings oversigt</h2>\n");                  sb.append("<h2>Ændrings oversigt</h2>\n");
200                  sb.append("<table>");                  sb.append("<table>");
201                    
202                  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>");
203                  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>");
204                  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>");
205                  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>");
206                  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>");
207                  sb.append("</table>");                  sb.append("</table>");
208                    
209                  sb.append("<br>");                  sb.append("<br>");
210                  sb.append("<h2>Nye/Ukendte gader</h2>");                  sb.append("<h2>Nye/Ukendte gader</h2>");
211                  sb.append("<table>");                  sb.append("<table>");
# Line 246  public class AddressReport { Line 214  public class AddressReport {
214                          sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");                          sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
215                  }                  }
216                  sb.append("</table>");                  sb.append("</table>");
217                    
218                    
219                  sb.append("</table><br>\n");                  sb.append("</table><br>\n");
220                    
221                  return sb.toString();                  return sb.toString();
222          }          }
223  }  }

Legend:
Removed from v.2952  
changed lines
  Added in v.2953

  ViewVC Help
Powered by ViewVC 1.1.20