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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3044 - (hide annotations) (download)
Wed Jun 8 15:31:27 2016 UTC (8 years ago) by torben
File size: 8775 byte(s)
Vedhæft en detaljeret åbne/lukke fil til rapport mailen
1 torben 3022 package dk.daoas.adressevedligehold.coveragefileupload;
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 3044
99     String newOpenCloseAttachment = getAttachement();
100 torben 2953
101 torben 3044 MailSender.sendMailWithAttachment(subject, reportData, "Details.csv", newOpenCloseAttachment);
102 torben 2953
103 torben 2838 }
104 torben 2953
105    
106    
107 torben 2838 public String getReportData() {
108 torben 2953
109 torben 2838 WeekEntry total = new WeekEntry();
110     HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
111 torben 2953
112 torben 2876 int createFailCount = 0;
113 torben 2953
114 torben 2894 int antalUdenGadeid = 0;
115 torben 2838 int antalUdenKommunekode = 0;
116     int antalUdenLatitude = 0;
117     int antalUdenDBKBane = 0;
118 torben 2953
119 torben 2838 // first gather the intel
120     for (Address a : addressList) {
121 torben 2953
122 torben 2876 if (a.state == AddressState.CREATE_FAIL) {
123     createFailCount++;
124     continue;
125     }
126 torben 2953
127 torben 2894 if (a.gadeid == 0) {
128     antalUdenGadeid++;
129     }
130 torben 2953
131 torben 2876 if (a.kommunekode == 0 || a.vejkode == 0) {
132 torben 2838 antalUdenKommunekode++;
133     }
134 torben 2953
135 torben 2838 if (a.latitude == 0 || a.longitude == 0) {
136     antalUdenLatitude++;
137     }
138 torben 2953
139 torben 2838 if (a.state == AddressState.NOT_CHANGED) {
140     continue;
141     }
142     if (a.dbkBane == 0) {
143     antalUdenDBKBane++;
144     }
145 torben 2953
146 torben 2838 WeekEntry weekEntry = postnrEntries.get(a.postnr);
147     if (weekEntry == null) {
148     weekEntry = new WeekEntry();
149     postnrEntries.put(a.postnr, weekEntry);
150     }
151 torben 2876
152 torben 2953
153    
154 torben 2838 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 torben 2953
165 torben 2838 }
166     }
167     for (WeekEntry w : postnrEntries.values()) {
168     total.incrementFromOther(w);
169     }
170 torben 2953
171 torben 2838 StringBuilder sb = new StringBuilder();
172 torben 2953
173 torben 2838 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 torben 2868 sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("<br>");
179 torben 2924 sb.append("Antal dubletter: " ).append( duplicateCount ).append("<br>");
180 torben 2876 sb.append("Antal fejlede inserts: ").append(createFailCount).append("<br>");
181 torben 2865 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 torben 2953
191 torben 2838 sb.append("<h2>Data Mangler</h2>\n");
192     sb.append("<pre>");
193     sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
194 torben 2894 sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
195 torben 2838 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 torben 2953
200    
201 torben 2838 sb.append("<h2>Ændrings oversigt</h2>\n");
202     sb.append("<table>");
203 torben 2953
204 torben 2838 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 torben 2873 sb.append("</table>");
210 torben 2953
211 torben 2873 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 torben 2953
220    
221 torben 2838 sb.append("</table><br>\n");
222 torben 2953
223 torben 2838 return sb.toString();
224     }
225 torben 3044
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 torben 2838 }

  ViewVC Help
Powered by ViewVC 1.1.20