/[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 2994 - (hide annotations) (download)
Tue Mar 29 20:36:40 2016 UTC (8 years, 2 months ago) by torben
Original Path: dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/fileupload/AddressTask.java
File size: 3127 byte(s)
Release some of the tasks resources early for GC
1 torben 2947 package dk.daoas.adressevedligehold.fileupload;
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     if (super.abort) {
59     break;
60     }
61    
62     addrManager.visit(entry);
63     ugedage.merge(entry.ugedage);
64     entryCount++;
65     }
66    
67     addrManager.closeUnvisitedAddresses( source.getDistributor(), ugedage );
68    
69    
70    
71     if (writeBack) {
72     addrManager.writeBackChanges();
73     } else {
74     addrManager.dumpChanged();
75     }
76    
77 torben 2924 AddressReport report = new AddressReport(addrManager, entryCount, ugedage, source, timer, writeBack, addrManager.getDuplicateCount() );
78 torben 2838 report.sendRapport();
79    
80    
81 torben 2897 if (writeBack) {
82 torben 2993 manager.submitTask( new ReloadTask("Indlaesning/" + source.getDistributor()) );
83 torben 2954
84    
85     if (source.calculateDistances()) {
86     Task tsk = new AfstandAndenRuteTask(source.getDistributor(), AfstandAndenRuteTask.INCREMENTAL);
87     manager.submitTask( tsk );
88     }
89 torben 2897 }
90 torben 2838
91 torben 2954
92 torben 2896
93 torben 2856 } catch(Exception e) {
94    
95     String subject = "Error loading data for " + source.getDistributor();
96     String body = "File: " + source.getFilename();
97     body += "<br><br>";
98     body += "Exception:<br>";
99     body += ExceptionUtils.getStackTrace(e);
100 torben 2953 MailSender.sendMail(subject, body);
101 torben 2856
102     throw e; //rethrow exception
103 torben 2844 } finally {
104    
105     try {
106 torben 2903 logger.info("Cleaning up resources");
107 torben 2844 source.close();
108 torben 2994 source = null; //and release it for garbace collection
109 torben 2844 } catch (Exception e) {
110 torben 2903 logger.warning("Error during cleanup: ", e );
111 torben 2844 }
112 torben 2838 }
113 torben 2844
114 torben 2838 }
115    
116     @Override
117     public String getDescription() {
118 torben 2994 return "AddressTask " + distributor;
119 torben 2838 }
120    
121     @Override
122 torben 2891 public double getPercentCompleted() {
123     return -1;
124 torben 2838 }
125    
126     @Override
127     public String getDetail() {
128 torben 2994 return filename;
129 torben 2838 }
130    
131     }

  ViewVC Help
Powered by ViewVC 1.1.20