/[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

revision 3044 by torben, Tue Jan 19 17:34:59 2016 UTC revision 3045 by torben, Thu Jun 9 09:53:13 2016 UTC
# Line 17  import dk.daoas.daoadresseservice.beans. Line 17  import dk.daoas.daoadresseservice.beans.
17  import dk.daoas.daoadresseservice.db.DatabaseLayerImplementation;  import dk.daoas.daoadresseservice.db.DatabaseLayerImplementation;
18    
19  public class DataLoader {  public class DataLoader {
20            
21          boolean isRunning = false;          boolean isRunning = false;
22            
23          ServiceConfig config;          ServiceConfig config;
24            
25          ServletContext ctxt;          ServletContext ctxt;
26          public DataLoader(ServletContext ctxt,ServiceConfig conf) {          public DataLoader(ServletContext ctxt,ServiceConfig conf) {
27                  this.ctxt = ctxt;                  this.ctxt = ctxt;
28                    
29                  config = conf;                  config = conf;
30          }          }
31            
32          public void doLoad(String trigger) {          public void doLoad(String trigger) {
33                  synchronized(this) {                  synchronized(this) {
34                          if (isRunning == false) {                          if (isRunning == false) {
35                                  isRunning = true;                                  isRunning = true;
36                                    
37                                  Thread t = new Thread( new DataLoadWorker(this, trigger), "SearchDataLoader");                                  Thread t = new Thread( new DataLoadWorker(this, trigger), "SearchDataLoader");
38                                  t.start();                                  t.start();
39                          }                          }
40                  }                  }
41          }          }
42            
43          public boolean isRunning() {          public boolean isRunning() {
44                  synchronized(this) {                  synchronized(this) {
45                          return isRunning;                                return isRunning;      
46                  }                                }              
47          }          }
48            
49          protected void  setRunningFalse() {          protected void  setRunningFalse() {
50                  synchronized(this) {                  synchronized(this) {
51                          isRunning = false;                          isRunning = false;
52                  }                  }
53          }          }
54    
55            
56            
57            
58          public static class DataLoadWorker implements Runnable {          public static class DataLoadWorker implements Runnable {
59                    
60                  static final Logger logger = Logger.getLogger(DataLoadWorker.class.getName());                  static final Logger logger = Logger.getLogger(DataLoadWorker.class.getName());
61                    
62                  DataLoader loader;                  DataLoader loader;
63                  String trigger;                  String trigger;
64                  public DataLoadWorker(DataLoader ld, String trigger) {                  public DataLoadWorker(DataLoader ld, String trigger) {
65                          this.loader = ld;                          this.loader = ld;
66                          this.trigger = trigger;                          this.trigger = trigger;
67                  }                  }
68                    
69    
70                  @Override                  @Override
71                  public void run() {                  public void run() {
72            
73                    
74                  try {                          try {
75                          AddressSearch search = new AddressSearch(new DatabaseLayerImplementation(), loader.config);                                  AddressSearch search = new AddressSearch(new DatabaseLayerImplementation(), loader.config);
76                          search.buildSearchStructures();                                  search.buildSearchStructures();
77                            
78                          AddressSearch oldSearch = (AddressSearch) loader.ctxt.getAttribute("search");                                  AddressSearch oldSearch = (AddressSearch) loader.ctxt.getAttribute("search");
79                          loader.ctxt.setAttribute("search", search);                                  loader.ctxt.setAttribute("search", search);
80                            
81                          if (loader.config.notifyEmail != null && loader.config.notifyEmail.length() > 0) {                                  if (loader.config.notifyEmail != null && loader.config.notifyEmail.length() > 0) {
82                                  DataStatisticsBean oldStats = oldSearch != null ? oldSearch.getStatistics() : null;                                          DataStatisticsBean oldStats = oldSearch != null ? oldSearch.getStatistics() : null;
83                                  sendStatusEmail(search.getStatistics(), oldStats);                                          sendStatusEmail(search.getStatistics(), oldStats);
84                          }                                  }
85                            
86                          if (oldSearch != null) {                                  if (oldSearch != null) {
87                                  oldSearch.clear();                                          oldSearch.clear();
88                          }                                  }
89                                                    
90                  } catch (SQLException e) {                          } catch (Exception e) {
91                          System.out.println("Error loading data: " + e.getMessage());                                  sendEmail("Load errror", "Error loading data: " + e.getMessage() );
92                  } finally {                                  System.out.println("Error loading data: " + e.getMessage() );
93                          loader.setRunningFalse();                                  e.printStackTrace();
94                  }                                  
95                                            } finally {
96                                    loader.setRunningFalse();
97                            }
98    
99                  }                  }
100                    
101                  protected void sendStatusEmail(DataStatisticsBean newStats, DataStatisticsBean oldStats) {                  protected void sendEmail(String subject, String body) {
102                          Properties props = new Properties();                          Properties props = new Properties();
103                          props.put("mail.smtp.host", "10.30.1.28");                          props.put("mail.smtp.host", "10.30.1.28");
104                            
105                            // create a message
106                          try {                          try {
107                                          // create some properties and get the default Session  
108                                          Session session = Session.getDefaultInstance(props, null);                                  // create some properties and get the default Session
109                                          session.setDebug(false);                                  Session session = Session.getDefaultInstance(props, null);
110                                                                            session.setDebug(false);
111                                            
112                                          String body = "Trigger: " + trigger + "\r\n\r\n";                                  MimeMessage msg = new MimeMessage(session);
113                                          body += "New stats:\r\n";                                  msg.setFrom( new InternetAddress("no-reply@daoas.dk") );
114                                            
115                                          body += "Direkte:      " + newStats.direkteCount + "\r\n";                                  msg.setRecipient(Message.RecipientType.TO, new InternetAddress(loader.config.notifyEmail) );
116                                          body += "Extended:     " + newStats.extendedCount + "\r\n";                                  msg.setSubject(subject);                        
117                                          body += "100%:         " + newStats.hundredePctCount + "\r\n";                                  msg.setText(body);
118                                          body += "Ikke-daekket: " + newStats.ikkeDaekketCount + "\r\n";  
119                                          body += "Total:        " + newStats.totalCount + "\r\n";                                                                          Transport.send(msg);
                                         body += "Elapsed:      " + newStats.elapsed + "\r\n";  
                                           
                                         if (oldStats != null) {  
                                                 body += "\r\n";  
                                                 body += "Delta to previous\r\n";  
                                                 body += "Direkte:      " + (newStats.direkteCount-oldStats.direkteCount) + "\r\n";  
                                                 body += "Extended:     " + (newStats.extendedCount-oldStats.extendedCount) + "\r\n";  
                                                 body += "100:          " + (newStats.hundredePctCount-oldStats.hundredePctCount) + "\r\n";  
                                                 body += "Ikke-daekket: " + (newStats.ikkeDaekketCount-oldStats.ikkeDaekketCount) + "\r\n";  
                                                 body += "Total:        " + (newStats.totalCount-oldStats.totalCount) + "\r\n";  
                                                   
                                         }  
                                                           
                                           
                                         // create a message  
                                           
                                         MimeMessage msg = new MimeMessage(session);  
                                         msg.setFrom( new InternetAddress("no-reply@daoas.dk") );  
                                           
                                         msg.setRecipient(Message.RecipientType.TO, new InternetAddress(loader.config.notifyEmail) );  
                                         msg.setSubject("DaoAdresseService load, trigger: " + trigger);                    
                                         msg.setText(body);  
                                           
                                         Transport.send(msg);  
120                          } catch (MessagingException e) {                          } catch (MessagingException e) {
121                                  logger.warning("Unable to send CircuitBreaker notification mail " + e );                                  logger.warning("Unable to send CircuitBreaker notification mail " + e );
122                          }                          }
123    
124    
125                  }                  }
                   
126    
127                    protected void sendStatusEmail(DataStatisticsBean newStats, DataStatisticsBean oldStats) {
128    
129                            String body = "Trigger: " + trigger + "\r\n\r\n";
130                            body += "New stats:\r\n";
131    
132                            body += "Direkte:      " + newStats.direkteCount + "\r\n";
133                            body += "Extended:     " + newStats.extendedCount + "\r\n";
134                            body += "100%:         " + newStats.hundredePctCount + "\r\n";
135                            body += "Ikke-daekket: " + newStats.ikkeDaekketCount + "\r\n";
136                            body += "Total:        " + newStats.totalCount + "\r\n";                                        
137                            body += "Elapsed:      " + newStats.elapsed + "\r\n";
138    
139                            if (oldStats != null) {
140                                    body += "\r\n";
141                                    body += "Delta to previous\r\n";
142                                    body += "Direkte:      " + (newStats.direkteCount-oldStats.direkteCount) + "\r\n";
143                                    body += "Extended:     " + (newStats.extendedCount-oldStats.extendedCount) + "\r\n";
144                                    body += "100:          " + (newStats.hundredePctCount-oldStats.hundredePctCount) + "\r\n";
145                                    body += "Ikke-daekket: " + (newStats.ikkeDaekketCount-oldStats.ikkeDaekketCount) + "\r\n";
146                                    body += "Total:        " + (newStats.totalCount-oldStats.totalCount) + "\r\n";
147    
148                            }
149    
150                            sendEmail("DaoAdresseService load, trigger: " + trigger, body);
151    
152                    }
153          }          }
154    
155  }  }

Legend:
Removed from v.3044  
changed lines
  Added in v.3045

  ViewVC Help
Powered by ViewVC 1.1.20