/[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 2993 - (show annotations) (download)
Tue Mar 29 19:49:38 2016 UTC (8 years, 1 month ago) by torben
File size: 2939 byte(s)
Implement a reload task that triggers the reload and then just blocks the reload queue
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.ReloadTask;
7 import dk.daoas.adressevedligehold.afstandandenrute.AfstandAndenRuteTask;
8 import dk.daoas.adressevedligehold.tasks.Task;
9 import dk.daoas.adressevedligehold.tasks.TaskLogger;
10 import dk.daoas.adressevedligehold.util.TimingHelper;
11
12 /*
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 manager.submitTask( new ReloadTask("Indlaesning/" + source.getDistributor()) );
77
78
79 if (source.calculateDistances()) {
80 Task tsk = new AfstandAndenRuteTask(source.getDistributor(), AfstandAndenRuteTask.INCREMENTAL);
81 manager.submitTask( tsk );
82 }
83 }
84
85
86
87 } catch(Exception e) {
88
89 String subject = "Error loading data for " + source.getDistributor();
90 String body = "File: " + source.getFilename();
91 body += "<br><br>";
92 body += "Exception:<br>";
93 body += ExceptionUtils.getStackTrace(e);
94 MailSender.sendMail(subject, body);
95
96 throw e; //rethrow exception
97 } finally {
98
99 try {
100 logger.info("Cleaning up resources");
101 source.close();
102 } catch (Exception e) {
103 logger.warning("Error during cleanup: ", e );
104 }
105 }
106
107 }
108
109 @Override
110 public String getDescription() {
111 return "AddressTask " + source.getDistributor();
112 }
113
114 @Override
115 public double getPercentCompleted() {
116 return -1;
117 }
118
119 @Override
120 public String getDetail() {
121 return source.getFilename();
122 }
123
124 }

  ViewVC Help
Powered by ViewVC 1.1.20