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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2856 - (hide annotations) (download)
Thu Jan 28 10:27:13 2016 UTC (8 years, 4 months ago) by torben
Original Path: dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressReport.java
File size: 7817 byte(s)
Send mail on exceptions

1 torben 2838 package dk.daoas.adressevedligehold;
2    
3     import java.util.HashMap;
4     import java.util.List;
5     import java.util.Properties;
6    
7     import javax.mail.Message;
8     import javax.mail.MessagingException;
9     import javax.mail.Session;
10     import javax.mail.Transport;
11     import javax.mail.internet.InternetAddress;
12     import javax.mail.internet.MimeMessage;
13    
14     import dk.daoas.adressevedligehold.beans.Address;
15     import dk.daoas.adressevedligehold.beans.Address.AddressState;
16     import dk.daoas.adressevedligehold.util.TimingHelper;
17    
18 torben 2840 /*
19     * TODO: detail rapport pr postnr
20     * TODO: ved mangel oversigten - skeln mellem om det er nye/CREATED eller om det er gamle kendte adresser
21     */
22    
23 torben 2838 public class AddressReport {
24    
25     class NumEntry {
26     int open = 0;
27     int closed = 0;
28     int modified = 0;
29     int created = 0;
30    
31     public void updateFromState(AddressState st) {
32     if (st == AddressState.OPENED)
33     open++;
34     if (st == AddressState.MODIFIED)
35     modified++;
36     if (st == AddressState.CLOSED)
37     closed++;
38     }
39     public void updateFromOther(NumEntry other) {
40     this.open += other.open;
41     this.modified += other.modified;
42     this.closed += other.closed;
43     this.created += other.created;
44     }
45     }
46     class WeekEntry {
47     NumEntry man = new NumEntry();
48     NumEntry tir = new NumEntry();
49     NumEntry ons = new NumEntry();
50     NumEntry tor = new NumEntry();
51     NumEntry fre = new NumEntry();
52     NumEntry lor = new NumEntry();
53     NumEntry son = new NumEntry();
54    
55     public void incrementFromOther(WeekEntry other) {
56     man.updateFromOther(other.man);
57     tir.updateFromOther(other.tir);
58     ons.updateFromOther(other.ons);
59     tor.updateFromOther(other.tor);
60     fre.updateFromOther(other.fre);
61     lor.updateFromOther(other.lor);
62     son.updateFromOther(other.son);
63     }
64    
65     public void incrementCreated() {
66     man.created++;
67     tir.created++;
68     ons.created++;
69     tor.created++;
70     fre.created++;
71     lor.created++;
72     son.created++;
73     }
74     }
75    
76 torben 2839 AddressManager addrManager;
77 torben 2838 List<Address> addressList;
78     int entryCount;
79     EntryUgedage ugedage;
80     AddressSource source;
81     TimingHelper timer;
82     boolean writeBack;
83    
84     //TODO: Afviste adresser
85     public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack ) {
86 torben 2839 this.addrManager = addrManager;
87 torben 2838 addressList = addrManager.getAddressList();
88     this.entryCount = entryCount;
89     this.ugedage = ugedage;
90     this.source = source;
91     this.timer = timer;
92     this.writeBack = writeBack;
93    
94     }
95    
96     public void sendRapport() {
97     System.out.println("Sending mail");
98    
99     String reportData = getReportData();
100     String subject = "Indlæsnings rapport for " + source.getDistributor();
101    
102 torben 2856 AddressReport.sendMail(subject, reportData);
103 torben 2838
104     }
105    
106 torben 2856 public static void sendMail(String subject, String htmlBody) {
107     Properties props = new Properties();
108     props.put("mail.smtp.host", "10.30.1.28");
109     //props.put("mail.smtp.host", "192.168.12.10");
110    
111     try {
112     // create some properties and get the default Session
113     Session session = Session.getDefaultInstance(props, null);
114     session.setDebug(false);
115    
116     MimeMessage msg = new MimeMessage(session);
117     msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
118    
119    
120     msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail
121     msg.setSubject( subject );
122     msg.setContent(htmlBody, "text/html; charset=utf-8");
123    
124     Transport.send(msg);
125    
126    
127     } catch (MessagingException e) {
128     System.out.println("Unable to send report mail " + e.getMessage() );
129     }
130     }
131    
132    
133 torben 2838 public String getReportData() {
134    
135     WeekEntry total = new WeekEntry();
136     HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
137    
138    
139 torben 2840 int antalUdenKommunekodeNy = 0;
140 torben 2838 int antalUdenKommunekode = 0;
141     int antalUdenLatitude = 0;
142     int antalUdenDBKBane = 0;
143    
144     // first gather the intel
145     for (Address a : addressList) {
146     if (a.kommunekode == 0 || a.vejkode == 0) {
147 torben 2840 if (a.state == AddressState.CREATED) {
148     antalUdenKommunekodeNy++;
149     }
150    
151 torben 2838 antalUdenKommunekode++;
152     }
153    
154     if (a.latitude == 0 || a.longitude == 0) {
155     antalUdenLatitude++;
156     }
157    
158     if (a.state == AddressState.NOT_CHANGED) {
159     continue;
160     }
161     if (a.dbkBane == 0) {
162     antalUdenDBKBane++;
163     }
164    
165     WeekEntry weekEntry = postnrEntries.get(a.postnr);
166     if (weekEntry == null) {
167     weekEntry = new WeekEntry();
168     postnrEntries.put(a.postnr, weekEntry);
169     }
170    
171    
172     if (a.state == AddressState.CREATED) {
173     weekEntry.incrementCreated();
174     } else {
175     weekEntry.man.updateFromState(a.stateMan);
176     weekEntry.tir.updateFromState(a.stateTir);
177     weekEntry.ons.updateFromState(a.stateOns);
178     weekEntry.tor.updateFromState(a.stateTor);
179     weekEntry.fre.updateFromState(a.stateFre);
180     weekEntry.lor.updateFromState(a.stateLor);
181     weekEntry.son.updateFromState(a.stateSon);
182    
183     }
184     }
185     for (WeekEntry w : postnrEntries.values()) {
186     total.incrementFromOther(w);
187     }
188    
189     StringBuilder sb = new StringBuilder();
190    
191     sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
192     sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
193     sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
194     sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
195     sb.append("Antal entries: " ).append( entryCount ).append("<br>");
196 torben 2839 sb.append("Antal afviste: " ).append( addrManager.getAfvistAntal() ).append("<br>");
197 torben 2838
198     sb.append("<h2>Data Mangler</h2>\n");
199     sb.append("<pre>");
200     sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
201     sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
202     sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
203     sb.append("</pre>");
204    
205    
206    
207     sb.append("<h2>Ændrings oversigt</h2>\n");
208     sb.append("<table>");
209    
210     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>");
211     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>");
212     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>");
213     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>");
214     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>");
215    
216    
217    
218     sb.append("</table><br>\n");
219    
220     return sb.toString();
221     }
222     }

  ViewVC Help
Powered by ViewVC 1.1.20