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/IRC__Alerter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/alerters/IRC__Alerter.java (file contents):
Revision 1.18 by tdb, Thu Mar 8 13:43:54 2001 UTC vs.
Revision 1.25 by ajm, Fri Mar 23 01:09:51 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 <
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.net.*;
11   import java.util.*;
12 < import java.text.*;
12 > import java.text.DateFormat;
13  
14   /**
15   * This Alert sends an IRC message.
# Line 21 | Line 20 | import java.text.*;
20   * @author  $Author$
21   * @version $Id$
22   */
23 < public class IRC__Alerter implements PluginAlerter {
23 > public class IRC__Alerter extends AlerterSkeleton {
24  
25   //---FINAL ATTRIBUTES---
26  
# Line 40 | Line 39 | public class IRC__Alerter implements PluginAlerter {
39       */
40      public final int DEFAULT_RECONNECT_DELAY = 30;
41      
43    public final String DEFAULT_LEVEL = Alert.alertLevels[0];
44    
45    public final String NOT_CONFIGURED = "<NOT CONFIGURED>";
46    
42   //---STATIC METHODS---
43  
44   //---CONSTRUCTORS---
45  
46      public IRC__Alerter() {
47 <                        
47 >        super();
48          // connect to the IRC server
49          _ircbot = new IRCBot();
50 +        // set it's name and start it
51 +        _ircbot.setName("client.IRC__Alerter$IRCBot");
52          _ircbot.start();
53          _startTime = System.currentTimeMillis();
57        
54          _logger.write(toString(), Logger.SYSINIT, "IRC Alerter started");
55      }
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 over the IRC channel.
63 +     *
64 +     * @param alert the alert to send
65 +     */
66      public void sendAlert(Alert alert) {
67          // only send alerts if we're active
68          if(_active) {
69 <            ConfigurationProxy cp = ConfigurationProxy.getInstance();
70 <            
71 <            String levelName;
69 >            // sort out the message      
70 >            String alertType = Alert.alertLevels[alert.getLevel()];        
71 >            String message;
72              try {
73 <                levelName = cp.getProperty(_name, "Alerter.IRC.level");
73 >                message = _cp.getProperty(_name, "Alerter.IRC.message");
74              } catch (PropertyNotFoundException e) {
75 <                levelName = DEFAULT_LEVEL;
76 <                _logger.write(toString(), Logger.WARNING, "Alerter.IRC.level value unavailable using default of " + levelName);
75 >                message = NOT_CONFIGURED;
76 >                _logger.write(toString(), Logger.WARNING, "Alerter.IRC.message value unavailable using default of " + message);
77              }
78 <            int level = StringUtils.getStringPos(levelName, Alert.alertLevels);
79 <            // only send if it's equal (or above) our level
80 <            if(((alert.getLevel() == 0) && (alert.getLastLevel() >= level)) || (alert.getLevel() >= level)) {
81 <                String alertType = Alert.alertLevels[alert.getLevel()];
82 <                String thresholdType = Alert.thresholdLevels[alert.getThreshold()];
83 <                String timeFirstSince = DateUtils.formatTime(System.currentTimeMillis() - alert.getInitialAlertTime(), "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs");
84 <                String timeFirstOccured = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date(alert.getInitialAlertTime()));
85 <                // sort out the message              
86 <                String message;
84 <                try {
85 <                    message = cp.getProperty(_name, "Alerter.IRC.message");
86 <                } catch (PropertyNotFoundException e) {
87 <                    message = NOT_CONFIGURED;
88 <                    _logger.write(toString(), Logger.WARNING, "Alerter.IRC.message value unavailable using default of " + message);
89 <                }
90 <                
91 <                message = StringUtils.replaceText(message, "%level%", alertType);
92 <                message = StringUtils.replaceText(message, "%threshold%", thresholdType);
93 <                message = StringUtils.replaceText(message, "%source%", alert.getSource());
94 <                message = StringUtils.replaceText(message, "%value%", alert.getValue());
95 <                message = StringUtils.replaceText(message, "%thresholdValue%", alert.getThresholdValue());
96 <                message = StringUtils.replaceText(message, "%attributeName%", alert.getAttributeName());
97 <                message = StringUtils.replaceText(message, "%timeTillNextAlert%",  getTimeString(Long.parseLong(alert.getTimeTillNextAlert())));
98 <                message = StringUtils.replaceText(message, "%timeSinceFirstAlert%", timeFirstSince);
99 <                message = StringUtils.replaceText(message, "%timeOfFirstAlert%", timeFirstOccured);
100 <                
101 <                // send the message
102 <                _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
103 <                _ircbot.sendMsg(message);
104 <                _lastAlert = message;
105 <                _lastAlertTime = System.currentTimeMillis();
106 <                _alertCount ++;
107 <            }
108 <        }
109 <        else {
78 >            message = processAlertMessage(message, alert);                
79 >            
80 >            // send the message
81 >            _logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level");
82 >            _ircbot.sendMsg(message);
83 >            _lastAlert = message;
84 >            _lastAlertTime = System.currentTimeMillis();
85 >            _alertCount ++;
86 >        } else {
87              _ignoredCount ++;
88          }
89      }
# Line 115 | Line 92 | public class IRC__Alerter implements PluginAlerter {
92       * Overrides the {@link java.lang.Object#toString() Object.toString()}
93       * method to provide clean logging (every class should have this).
94       *
95 <     * This uses the uk.ac.ukc.iscream.util.NameFormat class
95 >     * This uses the uk.org.iscream.util.NameFormat class
96       * to format the toString()
97       *
98       * @return the name of this class and its CVS revision
# Line 127 | Line 104 | public class IRC__Alerter implements PluginAlerter {
104              REVISION);
105      }
106  
107 <    /**
108 <     * return the String representation of what the filter does
107 >    /**
108 >     * Return the String representation of what the alerter does
109 >     *
110 >     * @return the description
111       */
112      public String getDescription(){
113          return DESC;
# Line 136 | Line 115 | public class IRC__Alerter implements PluginAlerter {
115  
116   //---PRIVATE METHODS---
117  
139    private String getTimeString(long time) {
140        String timeString = null;
141        if (time >= 60) {
142            timeString = (time / 60) + " minute(s)";
143        } else if (time >= 3600) {
144            timeString = ((time/60) / 60) + " hour(s)";
145        } else {
146            timeString = time + " second(s)";
147        }
148        return timeString;
149    }
150
118   //---ACCESSOR/MUTATOR METHODS---
119  
120   //---ATTRIBUTES---
# Line 196 | Line 163 | public class IRC__Alerter implements PluginAlerter {
163       * can be placed here.  This name could also
164       * be changed to null for utility classes.
165       */
166 <    private String _name = "IRC Alert";
166 >    private String _name = "IRC";
167  
201    /**
202     * This holds a reference to the
203     * system logger that is being used.
204     */
205    private Logger _logger = ReferenceManager.getInstance().getLogger();
206
168   //---STATIC ATTRIBUTES---
169  
170   //---INNER CLASSES---
# Line 442 | Line 403 | public class IRC__Alerter implements PluginAlerter {
403           * Overrides the {@link java.lang.Object#toString() Object.toString()}
404           * method to provide clean logging (every class should have this).
405           *
406 <         * This uses the uk.ac.ukc.iscream.util.NameFormat class
406 >         * This uses the uk.org.iscream.util.NameFormat class
407           * to format the toString()
408           *
409           * @return the name of this class and its CVS revision
# Line 529 | Line 490 | public class IRC__Alerter implements PluginAlerter {
490                          endOfChan = newChan.length();
491                      }
492                      newChan = newChan.substring(0, endOfChan);
493 <                    sendMsg(getMsgSender(line)+", okay, I'm off to "+newChan);
494 <                    _socketOut.println("PART "+_channel);
495 <                    _socketOut.println("JOIN "+newChan);
496 <                    _channel = newChan;
493 >                    if(newChan.equals(_channel)) {
494 >                        sendMsg(getMsgSender(line)+", I'm already on "+newChan+"!");
495 >                    } else {
496 >                        sendMsg(getMsgSender(line)+", okay, I'm off to "+newChan);
497 >                        _socketOut.println("PART "+_channel);
498 >                        _socketOut.println("JOIN "+newChan);
499 >                        _channel = newChan;
500 >                    }
501                  }
502                  else if(message.indexOf(nickChangeCommand)!=-1) {
503                      String nickChangeCmd = nickChangeCommand;
# Line 659 | Line 624 | public class IRC__Alerter implements PluginAlerter {
624           * A reminder of our current nickname...
625           */
626          private String _nickname;
627 +        
628 +        /**
629 +         * This holds a reference to the
630 +         * system logger that is being used.
631 +         */
632 +        protected Logger _logger = ReferenceManager.getInstance().getLogger();
633          
634      }
635  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines