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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2905 - (hide annotations) (download)
Wed Feb 3 19:02:38 2016 UTC (8 years, 3 months ago) by torben
File size: 9039 byte(s)
More use of logger
1 torben 2838 package dk.daoas.adressevedligehold;
2    
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    
88     //TODO: Afviste adresser
89     public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack ) {
90 torben 2839 this.addrManager = addrManager;
91 torben 2838 addressList = addrManager.getAddressList();
92     this.entryCount = entryCount;
93     this.ugedage = ugedage;
94     this.source = source;
95     this.timer = timer;
96     this.writeBack = writeBack;
97    
98     }
99    
100     public void sendRapport() {
101 torben 2905 logger.info("Sending mail");
102 torben 2838
103     String reportData = getReportData();
104     String subject = "Indlæsnings rapport for " + source.getDistributor();
105    
106 torben 2856 AddressReport.sendMail(subject, reportData);
107 torben 2838
108     }
109    
110 torben 2856 public static void sendMail(String subject, String htmlBody) {
111     Properties props = new Properties();
112     props.put("mail.smtp.host", "10.30.1.28");
113     //props.put("mail.smtp.host", "192.168.12.10");
114    
115     try {
116     // create some properties and get the default Session
117     Session session = Session.getDefaultInstance(props, null);
118     session.setDebug(false);
119    
120     MimeMessage msg = new MimeMessage(session);
121     msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
122    
123    
124     msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail
125     msg.setSubject( subject );
126     msg.setContent(htmlBody, "text/html; charset=utf-8");
127    
128     Transport.send(msg);
129    
130    
131     } catch (MessagingException e) {
132 torben 2905 logger.warning("Unable to send report mail ", e );
133 torben 2856 }
134     }
135    
136    
137 torben 2838 public String getReportData() {
138    
139     WeekEntry total = new WeekEntry();
140     HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
141    
142 torben 2876 int createFailCount = 0;
143 torben 2838
144 torben 2894 int antalUdenGadeid = 0;
145 torben 2838 int antalUdenKommunekode = 0;
146     int antalUdenLatitude = 0;
147     int antalUdenDBKBane = 0;
148    
149     // first gather the intel
150     for (Address a : addressList) {
151 torben 2876
152     if (a.state == AddressState.CREATE_FAIL) {
153     createFailCount++;
154     continue;
155     }
156    
157 torben 2894 if (a.gadeid == 0) {
158     antalUdenGadeid++;
159     }
160    
161 torben 2876 if (a.kommunekode == 0 || a.vejkode == 0) {
162 torben 2838 antalUdenKommunekode++;
163     }
164    
165     if (a.latitude == 0 || a.longitude == 0) {
166     antalUdenLatitude++;
167     }
168    
169     if (a.state == AddressState.NOT_CHANGED) {
170     continue;
171     }
172     if (a.dbkBane == 0) {
173     antalUdenDBKBane++;
174     }
175    
176     WeekEntry weekEntry = postnrEntries.get(a.postnr);
177     if (weekEntry == null) {
178     weekEntry = new WeekEntry();
179     postnrEntries.put(a.postnr, weekEntry);
180     }
181    
182 torben 2876
183 torben 2838
184     if (a.state == AddressState.CREATED) {
185     weekEntry.incrementCreated();
186     } else {
187     weekEntry.man.updateFromState(a.stateMan);
188     weekEntry.tir.updateFromState(a.stateTir);
189     weekEntry.ons.updateFromState(a.stateOns);
190     weekEntry.tor.updateFromState(a.stateTor);
191     weekEntry.fre.updateFromState(a.stateFre);
192     weekEntry.lor.updateFromState(a.stateLor);
193     weekEntry.son.updateFromState(a.stateSon);
194    
195     }
196     }
197     for (WeekEntry w : postnrEntries.values()) {
198     total.incrementFromOther(w);
199     }
200    
201     StringBuilder sb = new StringBuilder();
202    
203     sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
204     sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
205     sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
206     sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
207     sb.append("Antal entries: " ).append( entryCount ).append("<br>");
208 torben 2868 sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
209 torben 2876 sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
210 torben 2865 sb.append("Filen indeholder data til: ");
211     if (ugedage.mandag) sb.append("Mandag, ");
212     if (ugedage.tirsdag) sb.append("Tirsdag, ");
213     if (ugedage.onsdag) sb.append("Onsdag, ");
214     if (ugedage.torsdag) sb.append("Torsdag, ");
215     if (ugedage.fredag) sb.append("Fredag, ");
216     if (ugedage.lordag) sb.append("Lørdag, ");
217     if (ugedage.sondag) sb.append("Søndag, ");
218     sb.append("<br>");
219 torben 2838
220     sb.append("<h2>Data Mangler</h2>\n");
221     sb.append("<pre>");
222     sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
223 torben 2894 sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
224 torben 2838 sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
225     sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
226     sb.append("</pre>");
227    
228    
229    
230     sb.append("<h2>Ændrings oversigt</h2>\n");
231     sb.append("<table>");
232    
233     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>");
234     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>");
235     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>");
236     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>");
237     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>");
238 torben 2873 sb.append("</table>");
239 torben 2838
240 torben 2873 sb.append("<br>");
241     sb.append("<h2>Nye/Ukendte gader</h2>");
242     sb.append("<table>");
243     sb.append("<tr><th>Gadeid</th><th>Vejnavn</th></tr>");
244     for( Entry<Integer,String> unknownStreet : addrManager.getUnknownStreets().entrySet() ) {
245     sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
246     }
247     sb.append("</table>");
248 torben 2838
249 torben 2873
250 torben 2838 sb.append("</table><br>\n");
251    
252     return sb.toString();
253     }
254     }

  ViewVC Help
Powered by ViewVC 1.1.20