/[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 2949 - (hide annotations) (download)
Tue Feb 16 09:38:13 2016 UTC (8 years, 3 months ago) by torben
File size: 9182 byte(s)
Cleanup TODO:
1 torben 2947 package dk.daoas.adressevedligehold.fileupload;
2 torben 2838
3     import java.util.HashMap;
4     import java.util.List;
5 torben 2873 import java.util.Map.Entry;
6 torben 2838 import java.util.Properties;
7    
8     import javax.mail.Message;
9     import javax.mail.MessagingException;
10     import javax.mail.Session;
11     import javax.mail.Transport;
12     import javax.mail.internet.InternetAddress;
13     import javax.mail.internet.MimeMessage;
14    
15     import dk.daoas.adressevedligehold.beans.Address;
16     import dk.daoas.adressevedligehold.beans.Address.AddressState;
17 torben 2905 import dk.daoas.adressevedligehold.tasks.TaskLogger;
18 torben 2838 import dk.daoas.adressevedligehold.util.TimingHelper;
19    
20 torben 2840 /*
21     * TODO: detail rapport pr postnr
22     * TODO: ved mangel oversigten - skeln mellem om det er nye/CREATED eller om det er gamle kendte adresser
23     */
24    
25 torben 2838 public class AddressReport {
26    
27 torben 2860 static class NumEntry {
28 torben 2838 int open = 0;
29     int closed = 0;
30     int modified = 0;
31     int created = 0;
32    
33     public void updateFromState(AddressState st) {
34     if (st == AddressState.OPENED)
35     open++;
36     if (st == AddressState.MODIFIED)
37     modified++;
38     if (st == AddressState.CLOSED)
39     closed++;
40     }
41     public void updateFromOther(NumEntry other) {
42     this.open += other.open;
43     this.modified += other.modified;
44     this.closed += other.closed;
45     this.created += other.created;
46     }
47     }
48 torben 2860 static class WeekEntry {
49 torben 2838 NumEntry man = new NumEntry();
50     NumEntry tir = new NumEntry();
51     NumEntry ons = new NumEntry();
52     NumEntry tor = new NumEntry();
53     NumEntry fre = new NumEntry();
54     NumEntry lor = new NumEntry();
55     NumEntry son = new NumEntry();
56    
57     public void incrementFromOther(WeekEntry other) {
58     man.updateFromOther(other.man);
59     tir.updateFromOther(other.tir);
60     ons.updateFromOther(other.ons);
61     tor.updateFromOther(other.tor);
62     fre.updateFromOther(other.fre);
63     lor.updateFromOther(other.lor);
64     son.updateFromOther(other.son);
65     }
66    
67     public void incrementCreated() {
68     man.created++;
69     tir.created++;
70     ons.created++;
71     tor.created++;
72     fre.created++;
73     lor.created++;
74     son.created++;
75     }
76     }
77    
78 torben 2905 private static TaskLogger logger = TaskLogger.getInstance();
79    
80 torben 2839 AddressManager addrManager;
81 torben 2838 List<Address> addressList;
82     int entryCount;
83     EntryUgedage ugedage;
84     AddressSource source;
85     TimingHelper timer;
86     boolean writeBack;
87 torben 2924 int duplicateCount;
88 torben 2838
89 torben 2949
90 torben 2924 public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {
91 torben 2839 this.addrManager = addrManager;
92 torben 2838 addressList = addrManager.getAddressList();
93     this.entryCount = entryCount;
94     this.ugedage = ugedage;
95     this.source = source;
96     this.timer = timer;
97     this.writeBack = writeBack;
98 torben 2924 this.duplicateCount = duplicateCount;
99 torben 2838 }
100    
101     public void sendRapport() {
102 torben 2905 logger.info("Sending mail");
103 torben 2838
104     String reportData = getReportData();
105     String subject = "Indlæsnings rapport for " + source.getDistributor();
106    
107 torben 2856 AddressReport.sendMail(subject, reportData);
108 torben 2838
109     }
110    
111 torben 2856 public static void sendMail(String subject, String htmlBody) {
112     Properties props = new Properties();
113 torben 2938 props.put("mail.smtp.host", "mail.dao.int");
114 torben 2856 //props.put("mail.smtp.host", "192.168.12.10");
115    
116     try {
117     // create some properties and get the default Session
118     Session session = Session.getDefaultInstance(props, null);
119     session.setDebug(false);
120    
121     MimeMessage msg = new MimeMessage(session);
122     msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
123    
124    
125     msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail
126     msg.setSubject( subject );
127     msg.setContent(htmlBody, "text/html; charset=utf-8");
128    
129     Transport.send(msg);
130    
131    
132     } catch (MessagingException e) {
133 torben 2905 logger.warning("Unable to send report mail ", e );
134 torben 2856 }
135     }
136    
137    
138 torben 2838 public String getReportData() {
139    
140     WeekEntry total = new WeekEntry();
141     HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
142    
143 torben 2876 int createFailCount = 0;
144 torben 2838
145 torben 2894 int antalUdenGadeid = 0;
146 torben 2838 int antalUdenKommunekode = 0;
147     int antalUdenLatitude = 0;
148     int antalUdenDBKBane = 0;
149    
150     // first gather the intel
151     for (Address a : addressList) {
152 torben 2876
153     if (a.state == AddressState.CREATE_FAIL) {
154     createFailCount++;
155     continue;
156     }
157    
158 torben 2894 if (a.gadeid == 0) {
159     antalUdenGadeid++;
160     }
161    
162 torben 2876 if (a.kommunekode == 0 || a.vejkode == 0) {
163 torben 2838 antalUdenKommunekode++;
164     }
165    
166     if (a.latitude == 0 || a.longitude == 0) {
167     antalUdenLatitude++;
168     }
169    
170     if (a.state == AddressState.NOT_CHANGED) {
171     continue;
172     }
173     if (a.dbkBane == 0) {
174     antalUdenDBKBane++;
175     }
176    
177     WeekEntry weekEntry = postnrEntries.get(a.postnr);
178     if (weekEntry == null) {
179     weekEntry = new WeekEntry();
180     postnrEntries.put(a.postnr, weekEntry);
181     }
182    
183 torben 2876
184 torben 2838
185     if (a.state == AddressState.CREATED) {
186     weekEntry.incrementCreated();
187     } else {
188     weekEntry.man.updateFromState(a.stateMan);
189     weekEntry.tir.updateFromState(a.stateTir);
190     weekEntry.ons.updateFromState(a.stateOns);
191     weekEntry.tor.updateFromState(a.stateTor);
192     weekEntry.fre.updateFromState(a.stateFre);
193     weekEntry.lor.updateFromState(a.stateLor);
194     weekEntry.son.updateFromState(a.stateSon);
195    
196     }
197     }
198     for (WeekEntry w : postnrEntries.values()) {
199     total.incrementFromOther(w);
200     }
201    
202     StringBuilder sb = new StringBuilder();
203    
204     sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
205     sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
206     sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
207     sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
208     sb.append("Antal entries: " ).append( entryCount ).append("<br>");
209 torben 2868 sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
210 torben 2924 sb.append("Antal dubletter: " ).append( duplicateCount ).append("<br>");
211 torben 2876 sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
212 torben 2865 sb.append("Filen indeholder data til: ");
213     if (ugedage.mandag) sb.append("Mandag, ");
214     if (ugedage.tirsdag) sb.append("Tirsdag, ");
215     if (ugedage.onsdag) sb.append("Onsdag, ");
216     if (ugedage.torsdag) sb.append("Torsdag, ");
217     if (ugedage.fredag) sb.append("Fredag, ");
218     if (ugedage.lordag) sb.append("Lørdag, ");
219     if (ugedage.sondag) sb.append("Søndag, ");
220     sb.append("<br>");
221 torben 2838
222     sb.append("<h2>Data Mangler</h2>\n");
223     sb.append("<pre>");
224     sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
225 torben 2894 sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
226 torben 2838 sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
227     sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
228     sb.append("</pre>");
229    
230    
231    
232     sb.append("<h2>Ændrings oversigt</h2>\n");
233     sb.append("<table>");
234    
235     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>");
236     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>");
237     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>");
238     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>");
239     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>");
240 torben 2873 sb.append("</table>");
241 torben 2838
242 torben 2873 sb.append("<br>");
243     sb.append("<h2>Nye/Ukendte gader</h2>");
244     sb.append("<table>");
245     sb.append("<tr><th>Gadeid</th><th>Vejnavn</th></tr>");
246     for( Entry<Integer,String> unknownStreet : addrManager.getUnknownStreets().entrySet() ) {
247     sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
248     }
249     sb.append("</table>");
250 torben 2838
251 torben 2873
252 torben 2838 sb.append("</table><br>\n");
253    
254     return sb.toString();
255     }
256     }

  ViewVC Help
Powered by ViewVC 1.1.20