--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressReport.java 2016/01/28 16:12:28 2868 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressReport.java 2016/02/16 13:09:00 2953 @@ -1,33 +1,27 @@ -package dk.daoas.adressevedligehold; +package dk.daoas.adressevedligehold.fileupload; import java.util.HashMap; import java.util.List; -import java.util.Properties; - -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeMessage; +import java.util.Map.Entry; +import dk.daoas.adressevedligehold.MailSender; import dk.daoas.adressevedligehold.beans.Address; import dk.daoas.adressevedligehold.beans.Address.AddressState; +import dk.daoas.adressevedligehold.tasks.TaskLogger; import dk.daoas.adressevedligehold.util.TimingHelper; /* - * TODO: detail rapport pr postnr - * TODO: ved mangel oversigten - skeln mellem om det er nye/CREATED eller om det er gamle kendte adresser + * */ public class AddressReport { - + static class NumEntry { int open = 0; int closed = 0; int modified = 0; int created = 0; - + public void updateFromState(AddressState st) { if (st == AddressState.OPENED) open++; @@ -51,7 +45,7 @@ NumEntry fre = new NumEntry(); NumEntry lor = new NumEntry(); NumEntry son = new NumEntry(); - + public void incrementFromOther(WeekEntry other) { man.updateFromOther(other.man); tir.updateFromOther(other.tir); @@ -61,7 +55,7 @@ lor.updateFromOther(other.lor); son.updateFromOther(other.son); } - + public void incrementCreated() { man.created++; tir.created++; @@ -72,7 +66,9 @@ son.created++; } } - + + private static TaskLogger logger = TaskLogger.getInstance(); + AddressManager addrManager; List
addressList; int entryCount; @@ -80,9 +76,10 @@ AddressSource source; TimingHelper timer; boolean writeBack; - - //TODO: Afviste adresser - public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack ) { + int duplicateCount; + + + public AddressReport(AddressManager addrManager, int entryCount, EntryUgedage ugedage, AddressSource source, TimingHelper timer, boolean writeBack, int duplicateCount ) { this.addrManager = addrManager; addressList = addrManager.getAddressList(); this.entryCount = entryCount; @@ -90,81 +87,68 @@ this.source = source; this.timer = timer; this.writeBack = writeBack; - + this.duplicateCount = duplicateCount; } - + public void sendRapport() { - System.out.println("Sending mail"); - + logger.info("Sending mail"); + String reportData = getReportData(); String subject = "Indlæsnings rapport for " + source.getDistributor(); - - AddressReport.sendMail(subject, reportData); - - } - - public static void sendMail(String subject, String htmlBody) { - Properties props = new Properties(); - props.put("mail.smtp.host", "10.30.1.28"); - //props.put("mail.smtp.host", "192.168.12.10"); - - try { - // create some properties and get the default Session - Session session = Session.getDefaultInstance(props, null); - session.setDebug(false); - - MimeMessage msg = new MimeMessage(session); - msg.setFrom( new InternetAddress("no-reply@daoas.dk") ); - - - msg.setRecipient(Message.RecipientType.TO, new InternetAddress("thn@daoas.dk") );//TODO: mulighed for at ændre modtager mail - msg.setSubject( subject ); - msg.setContent(htmlBody, "text/html; charset=utf-8"); - - Transport.send(msg); - - - } catch (MessagingException e) { - System.out.println("Unable to send report mail " + e.getMessage() ); - } + + MailSender.sendMail(subject, reportData); + } - - + + + public String getReportData() { - + WeekEntry total = new WeekEntry(); HashMap postnrEntries = new HashMap(); - - + + int createFailCount = 0; + + int antalUdenGadeid = 0; int antalUdenKommunekode = 0; int antalUdenLatitude = 0; int antalUdenDBKBane = 0; - + // first gather the intel for (Address a : addressList) { - if (a.kommunekode == 0 || a.vejkode == 0) { - + + if (a.state == AddressState.CREATE_FAIL) { + createFailCount++; + continue; + } + + if (a.gadeid == 0) { + antalUdenGadeid++; + } + + if (a.kommunekode == 0 || a.vejkode == 0) { antalUdenKommunekode++; } - + if (a.latitude == 0 || a.longitude == 0) { antalUdenLatitude++; } - + if (a.state == AddressState.NOT_CHANGED) { continue; } if (a.dbkBane == 0) { antalUdenDBKBane++; } - + WeekEntry weekEntry = postnrEntries.get(a.postnr); if (weekEntry == null) { weekEntry = new WeekEntry(); postnrEntries.put(a.postnr, weekEntry); } - - + + + if (a.state == AddressState.CREATED) { weekEntry.incrementCreated(); } else { @@ -175,21 +159,23 @@ weekEntry.fre.updateFromState(a.stateFre); weekEntry.lor.updateFromState(a.stateLor); weekEntry.son.updateFromState(a.stateSon); - + } } for (WeekEntry w : postnrEntries.values()) { total.incrementFromOther(w); } - + StringBuilder sb = new StringBuilder(); - + sb.append("

Indlæsnings rapport for " + source.getDistributor() + "

"); sb.append("Filnavn: ").append( source.getFilename() ).append("
"); sb.append("Tidsforbrug: ").append( timer.getElapsed() ).append("ms.
"); sb.append("Skriv til DB: ").append( writeBack ).append("
"); sb.append("Antal entries: " ).append( entryCount ).append("
"); sb.append("Antal afviste: " ).append( addrManager.getRejectedCount() ).append("
"); + sb.append("Antal dubletter: " ).append( duplicateCount ).append("
"); + sb.append("Antal fejlede inserts: ").append(createFailCount).append("
"); sb.append("Filen indeholder data til: "); if (ugedage.mandag) sb.append("Mandag, "); if (ugedage.tirsdag) sb.append("Tirsdag, "); @@ -199,29 +185,39 @@ if (ugedage.lordag) sb.append("Lørdag, "); if (ugedage.sondag) sb.append("Søndag, "); sb.append("
"); - + sb.append("

Data Mangler

\n"); sb.append("
");
 		sb.append("Mangler kommune/vejkode: ").append(antalUdenKommunekode).append("\n");
+		sb.append("Mangler gadeid: ").append(antalUdenGadeid).append("\n");
 		sb.append("Mangler DBK bane: ").append(antalUdenDBKBane).append("\n");
 		sb.append("Mangler latitude/longitude: ").append(antalUdenLatitude).append("\n");
 		sb.append("
"); - - + + sb.append("

Ændrings oversigt

\n"); sb.append(""); - + sb.append(""); sb.append(""); sb.append(""); sb.append(""); sb.append(""); + sb.append("
 MandagTirsdagOnsdagTorsdagFredagLørdagSøndag
Oprettet:").append(total.man.created).append("").append(total.tir.created).append("").append(total.ons.created).append("").append(total.tor.created).append("").append(total.fre.created).append("").append(total.lor.created).append("").append(total.son.created).append("
Åbnet:").append(total.man.open).append("").append(total.tir.open).append("").append(total.ons.open).append("").append(total.tor.open).append("").append(total.fre.open).append("").append(total.lor.open).append("").append(total.son.open).append("
Ændret:").append(total.man.modified).append("").append(total.tir.modified).append("").append(total.ons.modified).append("").append(total.tor.modified).append("").append(total.fre.modified).append("").append(total.lor.modified).append("").append(total.son.modified).append("
Lukket:").append(total.man.closed).append("").append(total.tir.closed).append("").append(total.ons.closed).append("").append(total.tor.closed).append("").append(total.fre.closed).append("").append(total.lor.closed).append("").append(total.son.closed).append("
"); + + sb.append("
"); + sb.append("

Nye/Ukendte gader

"); + sb.append(""); + sb.append(""); + for( Entry unknownStreet : addrManager.getUnknownStreets().entrySet() ) { + sb.append(""); + } + sb.append("
GadeidVejnavn
").append(unknownStreet.getKey()).append("").append(unknownStreet.getValue()).append("
"); + - - sb.append("
\n"); - + return sb.toString(); } }