/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressTask.java
ViewVC logotype

Contents of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressTask.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2953 - (show annotations) (download)
Tue Feb 16 13:09:00 2016 UTC (8 years, 3 months ago) by torben
File size: 2710 byte(s)
Make mail configurable
1 package dk.daoas.adressevedligehold.fileupload;
2
3 import org.apache.commons.lang3.exception.ExceptionUtils;
4
5 import dk.daoas.adressevedligehold.MailSender;
6 import dk.daoas.adressevedligehold.ReloadHelper;
7 import dk.daoas.adressevedligehold.tasks.Task;
8 import dk.daoas.adressevedligehold.tasks.TaskLogger;
9 import dk.daoas.adressevedligehold.util.TimingHelper;
10
11 /*
12 * TODO: trigger afstand-anden-rute beregning
13 *
14 */
15
16 public class AddressTask extends Task {
17
18 private TaskLogger logger = TaskLogger.getInstance();
19
20 AddressSource source;
21 boolean writeBack;
22
23 public AddressTask(AddressSource source, boolean writeBack) {
24
25 this.source = source;
26 this.writeBack = writeBack;
27 }
28
29
30
31 @Override
32 protected void taskRun() throws Exception {
33
34 try {
35 TimingHelper timer = new TimingHelper();
36
37 logger.info("Validating Source");
38 source.validate();
39
40 logger.info("Reading data from DB");
41 AddressManager addrManager = new AddressManager();
42
43 logger.info("Data is ready");
44
45 EntryUgedage ugedage = new EntryUgedage(); //saml op på hvilke ugedage der er blevet behandlet
46
47
48 int entryCount = 0;
49
50 AddressSourceEntry entry;
51 while ( (entry = source.getNextEntry()) != null) {
52 if (super.abort) {
53 break;
54 }
55
56 addrManager.visit(entry);
57 ugedage.merge(entry.ugedage);
58 entryCount++;
59 }
60
61 addrManager.closeUnvisitedAddresses( source.getDistributor(), ugedage );
62
63
64
65 if (writeBack) {
66 addrManager.writeBackChanges();
67 } else {
68 addrManager.dumpChanged();
69 }
70
71 AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() );
72 report.sendRapport();
73
74
75 if (writeBack) {
76 ReloadHelper.triggerReload( "Indlaesning/" + source.getDistributor() );
77 }
78
79
80
81 } catch(Exception e) {
82
83 String subject = "Error loading data for " + source.getDistributor();
84 String body = "File: " + source.getFilename();
85 body += "<br><br>";
86 body += "Exception:<br>";
87 body += ExceptionUtils.getStackTrace(e);
88 MailSender.sendMail(subject, body);
89
90 throw e; //rethrow exception
91 } finally {
92
93 try {
94 logger.info("Cleaning up resources");
95 source.close();
96 } catch (Exception e) {
97 logger.warning("Error during cleanup: ", e );
98 }
99 }
100
101 }
102
103 @Override
104 public String getDescription() {
105 return "AddressTask " + source.getDistributor();
106 }
107
108 @Override
109 public double getPercentCompleted() {
110 return -1;
111 }
112
113 @Override
114 public String getDetail() {
115 return source.getFilename();
116 }
117
118 }

  ViewVC Help
Powered by ViewVC 1.1.20