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
Revision: 1.27
Committed: Wed Feb 5 16:43:45 2003 UTC (21 years, 3 months ago) by tdb
Branch: MAIN
Changes since 1.26: +4 -4 lines
Log Message:
Changed the server to use the external util package. Quite a minor change,
but does affect a lot of files.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
3 * http://www.i-scream.org.uk
4 * Copyright (C) 2000-2002 i-scream
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 //---PACKAGE DECLARATION---
22 package uk.org.iscream.cms.server.client.alerters;
23
24 //---IMPORTS---
25 import uk.org.iscream.cms.server.client.*;
26 import uk.org.iscream.cms.server.core.*;
27 import uk.org.iscream.cms.util.*;
28 import uk.org.iscream.cms.server.componentmanager.*;
29 import java.io.*;
30 import java.util.StringTokenizer;
31
32
33 /**
34 * This alerter delivers alerts using e-mail.
35 *
36 * @author $Author: tdb $
37 * @version $Id: EMail__Alerter.java,v 1.26 2002/05/21 16:47:16 tdb Exp $
38 */
39 public class EMail__Alerter extends AlerterSkeleton {
40
41 //---FINAL ATTRIBUTES---
42
43 /**
44 * The current CVS revision of this class
45 */
46 public final String REVISION = "$Revision: 1.26 $";
47
48 /**
49 * A description of this alerter
50 */
51 public final String DESC = "Sends alerts over e-mail.";
52
53 //---STATIC METHODS---
54
55 //---CONSTRUCTORS---
56
57 //---PUBLIC METHODS---
58
59 /**
60 * Implements the abstract method from the skeleton class.
61 * This method will attempt to send an alert
62 * message using the configured email configuration.
63 *
64 * @param alert the alert to send
65 */
66 public void sendAlert(Alert alert) {
67 // get the subject and replace fields
68 String subject;
69 try {
70 subject = _cp.getProperty(_name, "Alerter.EMail.subject");
71 } catch (PropertyNotFoundException e) {
72 subject = NOT_CONFIGURED;
73 _logger.write(toString(), Logger.WARNING, "Alerter.EMail.subject value unavailable using default of " + subject);
74 }
75 subject = processAlertMessage(subject, alert);
76
77 // get the message body and replace fields
78 String message;
79 try {
80 message = _cp.getProperty(_name, "Alerter.EMail.message");
81 } catch (PropertyNotFoundException e) {
82 message = NOT_CONFIGURED;
83 _logger.write(toString(), Logger.WARNING, "Alerter.EMail.message value unavailable using default of " + message);
84 }
85 message = processAlertMessage(message, alert);
86
87 // attempt to send the actual message
88 try {
89 // create SMTP message
90 Smtp smtp = new Smtp(_cp.getProperty(_name, "Alerter.EMail.smtpServer"));
91 // set our sender
92 smtp.setSender(_cp.getProperty(_name, "Alerter.EMail.sender"));
93
94 // list of destination addresses
95 String destList = _cp.getProperty("Host."+alert.getSource(), "Alerter.EMail.destList");
96
97 // set the to: list
98 StringTokenizer st = new StringTokenizer(destList, ";");
99 while (st.hasMoreTokens()) {
100 smtp.setTo(st.nextToken());
101 }
102
103 // prepare to print the message
104 PrintWriter out = smtp.getOutputStream();
105 out.println("Subject: "+subject+"\n");
106
107 // send the message
108 out.println(message);
109 smtp.sendMessage();
110 smtp.close();
111 _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ Alert.alertLevels[alert.getLevel()] + " level");
112 }
113 catch(IOException e) {
114 _logger.write(toString(), Logger.ERROR, "Error whilst sending message: "+e);
115 }
116 catch(PropertyNotFoundException e) {
117 _logger.write(toString(), Logger.ERROR, "Error obtaining essential configuration: "+e);
118 }
119 }
120
121 /**
122 * Overrides the {@link java.lang.Object#toString() Object.toString()}
123 * method to provide clean logging (every class should have this).
124 *
125 * This uses the uk.org.iscream.cms.util.NameFormat class
126 * to format the toString()
127 *
128 * @return the name of this class and its CVS revision
129 */
130 public String toString() {
131 return FormatName.getName(
132 _name,
133 getClass().getName(),
134 REVISION);
135 }
136
137 /**
138 * Return the String representation of what the alerter does
139 *
140 * @return the description
141 */
142 public String getDescription(){
143 return DESC;
144 }
145
146 //---PRIVATE METHODS---
147
148 //---ACCESSOR/MUTATOR METHODS---
149
150 /**
151 * Returns the "friendly" name of this class. This
152 * is simply an accessor for _name, required due to
153 * inheritance issues with extending AlerterSkeleton.
154 *
155 * @return the friendly name
156 */
157 protected String getFName() {
158 return _name;
159 }
160
161 //---ATTRIBUTES---
162
163 /**
164 * This is the friendly identifier of the
165 * component this class is running in.
166 * eg, a Filter may be called "filter1",
167 * If this class does not have an owning
168 * component, a name from the configuration
169 * can be placed here. This name could also
170 * be changed to null for utility classes.
171 */
172 protected String _name = "EMail";
173
174 //---STATIC ATTRIBUTES---
175
176 }