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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3044 - (show annotations) (download)
Wed Jun 8 15:31:27 2016 UTC (7 years, 11 months ago) by torben
File size: 8775 byte(s)
Vedhæft en detaljeret åbne/lukke fil til rapport mailen
1 package dk.daoas.adressevedligehold.coveragefileupload;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map.Entry;
6
7 import dk.daoas.adressevedligehold.MailSender;
8 import dk.daoas.adressevedligehold.beans.Address;
9 import dk.daoas.adressevedligehold.beans.Address.AddressState;
10 import dk.daoas.adressevedligehold.tasks.TaskLogger;
11 import dk.daoas.adressevedligehold.util.TimingHelper;
12
13 /*
14 *
15 */
16
17 public class AddressReport {
18
19 static class NumEntry {
20 int open = 0;
21 int closed = 0;
22 int modified = 0;
23 int created = 0;
24
25 public void updateFromState(AddressState st) {
26 if (st == AddressState.OPENED)
27 open++;
28 if (st == AddressState.MODIFIED)
29 modified++;
30 if (st == AddressState.CLOSED)
31 closed++;
32 }
33 public void updateFromOther(NumEntry other) {
34 this.open += other.open;
35 this.modified += other.modified;
36 this.closed += other.closed;
37 this.created += other.created;
38 }
39 }
40 static class WeekEntry {
41 NumEntry man = new NumEntry();
42 NumEntry tir = new NumEntry();
43 NumEntry ons = new NumEntry();
44 NumEntry tor = new NumEntry();
45 NumEntry fre = new NumEntry();
46 NumEntry lor = new NumEntry();
47 NumEntry son = new NumEntry();
48
49 public void incrementFromOther(WeekEntry other) {
50 man.updateFromOther(other.man);
51 tir.updateFromOther(other.tir);
52 ons.updateFromOther(other.ons);
53 tor.updateFromOther(other.tor);
54 fre.updateFromOther(other.fre);
55 lor.updateFromOther(other.lor);
56 son.updateFromOther(other.son);
57 }
58
59 public void incrementCreated() {
60 man.created++;
61 tir.created++;
62 ons.created++;
63 tor.created++;
64 fre.created++;
65 lor.created++;
66 son.created++;
67 }
68 }
69
70 private static TaskLogger logger = TaskLogger.getInstance();
71
72 AddressManager addrManager;
73 List<Address> addressList;
74 int entryCount;
75 EntryUgedage ugedage;
76 AddressSource source;
77 TimingHelper timer;
78 boolean writeBack;
79 int duplicateCount;
80
81
82 public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {
83 this.addrManager = addrManager;
84 addressList = addrManager.getAddressList();
85 this.entryCount = entryCount;
86 this.ugedage = ugedage;
87 this.source = source;
88 this.timer = timer;
89 this.writeBack = writeBack;
90 this.duplicateCount = duplicateCount;
91 }
92
93 public void sendRapport() {
94 logger.info("Sending mail");
95
96 String reportData = getReportData();
97 String subject = "Indlæsnings rapport for " + source.getDistributor();
98
99 String newOpenCloseAttachment = getAttachement();
100
101 MailSender.sendMailWithAttachment(subject, reportData, "Details.csv", newOpenCloseAttachment);
102
103 }
104
105
106
107 public String getReportData() {
108
109 WeekEntry total = new WeekEntry();
110 HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
111
112 int createFailCount = 0;
113
114 int antalUdenGadeid = 0;
115 int antalUdenKommunekode = 0;
116 int antalUdenLatitude = 0;
117 int antalUdenDBKBane = 0;
118
119 // first gather the intel
120 for (Address a : addressList) {
121
122 if (a.state == AddressState.CREATE_FAIL) {
123 createFailCount++;
124 continue;
125 }
126
127 if (a.gadeid == 0) {
128 antalUdenGadeid++;
129 }
130
131 if (a.kommunekode == 0 || a.vejkode == 0) {
132 antalUdenKommunekode++;
133 }
134
135 if (a.latitude == 0 || a.longitude == 0) {
136 antalUdenLatitude++;
137 }
138
139 if (a.state == AddressState.NOT_CHANGED) {
140 continue;
141 }
142 if (a.dbkBane == 0) {
143 antalUdenDBKBane++;
144 }
145
146 WeekEntry weekEntry = postnrEntries.get(a.postnr);
147 if (weekEntry == null) {
148 weekEntry = new WeekEntry();
149 postnrEntries.put(a.postnr, weekEntry);
150 }
151
152
153
154 if (a.state == AddressState.CREATED) {
155 weekEntry.incrementCreated();
156 } else {
157 weekEntry.man.updateFromState(a.stateMan);
158 weekEntry.tir.updateFromState(a.stateTir);
159 weekEntry.ons.updateFromState(a.stateOns);
160 weekEntry.tor.updateFromState(a.stateTor);
161 weekEntry.fre.updateFromState(a.stateFre);
162 weekEntry.lor.updateFromState(a.stateLor);
163 weekEntry.son.updateFromState(a.stateSon);
164
165 }
166 }
167 for (WeekEntry w : postnrEntries.values()) {
168 total.incrementFromOther(w);
169 }
170
171 StringBuilder sb = new StringBuilder();
172
173 sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
174 sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
175 sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
176 sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
177 sb.append("Antal entries: " ).append( entryCount ).append("<br>");
178 sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
179 sb.append("Antal dubletter: " ).append( duplicateCount ).append("<br>");
180 sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
181 sb.append("Filen indeholder data til: ");
182 if (ugedage.mandag) sb.append("Mandag, ");
183 if (ugedage.tirsdag) sb.append("Tirsdag, ");
184 if (ugedage.onsdag) sb.append("Onsdag, ");
185 if (ugedage.torsdag) sb.append("Torsdag, ");
186 if (ugedage.fredag) sb.append("Fredag, ");
187 if (ugedage.lordag) sb.append("Lørdag, ");
188 if (ugedage.sondag) sb.append("Søndag, ");
189 sb.append("<br>");
190
191 sb.append("<h2>Data Mangler</h2>\n");
192 sb.append("<pre>");
193 sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
194 sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
195 sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
196 sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
197 sb.append("</pre>");
198
199
200
201 sb.append("<h2>Ændrings oversigt</h2>\n");
202 sb.append("<table>");
203
204 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>");
205 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>");
206 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>");
207 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>");
208 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>");
209 sb.append("</table>");
210
211 sb.append("<br>");
212 sb.append("<h2>Nye/Ukendte gader</h2>");
213 sb.append("<table>");
214 sb.append("<tr><th>Gadeid</th><th>Vejnavn</th></tr>");
215 for( Entry<Integer,String> unknownStreet : addrManager.getUnknownStreets().entrySet() ) {
216 sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
217 }
218 sb.append("</table>");
219
220
221 sb.append("</table><br>\n");
222
223 return sb.toString();
224 }
225
226 public String getAttachement() {
227 StringBuilder sb = new StringBuilder();
228 sb.append("Status;Gadeid;Post;Vejnavn;Husnr;Litra\r\n");
229
230 for (Address a : addressList) {
231 switch (a.state) {
232 case CLOSED:
233 sb.append("Closed;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
234 break;
235 case CREATED:
236 sb.append("Created;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
237 break;
238 case CREATE_FAIL:
239 break;
240 case MODIFIED:
241 break;
242 case NOT_CHANGED:
243 break;
244 case OPENED:
245 sb.append("Opened;" + a.gadeid + ";" + a.postnr + ";" + a.vejnavn + ";" + a.husnr + ";" + a.husnrbogstav + "\r\n");
246 break;
247 default:
248 break;
249 }
250 }
251
252 return sb.toString();
253 }
254 }

  ViewVC Help
Powered by ViewVC 1.1.20