--- dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/AddressTask.java 2016/01/25 10:25:22 2840 +++ dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressTask.java 2016/02/16 13:15:25 2954 @@ -1,15 +1,22 @@ -package dk.daoas.adressevedligehold; +package dk.daoas.adressevedligehold.fileupload; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import dk.daoas.adressevedligehold.MailSender; +import dk.daoas.adressevedligehold.ReloadHelper; +import dk.daoas.adressevedligehold.afstandandenrute.AfstandAndenRuteTask; import dk.daoas.adressevedligehold.tasks.Task; +import dk.daoas.adressevedligehold.tasks.TaskLogger; import dk.daoas.adressevedligehold.util.TimingHelper; /* - * TODO: trigger indlæsning * */ public class AddressTask extends Task { + private TaskLogger logger = TaskLogger.getInstance(); + AddressSource source; boolean writeBack; @@ -18,16 +25,22 @@ this.source = source; this.writeBack = writeBack; } + + @Override - protected void taskRun() { + protected void taskRun() throws Exception { try { TimingHelper timer = new TimingHelper(); - System.out.println("Reading data from DB"); + + logger.info("Validating Source"); + source.validate(); + + logger.info("Reading data from DB"); AddressManager addrManager = new AddressManager(); - System.out.println("Data is ready"); + logger.info("Data is ready"); EntryUgedage ugedage = new EntryUgedage(); //saml op på hvilke ugedage der er blevet behandlet @@ -55,22 +68,42 @@ addrManager.dumpChanged(); } - AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack); + AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() ); report.sendRapport(); + if (writeBack) { + ReloadHelper.triggerReload( "Indlaesning/" + source.getDistributor() ); + + + if (source.calculateDistances()) { + Task tsk = new AfstandAndenRuteTask(source.getDistributor(), AfstandAndenRuteTask.INCREMENTAL); + manager.submitTask( tsk ); + } + } + + + + } catch(Exception e) { - } catch (Exception e) { - e.printStackTrace(); - } - - - try { - System.out.println("Cleaning up resources"); - source.close(); - } catch (Exception e) { - System.out.println("Error during cleanup: " + e.getMessage() ); + String subject = "Error loading data for " + source.getDistributor(); + String body = "File: " + source.getFilename(); + body += "

"; + body += "Exception:
"; + body += ExceptionUtils.getStackTrace(e); + MailSender.sendMail(subject, body); + + throw e; //rethrow exception + } finally { + + try { + logger.info("Cleaning up resources"); + source.close(); + } catch (Exception e) { + logger.warning("Error during cleanup: ", e ); + } } + } @Override @@ -79,8 +112,8 @@ } @Override - public short getPercentCompleted() { - return 0; + public double getPercentCompleted() { + return -1; } @Override