ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/EMail__Alerter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/EMail__Alerter.java (file contents):
Revision 1.11 by tdb, Mon Mar 5 02:09:49 2001 UTC vs.
Revision 1.21 by tdb, Fri Mar 23 00:05:24 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.ac.ukc.iscream.client.alerters;
2 > package uk.org.iscream.client.alerters;
3  
4   //---IMPORTS---
5 < import uk.ac.ukc.iscream.client.*;
6 < import uk.ac.ukc.iscream.core.*;
7 < import uk.ac.ukc.iscream.util.*;
8 < import uk.ac.ukc.iscream.componentmanager.*;
9 <
10 < import java.util.*;
5 > import uk.org.iscream.client.*;
6 > import uk.org.iscream.core.*;
7 > import uk.org.iscream.util.*;
8 > import uk.org.iscream.componentmanager.*;
9   import java.io.*;
10 + import java.util.StringTokenizer;
11  
12 +
13   /**
14   * This alerter delivers alerts using e-mail.
15   *
16   * @author  $Author$
17   * @version $Id$
18   */
19 < public class EMail__Alerter implements PluginAlerter {
19 > public class EMail__Alerter extends AlerterSkeleton {
20  
21   //---FINAL ATTRIBUTES---
22  
# Line 27 | Line 27 | public class EMail__Alerter implements PluginAlerter {
27      
28      public final String DESC = "Sends alerts over e-mail.";
29      
30 +    public final String NOT_CONFIGURED = "<NOT CONFIGURED>";
31 +    
32   //---STATIC METHODS---
33  
34   //---CONSTRUCTORS---
35  
34    public EMail__Alerter() {      
35        _logger.write(toString(), Logger.SYSINIT, "IRC Alerter started");
36    }
37
36   //---PUBLIC METHODS---
37  
38      public void sendAlert(Alert alert) {
39 <        ConfigurationProxy cp = ConfigurationProxy.getInstance();
40 <        String levelName = cp.getProperty(_name, "Alerter.EMail.level");
41 <        int level = StringUtils.getStringPos(levelName, Alert.alertLevels);
42 <        // only send if it's equal (or above) our level
43 <        if(alert.getLevel() >= level) {
44 <            String alertType = Alert.alertLevels[alert.getLevel()];
45 <            String thresholdType = Alert.thresholdLevels[alert.getThreshold()];
46 <            // sort out the subject
47 <            String subject = cp.getProperty(_name, "Alerter.EMail.subject");
48 <            subject = StringUtils.replaceText(subject, "%level%", alertType);
49 <            subject = StringUtils.replaceText(subject, "%threshold%", thresholdType);
50 <            subject = StringUtils.replaceText(subject, "%source%", alert.getSource());
51 <            subject = StringUtils.replaceText(subject, "%value%", alert.getValue());
52 <            subject = StringUtils.replaceText(subject, "%thresholdValue%", alert.getThresholdValue());
53 <            subject = StringUtils.replaceText(subject, "%attributeName%", alert.getAttributeName());
54 <            subject = StringUtils.replaceText(subject, "%timeTillNextAlert%",  getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
55 <                        
56 <            // sort out the message body
57 <            String message = cp.getProperty(_name, "Alerter.EMail.message");
58 <            message = StringUtils.replaceText(message, "%level%", alertType);
59 <            message = StringUtils.replaceText(message, "%threshold%", thresholdType);
60 <            message = StringUtils.replaceText(message, "%source%", alert.getSource());
61 <            message = StringUtils.replaceText(message, "%value%", alert.getValue());
62 <            message = StringUtils.replaceText(message, "%thresholdValue%", alert.getThresholdValue());
63 <            message = StringUtils.replaceText(message, "%attributeName%", alert.getAttributeName());
64 <            message = StringUtils.replaceText(message, "%timeTillNextAlert%",  getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
65 <                        
66 <            try {
67 <                // create SMTP message
68 <                Smtp smtp = new Smtp(cp.getProperty(_name, "Alerter.EMail.smtpServer"));
69 <                // set our sender
70 <                smtp.setSender(cp.getProperty(_name, "Alerter.EMail.sender"));
71 <                
72 <                // get the default destination list
75 <                String destList = cp.getProperty(_name, "Alerter.EMail.defaultDestList");
76 <                // check if the source we're alerting about has a specific destination
77 <                String sourceDestList = cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
78 <                if(sourceDestList != null) {
79 <                    // if there is a source destination list, use it
80 <                    destList = sourceDestList;
81 <                }
82 <                
83 <                // set the to: list
84 <                StringTokenizer st = new StringTokenizer(destList, ";");
85 <                while (st.hasMoreTokens()) {
86 <                    smtp.setTo(st.nextToken());
87 <                }
88 <    
89 <                // prepare to print the message            
90 <                PrintWriter out = smtp.getOutputStream();
91 <                out.println("Subject: "+subject);
92 <                out.println();
93 <                
94 <                // send the message
95 <                out.println(message);
96 <                smtp.sendMessage();
97 <                smtp.close();
98 <                _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
39 >        // get the subject and replace fields
40 >        String subject;
41 >        try {
42 >            subject = _cp.getProperty(_name, "Alerter.EMail.subject");
43 >        } catch (PropertyNotFoundException e) {
44 >            subject = NOT_CONFIGURED;
45 >            _logger.write(toString(), Logger.WARNING, "Alerter.EMail.subject value unavailable using default of " + subject);
46 >        }
47 >        subject = processAlertMessage(subject, alert);
48 >                    
49 >        // get the message body and replace fields
50 >        String message;
51 >        try {
52 >            message = _cp.getProperty(_name, "Alerter.EMail.message");
53 >        } catch (PropertyNotFoundException e) {
54 >            message = NOT_CONFIGURED;
55 >            _logger.write(toString(), Logger.WARNING, "Alerter.EMail.message value unavailable using default of " + message);
56 >        }
57 >        message = processAlertMessage(message, alert);
58 >        
59 >        // attempt to send the actual message
60 >        try {
61 >            // create SMTP message
62 >            Smtp smtp = new Smtp(_cp.getProperty(_name, "Alerter.EMail.smtpServer"));
63 >            // set our sender
64 >            smtp.setSender(_cp.getProperty(_name, "Alerter.EMail.sender"));
65 >            
66 >            // list of destination addresses
67 >            String destList = _cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
68 >            
69 >            // set the to: list
70 >            StringTokenizer st = new StringTokenizer(destList, ";");
71 >            while (st.hasMoreTokens()) {
72 >                smtp.setTo(st.nextToken());
73              }
74 <            catch(IOException e) {
75 <                _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
76 <            }
74 >
75 >            // prepare to print the message            
76 >            PrintWriter out = smtp.getOutputStream();
77 >            out.println("Subject: "+subject+"\n");
78 >            
79 >            // send the message
80 >            out.println(message);
81 >            smtp.sendMessage();
82 >            smtp.close();
83 >            _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ Alert.alertLevels[alert.getLevel()] + " level");
84          }
85 +        catch(IOException e) {
86 +            _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
87 +        }
88 +        catch(PropertyNotFoundException e) {
89 +            _logger.write(toString(), Logger.ERROR, "Error obtaining essential configuration: "+e);
90 +        }
91      }
92  
93      /**
94       * Overrides the {@link java.lang.Object#toString() Object.toString()}
95       * method to provide clean logging (every class should have this).
96       *
97 <     * This uses the uk.ac.ukc.iscream.util.NameFormat class
97 >     * This uses the uk.org.iscream.util.NameFormat class
98       * to format the toString()
99       *
100       * @return the name of this class and its CVS revision
# Line 120 | Line 107 | public class EMail__Alerter implements PluginAlerter {
107      }
108  
109      /**
110 <     * return the String representation of what the filter does
110 >     * return the String representation of what the alerter does
111       */
112      public String getDescription(){
113          return DESC;
114      }
115  
116   //---PRIVATE METHODS---
130
131    private String getTimeString(long time) {
132        String timeString = null;
133        if (time >= 60) {
134            timeString = (time / 60) + " minutes";
135        } else if (time >= 3600) {
136            timeString = ((time/60) / 60) + " hours";
137        } else {
138            timeString = time + " seconds";
139        }
140        return timeString;
141    }
117      
118   //---ACCESSOR/MUTATOR METHODS---
119  
# Line 153 | Line 128 | public class EMail__Alerter implements PluginAlerter {
128       * can be placed here.  This name could also
129       * be changed to null for utility classes.
130       */
131 <    private String _name = "EMail Alert";
131 >    protected String _name = "EMail";
132  
133      /**
134       * This holds a reference to the
135       * system logger that is being used.
136       */
137      private Logger _logger = ReferenceManager.getInstance().getLogger();
138 <
138 >    
139   //---STATIC ATTRIBUTES---
140  
141   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines