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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2856 - (show annotations) (download)
Thu Jan 28 10:27:13 2016 UTC (8 years, 3 months ago) by torben
File size: 7817 byte(s)
Send mail on exceptions

1 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 /*
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 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 AddressManager addrManager;
77 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 this.addrManager = addrManager;
87 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 AddressReport.sendMail(subject, reportData);
103
104 }
105
106 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 public String getReportData() {
134
135 WeekEntry total = new WeekEntry();
136 HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
137
138
139 int antalUdenKommunekodeNy = 0;
140 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 if (a.state == AddressState.CREATED) {
148 antalUdenKommunekodeNy++;
149 }
150
151 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 sb.append("Antal afviste: " ).append( addrManager.getAfvistAntal() ).append("<br>");
197
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