package dk.daoas.adressevedligehold; import dk.daoas.adressevedligehold.tasks.Task; import dk.daoas.adressevedligehold.util.TimingHelper; /* * TODO: trigger indlæsning * */ public class AddressTask extends Task { AddressSource source; boolean writeBack; public AddressTask(AddressSource source, boolean writeBack) { this.source = source; this.writeBack = writeBack; } @Override protected void taskRun() { try { TimingHelper timer = new TimingHelper(); System.out.println("Reading data from DB"); AddressManager addrManager = new AddressManager(); System.out.println("Data is ready"); EntryUgedage ugedage = new EntryUgedage(); //saml op på hvilke ugedage der er blevet behandlet int entryCount = 0; AddressSourceEntry entry; while ( (entry = source.getNextEntry()) != null) { if (super.abort) { break; } addrManager.visit(entry); ugedage.merge(entry.ugedage); entryCount++; } addrManager.closeUnvisitedAddresses( source.getDistributor(), ugedage ); if (writeBack) { addrManager.writeBackChanges(); } else { addrManager.dumpChanged(); } AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack); report.sendRapport(); } 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() ); } } @Override public String getDescription() { return "AddressTask " + source.getDistributor(); } @Override public short getPercentCompleted() { return 0; } @Override public String getDetail() { return source.getFilename(); } }