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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3113 - (show annotations) (download)
Tue Sep 20 08:17:12 2016 UTC (7 years, 7 months ago) by torben
File size: 3470 byte(s)
Only trigger reload if there were any changes
1 package dk.daoas.adressevedligehold.coveragefileupload;
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 private String distributor;
21 private String filename;
22
23 AddressSource source;
24 boolean writeBack;
25
26 public AddressTask(AddressSource source, boolean writeBack) {
27
28 this.source = source;
29 this.writeBack = writeBack;
30
31 this.distributor = source.getDistributor();
32 this.filename = source.getFilename();
33 }
34
35
36
37 @Override
38 protected void taskRun() throws Exception {
39
40 try {
41 TimingHelper timer = new TimingHelper();
42
43 logger.info("Validating Source");
44 source.validate();
45
46 logger.info("Reading data from DB");
47 AddressManager addrManager = new AddressManager();
48
49 logger.info("Data is ready");
50
51 EntryUgedage ugedage = new EntryUgedage(); //saml op på hvilke ugedage der er blevet behandlet
52
53
54 int entryCount = 0;
55
56 AddressSourceEntry entry;
57 while ( (entry = source.getNextEntry()) != null) {
58 if (isAborted()) {
59 break;
60 }
61
62 addrManager.visit(entry);
63 ugedage.merge(entry.ugedage);
64 entryCount++;
65 }
66
67 int closedCount = addrManager.closeUnvisitedAddresses( source.getDistributor(), ugedage );
68
69 final int maxClosed = 10000;
70 if (closedCount >= maxClosed) {
71 AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() );
72 report.sendRapport(true);
73 return;
74 }
75
76
77 int writeCount = 0;
78 if (writeBack) {
79 writeCount = addrManager.writeBackChanges();
80 } else {
81 addrManager.dumpChanged();
82 }
83
84 AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() );
85 report.sendRapport(false);
86
87
88 if (writeBack && writeCount > 0) {
89 manager.submitTask( new ReloadTask("Indlaesning/" + source.getDistributor()) );
90
91
92 if (source.calculateDistances()) {
93 Task tsk = new AfstandAndenRuteTask(source.getDistributor(), AfstandAndenRuteTask.INCREMENTAL);
94 manager.submitTask( tsk );
95 }
96 }
97
98
99
100 } catch(Exception e) {
101
102 String subject = "Error loading data for " + source.getDistributor();
103 String body = "File: " + source.getFilename();
104 body += "<br><br>";
105 body += "Exception:<br>";
106 body += ExceptionUtils.getStackTrace(e);
107 MailSender.sendMail(subject, body);
108
109 throw e; //rethrow exception
110 } finally {
111
112 try {
113 logger.info("Cleaning up resources");
114 source.close();
115 source = null; //and release it for garbace collection
116 } catch (Exception e) {
117 logger.warning("Error during cleanup: ", e );
118 }
119 }
120
121 }
122
123 @Override
124 public String getDescription() {
125 return "AddressTask " + distributor;
126 }
127
128 @Override
129 public double getPercentCompleted() {
130 return -1;
131 }
132
133 @Override
134 public String getDetail() {
135 return filename;
136 }
137
138 }

  ViewVC Help
Powered by ViewVC 1.1.20