/[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 2838 - (hide annotations) (download)
Sun Jan 24 21:48:55 2016 UTC (8 years, 4 months ago) by torben
File size: 7258 byte(s)
Add first working edition
1 torben 2838 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     public class AddressReport {
19    
20     class NumEntry {
21     int open = 0;
22     int closed = 0;
23     int modified = 0;
24     int created = 0;
25    
26     public void updateFromState(AddressState st) {
27     if (st == AddressState.OPENED)
28     open++;
29     if (st == AddressState.MODIFIED)
30     modified++;
31     if (st == AddressState.CLOSED)
32     closed++;
33     }
34     public void updateFromOther(NumEntry other) {
35     this.open += other.open;
36     this.modified += other.modified;
37     this.closed += other.closed;
38     this.created += other.created;
39     }
40     }
41     class WeekEntry {
42     NumEntry man = new NumEntry();
43     NumEntry tir = new NumEntry();
44     NumEntry ons = new NumEntry();
45     NumEntry tor = new NumEntry();
46     NumEntry fre = new NumEntry();
47     NumEntry lor = new NumEntry();
48     NumEntry son = new NumEntry();
49    
50     public void incrementFromOther(WeekEntry other) {
51     man.updateFromOther(other.man);
52     tir.updateFromOther(other.tir);
53     ons.updateFromOther(other.ons);
54     tor.updateFromOther(other.tor);
55     fre.updateFromOther(other.fre);
56     lor.updateFromOther(other.lor);
57     son.updateFromOther(other.son);
58     }
59    
60     public void incrementCreated() {
61     man.created++;
62     tir.created++;
63     ons.created++;
64     tor.created++;
65     fre.created++;
66     lor.created++;
67     son.created++;
68     }
69     }
70    
71    
72     List<Address> addressList;
73     int entryCount;
74     EntryUgedage ugedage;
75     AddressSource source;
76     TimingHelper timer;
77     boolean writeBack;
78    
79     //TODO: Afviste adresser
80     public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack ) {
81     addressList = addrManager.getAddressList();
82     this.entryCount = entryCount;
83     this.ugedage = ugedage;
84     this.source = source;
85     this.timer = timer;
86     this.writeBack = writeBack;
87    
88     }
89    
90     public void sendRapport() {
91     System.out.println("Sending mail");
92    
93     String reportData = getReportData();
94     String subject = "Indlæsnings rapport for " + source.getDistributor();
95    
96    
97     Properties props = new Properties();
98     props.put("mail.smtp.host", "10.30.1.28");
99     //props.put("mail.smtp.host", "192.168.12.10");
100    
101     try {
102     // create some properties and get the default Session
103     Session session = Session.getDefaultInstance(props, null);
104     session.setDebug(false);
105    
106     MimeMessage msg = new MimeMessage(session);
107     msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
108    
109    
110     msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail
111     msg.setSubject( subject );
112     msg.setContent(reportData, "text/html; charset=utf-8");
113    
114     Transport.send(msg);
115    
116    
117     } catch (MessagingException e) {
118     System.out.println("Unable to send report mail " + e.getMessage() );
119     }
120    
121    
122     }
123    
124     public String getReportData() {
125    
126     WeekEntry total = new WeekEntry();
127     HashMap<Short, WeekEntry> postnrEntries = new HashMap<Short,WeekEntry>();
128    
129    
130     int antalUdenKommunekode = 0;
131     int antalUdenLatitude = 0;
132     int antalUdenDBKBane = 0;
133    
134     // first gather the intel
135     for (Address a : addressList) {
136     if (a.kommunekode == 0 || a.vejkode == 0) {
137     antalUdenKommunekode++;
138     }
139    
140     if (a.latitude == 0 || a.longitude == 0) {
141     antalUdenLatitude++;
142     }
143    
144     if (a.state == AddressState.NOT_CHANGED) {
145     continue;
146     }
147     if (a.dbkBane == 0) {
148     antalUdenDBKBane++;
149     }
150    
151     WeekEntry weekEntry = postnrEntries.get(a.postnr);
152     if (weekEntry == null) {
153     weekEntry = new WeekEntry();
154     postnrEntries.put(a.postnr, weekEntry);
155     }
156    
157    
158     if (a.state == AddressState.CREATED) {
159     weekEntry.incrementCreated();
160     } else {
161     weekEntry.man.updateFromState(a.stateMan);
162     weekEntry.tir.updateFromState(a.stateTir);
163     weekEntry.ons.updateFromState(a.stateOns);
164     weekEntry.tor.updateFromState(a.stateTor);
165     weekEntry.fre.updateFromState(a.stateFre);
166     weekEntry.lor.updateFromState(a.stateLor);
167     weekEntry.son.updateFromState(a.stateSon);
168    
169     }
170     }
171     for (WeekEntry w : postnrEntries.values()) {
172     total.incrementFromOther(w);
173     }
174    
175     StringBuilder sb = new StringBuilder();
176    
177     sb.append("<h1>Indlæsnings rapport for " + source.getDistributor() + " </h1>");
178     sb.append("Filnavn: ").append( source.getFilename() ).append("<br>");
179     sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms. <br>");
180     sb.append("Skriv til DB: ").append( writeBack ).append("<br>");
181     sb.append("Antal entries: " ).append( entryCount ).append("<br>");
182    
183     sb.append("<h2>Data Mangler</h2>\n");
184     sb.append("<pre>");
185     sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
186     sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
187     sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
188     sb.append("</pre>");
189    
190    
191    
192     sb.append("<h2>Ændrings oversigt</h2>\n");
193     sb.append("<table>");
194    
195     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>");
196     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>");
197     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>");
198     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>");
199     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>");
200    
201    
202    
203     sb.append("</table><br>\n");
204    
205     return sb.toString();
206     }
207     }

  ViewVC Help
Powered by ViewVC 1.1.20