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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3113 - (hide annotations) (download)
Tue Sep 20 08:17:12 2016 UTC (7 years, 8 months ago) by torben
File size: 3470 byte(s)
Only trigger reload if there were any changes
1 torben 3022 package dk.daoas.adressevedligehold.coveragefileupload;
2 torben 2838
3 torben 2856 import org.apache.commons.lang3.exception.ExceptionUtils;
4    
5 torben 2953 import dk.daoas.adressevedligehold.MailSender;
6 torben 2993 import dk.daoas.adressevedligehold.ReloadTask;
7 torben 2954 import dk.daoas.adressevedligehold.afstandandenrute.AfstandAndenRuteTask;
8 torben 2838 import dk.daoas.adressevedligehold.tasks.Task;
9 torben 2903 import dk.daoas.adressevedligehold.tasks.TaskLogger;
10 torben 2838 import dk.daoas.adressevedligehold.util.TimingHelper;
11    
12 torben 2840 /*
13     *
14     */
15    
16 torben 2838 public class AddressTask extends Task {
17    
18 torben 2903 private TaskLogger logger = TaskLogger.getInstance();
19    
20 torben 2994 private String distributor;
21     private String filename;
22    
23 torben 2838 AddressSource source;
24     boolean writeBack;
25    
26     public AddressTask(AddressSource source, boolean writeBack) {
27    
28     this.source = source;
29     this.writeBack = writeBack;
30 torben 2994
31     this.distributor = source.getDistributor();
32     this.filename = source.getFilename();
33 torben 2838 }
34 torben 2844
35    
36 torben 2838
37     @Override
38 torben 2844 protected void taskRun() throws Exception {
39 torben 2838
40     try {
41     TimingHelper timer = new TimingHelper();
42 torben 2844
43 torben 2903 logger.info("Validating Source");
44 torben 2844 source.validate();
45    
46 torben 2903 logger.info("Reading data from DB");
47 torben 2838 AddressManager addrManager = new AddressManager();
48    
49 torben 2903 logger.info("Data is ready");
50 torben 2838
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 torben 3013 if (isAborted()) {
59 torben 2838 break;
60     }
61    
62     addrManager.visit(entry);
63     ugedage.merge(entry.ugedage);
64     entryCount++;
65     }
66    
67 torben 3084 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 torben 2838
76    
77 torben 3113 int writeCount = 0;
78 torben 2838 if (writeBack) {
79 torben 3113 writeCount = addrManager.writeBackChanges();
80 torben 2838 } else {
81     addrManager.dumpChanged();
82     }
83    
84 torben 2924 AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() );
85 torben 3084 report.sendRapport(false);
86 torben 2838
87    
88 torben 3113 if (writeBack && writeCount > 0) {
89 torben 2993 manager.submitTask( new ReloadTask("Indlaesning/" + source.getDistributor()) );
90 torben 2954
91    
92     if (source.calculateDistances()) {
93     Task tsk = new AfstandAndenRuteTask(source.getDistributor(), AfstandAndenRuteTask.INCREMENTAL);
94     manager.submitTask( tsk );
95     }
96 torben 2897 }
97 torben 2838
98 torben 2954
99 torben 2896
100 torben 2856 } 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 torben 2953 MailSender.sendMail(subject, body);
108 torben 2856
109     throw e; //rethrow exception
110 torben 2844 } finally {
111    
112     try {
113 torben 2903 logger.info("Cleaning up resources");
114 torben 2844 source.close();
115 torben 2994 source = null; //and release it for garbace collection
116 torben 2844 } catch (Exception e) {
117 torben 2903 logger.warning("Error during cleanup: ", e );
118 torben 2844 }
119 torben 2838 }
120 torben 2844
121 torben 2838 }
122    
123     @Override
124     public String getDescription() {
125 torben 2994 return "AddressTask " + distributor;
126 torben 2838 }
127    
128     @Override
129 torben 2891 public double getPercentCompleted() {
130     return -1;
131 torben 2838 }
132    
133     @Override
134     public String getDetail() {
135 torben 2994 return filename;
136 torben 2838 }
137    
138     }

  ViewVC Help
Powered by ViewVC 1.1.20