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 |
|
7 |
torben |
2953 |
import dk.daoas.adressevedligehold.MailSender;
|
8 |
torben |
2838 |
import dk.daoas.adressevedligehold.beans.Address;
|
9 |
|
|
import dk.daoas.adressevedligehold.beans.Address.AddressState;
|
10 |
torben |
2905 |
import dk.daoas.adressevedligehold.tasks.TaskLogger;
|
11 |
torben |
2838 |
import dk.daoas.adressevedligehold.util.TimingHelper;
|
12 |
|
|
|
13 |
torben |
2840 |
/*
|
14 |
torben |
2950 |
*
|
15 |
torben |
2840 |
*/
|
16 |
|
|
|
17 |
torben |
2838 |
public class AddressReport {
|
18 |
torben |
2953 |
|
19 |
torben |
2860 |
static class NumEntry {
|
20 |
torben |
2838 |
int open = 0;
|
21 |
|
|
int closed = 0;
|
22 |
|
|
int modified = 0;
|
23 |
|
|
int created = 0;
|
24 |
torben |
2953 |
|
25 |
torben |
2838 |
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 |
torben |
2860 |
static class WeekEntry {
|
41 |
torben |
2838 |
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 |
torben |
2953 |
|
49 |
torben |
2838 |
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 |
torben |
2953 |
|
59 |
torben |
2838 |
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 |
torben |
2953 |
|
70 |
torben |
2905 |
private static TaskLogger logger = TaskLogger.getInstance();
|
71 |
torben |
2953 |
|
72 |
torben |
2839 |
AddressManager addrManager;
|
73 |
torben |
2838 |
List<Address> addressList;
|
74 |
|
|
int entryCount;
|
75 |
|
|
EntryUgedage ugedage;
|
76 |
|
|
AddressSource source;
|
77 |
|
|
TimingHelper timer;
|
78 |
|
|
boolean writeBack;
|
79 |
torben |
2924 |
int duplicateCount;
|
80 |
torben |
2949 |
|
81 |
torben |
2953 |
|
82 |
torben |
2924 |
public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) {
|
83 |
torben |
2839 |
this.addrManager = addrManager;
|
84 |
torben |
2838 |
addressList = addrManager.getAddressList();
|
85 |
|
|
this.entryCount = entryCount;
|
86 |
|
|
this.ugedage = ugedage;
|
87 |
|
|
this.source = source;
|
88 |
|
|
this.timer = timer;
|
89 |
|
|
this.writeBack = writeBack;
|
90 |
torben |
2924 |
this.duplicateCount = duplicateCount;
|
91 |
torben |
2838 |
}
|
92 |
torben |
2953 |
|
93 |
torben |
2838 |
public void sendRapport() {
|
94 |
torben |
2905 |
logger.info("Sending mail");
|
95 |
torben |
2953 |
|
96 |
torben |
2838 |
String reportData = getReportData();
|
97 |
|
|
String subject = "Indlæsnings rapport for " + source.getDistributor();
|
98 |
torben |
2953 |
|
99 |
|
|
MailSender.sendMail(subject, reportData);
|
100 |
|
|
|
101 |
torben |
2838 |
}
|
102 |
torben |
2953 |
|
103 |
|
|
|
104 |
|
|
|
105 |
torben |
2838 |
public String getReportData() {
|
106 |
torben |
2953 |
|
107 |
torben |
2838 |
WeekEntry total = new WeekEntry();
|
108 |
|
|
HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
|
109 |
torben |
2953 |
|
110 |
torben |
2876 |
int createFailCount = 0;
|
111 |
torben |
2953 |
|
112 |
torben |
2894 |
int antalUdenGadeid = 0;
|
113 |
torben |
2838 |
int antalUdenKommunekode = 0;
|
114 |
|
|
int antalUdenLatitude = 0;
|
115 |
|
|
int antalUdenDBKBane = 0;
|
116 |
torben |
2953 |
|
117 |
torben |
2838 |
// first gather the intel
|
118 |
|
|
for (Address a : addressList) {
|
119 |
torben |
2953 |
|
120 |
torben |
2876 |
if (a.state == AddressState.CREATE_FAIL) {
|
121 |
|
|
createFailCount++;
|
122 |
|
|
continue;
|
123 |
|
|
}
|
124 |
torben |
2953 |
|
125 |
torben |
2894 |
if (a.gadeid == 0) {
|
126 |
|
|
antalUdenGadeid++;
|
127 |
|
|
}
|
128 |
torben |
2953 |
|
129 |
torben |
2876 |
if (a.kommunekode == 0 || a.vejkode == 0) {
|
130 |
torben |
2838 |
antalUdenKommunekode++;
|
131 |
|
|
}
|
132 |
torben |
2953 |
|
133 |
torben |
2838 |
if (a.latitude == 0 || a.longitude == 0) {
|
134 |
|
|
antalUdenLatitude++;
|
135 |
|
|
}
|
136 |
torben |
2953 |
|
137 |
torben |
2838 |
if (a.state == AddressState.NOT_CHANGED) {
|
138 |
|
|
continue;
|
139 |
|
|
}
|
140 |
|
|
if (a.dbkBane == 0) {
|
141 |
|
|
antalUdenDBKBane++;
|
142 |
|
|
}
|
143 |
torben |
2953 |
|
144 |
torben |
2838 |
WeekEntry weekEntry = postnrEntries.get(a.postnr);
|
145 |
|
|
if (weekEntry == null) {
|
146 |
|
|
weekEntry = new WeekEntry();
|
147 |
|
|
postnrEntries.put(a.postnr, weekEntry);
|
148 |
|
|
}
|
149 |
torben |
2876 |
|
150 |
torben |
2953 |
|
151 |
|
|
|
152 |
torben |
2838 |
if (a.state == AddressState.CREATED) {
|
153 |
|
|
weekEntry.incrementCreated();
|
154 |
|
|
} else {
|
155 |
|
|
weekEntry.man.updateFromState(a.stateMan);
|
156 |
|
|
weekEntry.tir.updateFromState(a.stateTir);
|
157 |
|
|
weekEntry.ons.updateFromState(a.stateOns);
|
158 |
|
|
weekEntry.tor.updateFromState(a.stateTor);
|
159 |
|
|
weekEntry.fre.updateFromState(a.stateFre);
|
160 |
|
|
weekEntry.lor.updateFromState(a.stateLor);
|
161 |
|
|
weekEntry.son.updateFromState(a.stateSon);
|
162 |
torben |
2953 |
|
163 |
torben |
2838 |
}
|
164 |
|
|
}
|
165 |
|
|
for (WeekEntry w : postnrEntries.values()) {
|
166 |
|
|
total.incrementFromOther(w);
|
167 |
|
|
}
|
168 |
torben |
2953 |
|
169 |
torben |
2838 |
StringBuilder sb = new StringBuilder();
|
170 |
torben |
2953 |
|
171 |
torben |
2838 |
sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
|
172 |
|
|
sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
|
173 |
|
|
sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
|
174 |
|
|
sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
|
175 |
|
|
sb.append("Antal entries: " ).append( entryCount ).append("<br>");
|
176 |
torben |
2868 |
sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
|
177 |
torben |
2924 |
sb.append("Antal dubletter: " ).append( duplicateCount ).append("<br>");
|
178 |
torben |
2876 |
sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
|
179 |
torben |
2865 |
sb.append("Filen indeholder data til: ");
|
180 |
|
|
if (ugedage.mandag) sb.append("Mandag, ");
|
181 |
|
|
if (ugedage.tirsdag) sb.append("Tirsdag, ");
|
182 |
|
|
if (ugedage.onsdag) sb.append("Onsdag, ");
|
183 |
|
|
if (ugedage.torsdag) sb.append("Torsdag, ");
|
184 |
|
|
if (ugedage.fredag) sb.append("Fredag, ");
|
185 |
|
|
if (ugedage.lordag) sb.append("Lørdag, ");
|
186 |
|
|
if (ugedage.sondag) sb.append("Søndag, ");
|
187 |
|
|
sb.append("<br>");
|
188 |
torben |
2953 |
|
189 |
torben |
2838 |
sb.append("<h2>Data Mangler</h2>\n");
|
190 |
|
|
sb.append("<pre>");
|
191 |
|
|
sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
|
192 |
torben |
2894 |
sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
|
193 |
torben |
2838 |
sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
|
194 |
|
|
sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
|
195 |
|
|
sb.append("</pre>");
|
196 |
|
|
|
197 |
torben |
2953 |
|
198 |
|
|
|
199 |
torben |
2838 |
sb.append("<h2>Ændrings oversigt</h2>\n");
|
200 |
|
|
sb.append("<table>");
|
201 |
torben |
2953 |
|
202 |
torben |
2838 |
sb.append("<tr><td> </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>");
|
203 |
|
|
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>");
|
204 |
|
|
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>");
|
205 |
|
|
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>");
|
206 |
|
|
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>");
|
207 |
torben |
2873 |
sb.append("</table>");
|
208 |
torben |
2953 |
|
209 |
torben |
2873 |
sb.append("<br>");
|
210 |
|
|
sb.append("<h2>Nye/Ukendte gader</h2>");
|
211 |
|
|
sb.append("<table>");
|
212 |
|
|
sb.append("<tr><th>Gadeid</th><th>Vejnavn</th></tr>");
|
213 |
|
|
for( Entry<Integer,String> unknownStreet : addrManager.getUnknownStreets().entrySet() ) {
|
214 |
|
|
sb.append("<tr><td>").append(unknownStreet.getKey()).append("</td><td>").append(unknownStreet.getValue()).append("</td></tr>");
|
215 |
|
|
}
|
216 |
|
|
sb.append("</table>");
|
217 |
torben |
2953 |
|
218 |
|
|
|
219 |
torben |
2838 |
sb.append("</table><br>\n");
|
220 |
torben |
2953 |
|
221 |
torben |
2838 |
return sb.toString();
|
222 |
|
|
}
|
223 |
|
|
}
|