/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/DataLoader.java
ViewVC logotype

Diff of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/DataLoader.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

dao/DaoAdresseService/src/dk/daoas/daoadresseservice/DataLoader.java revision 2337 by torben, Mon Feb 23 12:30:41 2015 UTC dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/DataLoader.java revision 2769 by torben, Thu Nov 5 08:06:00 2015 UTC
# Line 1  Line 1 
1  package dk.daoas.daoadresseservice;  package dk.daoas.daoadresseservice;
2    
3  import java.sql.SQLException;  import java.sql.SQLException;
4    import java.util.Properties;
5    import java.util.logging.Logger;
6    
7    import javax.mail.Message;
8    import javax.mail.Session;
9    import javax.mail.Transport;
10    import javax.mail.internet.InternetAddress;
11    import javax.mail.internet.MimeMessage;
12  import javax.servlet.ServletContext;  import javax.servlet.ServletContext;
13    
14    import dk.daoas.daoadresseservice.admin.ServiceConfig;
15    import dk.daoas.daoadresseservice.beans.DataStatisticsBean;
16    import dk.daoas.daoadresseservice.db.DatabaseLayerImplementation;
17    
18  public class DataLoader {  public class DataLoader {
19                    
20          boolean isRunning = false;          boolean isRunning = false;
21                    
22            ServiceConfig config;
23            
24          ServletContext ctxt;          ServletContext ctxt;
25          public DataLoader(ServletContext ctxt) {          public DataLoader(ServletContext ctxt,ServiceConfig conf) {
26                  this.ctxt = ctxt;                  this.ctxt = ctxt;
27                    
28                    config = conf;
29          }          }
30                    
31          public void doLoad() {          public void doLoad(String trigger) {
32                  synchronized(this) {                  synchronized(this) {
33                          if (isRunning == false) {                          if (isRunning == false) {
34                                  isRunning = true;                                  isRunning = true;
35                                                                    
36                                  Thread t = new Thread( new DataLoadWorker(this), "SearchDataLoader");                                  Thread t = new Thread( new DataLoadWorker(this, trigger), "SearchDataLoader");
37                                  t.start();                                  t.start();
38                          }                          }
39                  }                  }
# Line 40  public class DataLoader { Line 55  public class DataLoader {
55                    
56                    
57          public static class DataLoadWorker implements Runnable {          public static class DataLoadWorker implements Runnable {
58                    
59                    static final Logger logger = Logger.getLogger(DataLoadWorker.class.getName());
60                    
61                  DataLoader loader;                  DataLoader loader;
62                  public DataLoadWorker(DataLoader ld) {                  String trigger;
63                    public DataLoadWorker(DataLoader ld, String trigger) {
64                          this.loader = ld;                          this.loader = ld;
65                            this.trigger = trigger;
66                  }                  }
67                                    
68    
# Line 51  public class DataLoader { Line 71  public class DataLoader {
71                    
72                                    
73                  try {                  try {
74                          AdressSearch search = new AdressSearch();                          AddressSearch search = new AddressSearch(new DatabaseLayerImplementation(), loader.config);
75                          search.buildSearchStructures();                          search.buildSearchStructures();
76                                                    
77                          AdressSearch oldSearch = (AdressSearch) loader.ctxt.getAttribute("search");                          AddressSearch oldSearch = (AddressSearch) loader.ctxt.getAttribute("search");
78                          loader.ctxt.setAttribute("search", search);                          loader.ctxt.setAttribute("search", search);
79                                                    
80                            if (loader.config.notifyEmail != null && loader.config.notifyEmail.length() > 0) {
81                                    DataStatisticsBean oldStats = oldSearch != null ? oldSearch.getStatistics() : null;
82                                    sendStatusEmail(search.getStatistics(), oldStats);
83                            }
84                            
85                          if (oldSearch != null) {                          if (oldSearch != null) {
86                                  oldSearch.clear();                                  oldSearch.clear();
87                          }                          }
# Line 69  public class DataLoader { Line 94  public class DataLoader {
94                                    
95                  }                  }
96                                    
97                    protected void sendStatusEmail(DataStatisticsBean newStats, DataStatisticsBean oldStats) {
98                            Properties props = new Properties();
99                            props.put("mail.smtp.host", "10.30.1.28");
100                            
101                            try {
102                                            // create some properties and get the default Session
103                                            Session session = Session.getDefaultInstance(props, null);
104                                            session.setDebug(false);
105                                            
106                                            
107                                            String body = "Trigger: " + trigger + "\r\n\r\n";
108                                            body += "New stats:\r\n";
109                                            
110                                            body += "Direkte:      " + newStats.direkteCount + "\r\n";
111                                            body += "Extended:     " + newStats.extendedCount + "\r\n";
112                                            body += "100%:         " + newStats.hundredePctCount + "\r\n";
113                                            body += "Ikke-daekket: " + newStats.ikkeDaekketCount + "\r\n";
114                                            body += "Total:        " + newStats.totalCount + "\r\n";                                        
115                                            body += "Elapsed:      " + newStats.elapsed + "\r\n";
116                                            
117                                            if (oldStats != null) {
118                                                    body += "\r\n";
119                                                    body += "Delta to previous\r\n";
120                                                    body += "Direkte:      " + (newStats.direkteCount-oldStats.direkteCount) + "\r\n";
121                                                    body += "Extended:     " + (newStats.extendedCount-oldStats.extendedCount) + "\r\n";
122                                                    body += "100:          " + (newStats.hundredePctCount-oldStats.hundredePctCount) + "\r\n";
123                                                    body += "Ikke-daekket: " + (newStats.ikkeDaekketCount-oldStats.ikkeDaekketCount) + "\r\n";
124                                                    body += "Total:        " + (newStats.totalCount-oldStats.totalCount) + "\r\n";
125                                                    
126                                            }
127                                                            
128                                            
129                                            // create a message
130                                            
131                                            MimeMessage msg = new MimeMessage(session);
132                                            msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
133                                            
134                                            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(loader.config.notifyEmail) );
135                                            msg.setSubject("DaoAdresseService load, trigger: " + trigger);                  
136                                            msg.setText(body);
137                                            
138                                            Transport.send(msg);
139                            } catch (Exception e) {
140                                    logger.warning("Unable to send CircuitBreaker notification mail " + e );
141                            }
142                    }
143                    
144    
145          }          }
146    

Legend:
Removed from v.2337  
changed lines
  Added in v.2769

  ViewVC Help
Powered by ViewVC 1.1.20