mstover1    2002/08/02 18:50:38

  Modified:    src_1/org/apache/jmeter/visualizers MailerVisualizer.java
  Log:
  Update to the Mailer Visualizer from Wolfram Rittmeyer
  
  Revision  Changes    Path
  1.6       +333 -216  
jakarta-jmeter/src_1/org/apache/jmeter/visualizers/MailerVisualizer.java
  
  Index: MailerVisualizer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/MailerVisualizer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MailerVisualizer.java     29 Apr 2002 17:08:15 -0000      1.5
  +++ MailerVisualizer.java     3 Aug 2002 01:50:38 -0000       1.6
  @@ -58,6 +58,7 @@
   import java.awt.*;
   import java.awt.event.*;
   import javax.swing.*;
  +import javax.swing.border.*;
   import javax.swing.event.*;
   import java.util.*;
   import java.net.*;
  @@ -66,8 +67,9 @@
   //import javax.activation.* ;
   import java.util.Properties;
   import org.apache.jmeter.util.*;
  -import org.apache.jmeter.samplers.SampleResult;
  -import org.apache.jmeter.samplers.Sampler;
  +import org.apache.jmeter.gui.util.*;
  +import org.apache.jmeter.samplers.*;
  +import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
   
   /*
    * TODO :
  @@ -83,170 +85,72 @@
    *  This class implements a visualizer that mails a message when an error
    *  occurs.
    *
  - *@author     <a href="mailto:[EMAIL PROTECTED]";>Stuart Schmukler</a>
  + *@author     <a href="mailto:[EMAIL PROTECTED]";>Stuart Schmukler</a> and <a 
href="mailto:[EMAIL PROTECTED]";>Wolfram Rittmeyer</a>
    *@created    $Date$
    *@version    $Revision$ $Date$
    ***********************************************************/
  -public class MailerVisualizer extends JPanel implements Visualizer, ActionListener
  -{
  +//public class MailerVisualizer extends JPanel implements Visualizer, ActionListener
  +public class MailerVisualizer extends AbstractVisualizer 
  +             implements ActionListener, FocusListener, Clearable {
  +
  +     private String addressie;
  +     private String from;
  +     private String smtpHost;
  +     private String failsubject;
  +     private String successsubject;
  +     private long failureCount = 0;
  +     private long successCount = 0;
  +     private long failureLimit = 2;
  +     private long successLimit = 2;
  +     private boolean failureMsgSent = false;
  +     private boolean siteDown = false;
  +     private boolean successMsgSent = false;
  +
  +     private Properties appProperties;
  +
  +     private JButton testerButton;
  +     private JTextField addressField;
  +     private JTextField fromField;
  +     private JTextField smtpHostField;
  +     private JTextField failsubjectField;
  +     private JTextField successsubjectField;
  +     private JTextField failureField;
  +     private JTextField failureLimitField;
  +     private JTextField successLimitField;
  +
  +     private JPanel mainPanel;
  +     private JLabel panelTitleLabel;
   
  -     String addressie;
  -     String from;
  -     String smtpHost;
  -     String failsubject;
  -     String successsubject;
  -     long failureCount = 0;
  -     long successCount = 0;
  -     long failureLimit = 2;
  -     long successLimit = 2;
  -     boolean failureMsgSent = false;
  -     boolean siteDown = false;
  -     boolean successMsgSent = false;
  -
  -     Properties appProperties;
  -
  -     JButton testerButton;
  -     JTextField addressField;
  -     JTextField fromField;
  -     JTextField smtpHostField;
  -     JTextField failsubjectField;
  -     JTextField successsubjectField;
  -     JTextField failureField;
  -     JTextField failureLimitField;
  -     JTextField successLimitField;
   
        //-----------
   
        /************************************************************
         *  !ToDo (Constructor description)
         ***********************************************************/
  -     public MailerVisualizer()
  -     {
  +     public MailerVisualizer() {
                super();
   
                // Properties connection.
                this.appProperties = JMeterUtils.getJMeterProperties();
   
  -             // File panel
  -             JPanel mailerPanel = new JPanel();
  -             GridBagLayout g = new GridBagLayout();
  -             mailerPanel.setLayout(g);
  -             GridBagConstraints c = new GridBagConstraints();
  -
  -             c.anchor = GridBagConstraints.NORTHWEST;
  -             c.insets = new Insets(0, 0, 0, 0);
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("From:"));
  -
  -             from = appProperties.getProperty("mailer.from");
  -             fromField = new JTextField(from, 25);
  -             fromField.setEditable(true);
  -             fromField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(fromField, c);
  -             mailerPanel.add(fromField);
  -
  -             c.anchor = GridBagConstraints.NORTHWEST;
  -             c.insets = new Insets(0, 0, 0, 0);
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Addressie(s):"));
  -
  -             addressie = appProperties.getProperty("mailer.addressies");
  -             addressField = new JTextField(addressie, 25);
  -             addressField.setEditable(true);
  -             addressField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(addressField, c);
  -             mailerPanel.add(addressField);
  -
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("SMTP Host:"));
  -
  -             smtpHost = appProperties.getProperty("mailer.smtphost");
  -             smtpHostField = new JTextField(smtpHost, 25);
  -             smtpHostField.setEditable(true);
  -             smtpHostField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(smtpHostField, c);
  -             mailerPanel.add(smtpHostField);
  -
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Failure Subject:"));
  -
  -             failsubject = appProperties.getProperty("mailer.failsubject");
  -             failsubjectField = new JTextField(failsubject, 25);
  -             failsubjectField.setEditable(true);
  -             failsubjectField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(failsubjectField, c);
  -             mailerPanel.add(failsubjectField);
  -
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Success Subject:"));
  -
  -             successsubject = appProperties.getProperty("mailer.successsubject");
  -             successsubjectField = new JTextField(successsubject, 25);
  -             successsubjectField.setEditable(true);
  -             successsubjectField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(successsubjectField, c);
  -             mailerPanel.add(successsubjectField);
  -
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Failure Limit:"));
  -
  -             try
  -             {
  -                     failureLimit =
  -                                     
Long.parseLong(appProperties.getProperty("mailer.failurelimit"));
  +             // retrieve successLimit from properties
  +             try {
  +                     successLimit =  
Long.parseLong(appProperties.getProperty("mailer.successlimit"));
                }
  -             catch (NumberFormatException ex)
  -             {
  +             catch (Exception ex) {
                        // Ignore any garbage
                }
  -             failureLimitField = new JTextField(Long.toString(failureLimit), 6);
  -             failureLimitField.setEditable(true);
  -             failureLimitField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(failureLimitField, c);
  -             mailerPanel.add(failureLimitField);
  -
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Success Limit:"));
   
  -             try
  -             {
  -                     successLimit =
  -                                     
Long.parseLong(appProperties.getProperty("mailer.successlimit"));
  +             // retrieve failureLimit from properties
  +             try {
  +                     failureLimit =  
Long.parseLong(appProperties.getProperty("mailer.failurelimit"));
                }
  -             catch (NumberFormatException ex)
  -             {
  +             catch (Exception ex) {
                        // Ignore any garbage
                }
  -             successLimitField = new JTextField(Long.toString(successLimit), 6);
  -             successLimitField.setEditable(true);
  -             successLimitField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(successLimitField, c);
  -             mailerPanel.add(successLimitField);
  -
  -             testerButton = new JButton("Test Mail");
  -             testerButton.addActionListener(this);
  -             testerButton.setEnabled(true);
  -             c.gridwidth = 1;
  -             g.setConstraints(testerButton, c);
  -             mailerPanel.add(testerButton);
   
  -             c.gridwidth = 1;
  -             mailerPanel.add(new JLabel("Failures:"));
  -             failureField = new JTextField(6);
  -             failureField.setEditable(false);
  -             failureField.addActionListener(this);
  -             c.gridwidth = GridBagConstraints.REMAINDER;
  -             g.setConstraints(failureField, c);
  -             mailerPanel.add(failureField);
  -
  -             this.add(mailerPanel);
  +             // initialize GUI.
  +             initGui();
        }
   
        /************************************************************
  @@ -269,77 +173,6 @@
                return this;
        }
   
  -     /************************************************************
  -      *  !ToDo (Method description)
  -      *
  -      *@param  e  !ToDo (Parameter description)
  -      ***********************************************************/
  -     public void actionPerformed(ActionEvent e)
  -     {
  -             try
  -             {
  -                     JComponent c = (JComponent)e.getSource();
  -                     if (c == addressField)
  -                     {
  -                             this.addressie = this.addressField.getText();
  -                             System.out.println("AddressField=" + 
addressField.getText());
  -                     }
  -                     else if (c == fromField)
  -                     {
  -                             this.from = this.fromField.getText();
  -                             System.out.println("FromField=" + fromField.getText());
  -                     }
  -                     else if (c == smtpHostField)
  -                     {
  -                             this.smtpHost = this.smtpHostField.getText();
  -                             System.out.println("smtpHostField=" + 
smtpHostField.getText());
  -                     }
  -                     else if (c == failsubjectField)
  -                     {
  -                             this.failsubject = this.failsubjectField.getText();
  -                             System.out.println("failsubjectField=" + 
failsubjectField.getText());
  -                     }
  -                     else if (c == successsubjectField)
  -                     {
  -                             this.successsubject = 
this.successsubjectField.getText();
  -                             System.out.println("successsubjectField=" + 
successsubjectField.getText());
  -                     }
  -                     else if (c == failureLimitField)
  -                     {
  -                             this.failureLimit = 
Long.parseLong(this.failureLimitField.getText());
  -                             System.out.println("failureLimitField=" + 
failureLimitField.getText());
  -                     }
  -                     else if (c == successLimitField)
  -                     {
  -                             this.successLimit = 
Long.parseLong(this.successLimitField.getText());
  -                             System.out.println("successLimitField=" + 
successLimitField.getText());
  -                     }
  -                     else if (c == testerButton)
  -                     {
  -                             System.out.println("### Test To:  " + this.addressie + 
", " +
  -                                             "Via:  " + this.smtpHost + ", " +
  -                                             "Fail Subject:  " + this.failsubject + 
", " +
  -                                             "Success Subject:  " + 
this.successsubject);
  -
  -                             String testMessage = ("### Test To:  " + 
this.addressie + ", " +
  -                                             "Via:  " + this.smtpHost + ", " +
  -                                             "Fail Subject:  " + this.failsubject + 
", " +
  -                                             "Success Subject:  " + 
this.successsubject);
  -
  -                             Vector addressVector = newAddressVector(addressie);
  -                             sendMail(from, addressVector, "Testing addressies", 
testMessage, smtpHost);
  -                     }
  -                     else
  -                     {
  -                             // do nothing!
  -                     }
  -             }
  -             catch (Exception ex)
  -             {
  -                     JOptionPane.showMessageDialog(this, ex, "Error", 
JOptionPane.ERROR_MESSAGE);
  -             }
  -     }
  -
   
        /************************************************************
         *  !ToDo (Method description)
  @@ -506,4 +339,288 @@
                        System.exit(1);
                }
        }
  +
  +     /**
  +      * Initializes the GUI. Lays out components and adds them to the
  +      * container.
  +      */
  +     private void initGui() {
  +             this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT, 
VerticalLayout.TOP));
  +
  +             // MAIN PANEL
  +             JPanel mainPanel = new JPanel();
  +             Border margin = new EmptyBorder(10, 10, 5, 10);
  +             mainPanel.setBorder(margin);
  +             mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
  +
  +             // TITLE
  +             JLabel panelTitleLabel = new JLabel(getStaticLabel());
  +             Font curFont = panelTitleLabel.getFont();
  +             int curFontSize = curFont.getSize();
  +             curFontSize += 4;
  +             panelTitleLabel.setFont(new Font(curFont.getFontName(), 
curFont.getStyle(), curFontSize));
  +             mainPanel.add(panelTitleLabel);
  +
  +             // NAME
  +             mainPanel.add(getNamePanel());
  +
  +             // mailer panel
  +             JPanel mailerPanel = new JPanel();
  +             
mailerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
 getAttributesTitle()));
  +             GridBagLayout g = new GridBagLayout();
  +             mailerPanel.setLayout(g);
  +             GridBagConstraints c = new GridBagConstraints();
  +
  +             c.anchor = GridBagConstraints.NORTHWEST;
  +             c.insets = new Insets(0, 0, 0, 0);
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("From:"));
  +
  +             from = appProperties.getProperty("mailer.from");
  +             fromField = new JTextField(from, 25);
  +             fromField.setEditable(true);
  +             fromField.addActionListener(this);
  +             fromField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(fromField, c);
  +             mailerPanel.add(fromField);
  +
  +             c.anchor = GridBagConstraints.NORTHWEST;
  +             c.insets = new Insets(0, 0, 0, 0);
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Addressie(s):"));
  +
  +             addressie = appProperties.getProperty("mailer.addressies");
  +             addressField = new JTextField(addressie, 25);
  +             addressField.setEditable(true);
  +             addressField.addActionListener(this);
  +             addressField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(addressField, c);
  +             mailerPanel.add(addressField);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("SMTP Host:"));
  +
  +             smtpHost = appProperties.getProperty("mailer.smtphost");
  +             smtpHostField = new JTextField(smtpHost, 25);
  +             smtpHostField.setEditable(true);
  +             smtpHostField.addActionListener(this);
  +             smtpHostField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(smtpHostField, c);
  +             mailerPanel.add(smtpHostField);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Failure Subject:"));
  +
  +             failsubject = appProperties.getProperty("mailer.failsubject");
  +             failsubjectField = new JTextField(failsubject, 25);
  +             failsubjectField.setEditable(true);
  +             failsubjectField.addActionListener(this);
  +             failsubjectField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(failsubjectField, c);
  +             mailerPanel.add(failsubjectField);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Success Subject:"));
  +
  +             successsubject = appProperties.getProperty("mailer.successsubject");
  +             successsubjectField = new JTextField(successsubject, 25);
  +             successsubjectField.setEditable(true);
  +             successsubjectField.addActionListener(this);
  +             successsubjectField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(successsubjectField, c);
  +             mailerPanel.add(successsubjectField);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Failure Limit:"));
  +
  +             failureLimitField = new JTextField(Long.toString(failureLimit), 6);
  +             failureLimitField.setEditable(true);
  +             failureLimitField.addActionListener(this);
  +             failureLimitField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(failureLimitField, c);
  +             mailerPanel.add(failureLimitField);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Success Limit:"));
  +
  +             successLimitField = new JTextField(Long.toString(successLimit), 6);
  +             successLimitField.setEditable(true);
  +             successLimitField.addActionListener(this);
  +             successLimitField.addFocusListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(successLimitField, c);
  +             mailerPanel.add(successLimitField);
  +
  +             testerButton = new JButton("Test Mail");
  +             testerButton.addActionListener(this);
  +             testerButton.setEnabled(true);
  +             c.gridwidth = 1;
  +             g.setConstraints(testerButton, c);
  +             mailerPanel.add(testerButton);
  +
  +             c.gridwidth = 1;
  +             mailerPanel.add(new JLabel("Failures:"));
  +             failureField = new JTextField(6);
  +             failureField.setEditable(false);
  +             failureField.addActionListener(this);
  +             c.gridwidth = GridBagConstraints.REMAINDER;
  +             g.setConstraints(failureField, c);
  +             mailerPanel.add(failureField);
  +
  +             mainPanel.add(mailerPanel, BorderLayout.CENTER);
  +
  +             this.add(mainPanel);
  +     }
  +
  +     /**
  +      * Returns a String for the title of the component
  +      * as set up in the properties-file using the lookup-constant
  +      * "mailer_visualizer_title".
  +      *
  +      *@return  The title of the component.
  +      */
  +     public String getStaticLabel()
  +     {
  +             // should be something like this:
  +             //      return JMeterUtils.getResString("mailer_visualizer_title");
  +             return "Mailer Visualizer";
  +     }
  +
  +     /**
  +      * Returns a String for the title of the attributes-panel
  +      * as set up in the properties-file using the lookup-constant
  +      * "mailer_attributes_panel".
  +      *
  +      *@return  The title of the component.
  +      */
  +     public String getAttributesTitle()
  +     {
  +             // should be something like this:
  +             //      return JMeterUtils.getResString("mailer_attributes_panel")
  +             return "Mailing attributes";
  +     }
  +     /**
  +     * Method used to log a String.
  +     *
  +     * @param str String to be logged.
  +     */
  +     private static void log(String str) {
  +             // this is just a tewmporary solution
  +             // will be replaced by a call to the logging-API
  +             // of the commons-project.
  +             System.out.println("MailerVisualizer - " + str);
  +     }
  +
  +
  +     /**
  +      * Does the actual EventHandling. Gets called by EventHandlers
  +      * for either ActionEvents or FocusEvents.
  +      *
  +      * @param source The object that caused the event.
  +      */
  +     private void doEventHandling(Object source) {
  +             if (source == addressField) {
  +                     this.addressie = this.addressField.getText();
  +                     log("AddressField=" + addressField.getText());
  +             }
  +             else if (source == fromField) {
  +                     this.from = this.fromField.getText();
  +                     log("FromField=" + fromField.getText());
  +             }
  +             else if (source == smtpHostField) {
  +                     this.smtpHost = this.smtpHostField.getText();
  +                     log("smtpHostField=" + smtpHostField.getText());
  +             }
  +             else if (source == failsubjectField) {
  +                     this.failsubject = this.failsubjectField.getText();
  +                     log("failsubjectField=" + failsubjectField.getText());
  +             }
  +             else if (source == successsubjectField) {
  +                     this.successsubject = this.successsubjectField.getText();
  +                     log("successsubjectField=" + successsubjectField.getText());
  +             }
  +             else if (source == failureLimitField) {
  +                     this.failureLimit = 
Long.parseLong(this.failureLimitField.getText());
  +                     log("failureLimitField=" + failureLimitField.getText());
  +             }
  +             else if (source == successLimitField) {
  +                     this.successLimit = 
Long.parseLong(this.successLimitField.getText());
  +                     log("successLimitField=" + successLimitField.getText());
  +             }
  +     }
  +
  +
  +     //////////////////////////////////////////////////////////////
  +     //
  +     // Implementation of the ActionListener-Interface.
  +     //
  +     //////////////////////////////////////////////////////////////
  +
  +     /************************************************************
  +      *  !ToDo (Method description)
  +      *
  +      *@param  e  !ToDo (Parameter description)
  +      ***********************************************************/
  +     public void actionPerformed(ActionEvent e) {
  +             try {
  +                     JComponent c = (JComponent)e.getSource();
  +                     if (c == testerButton) {
  +                             log("### Test To:  " + this.addressie + ", " +
  +                                             "Via:  " + this.smtpHost + ", " +
  +                                             "Fail Subject:  " + this.failsubject + 
", " +
  +                                             "Success Subject:  " + 
this.successsubject);
  +
  +                             String testMessage = ("### Test To:  " + 
this.addressie + ", " +
  +                                             "Via:  " + this.smtpHost + ", " +
  +                                             "Fail Subject:  " + this.failsubject + 
", " +
  +                                             "Success Subject:  " + 
this.successsubject);
  +
  +                             Vector addressVector = newAddressVector(addressie);
  +                             sendMail(from, addressVector, "Testing addressies", 
testMessage, smtpHost);
  +                     }
  +                     else {
  +                             doEventHandling(c);
  +                     }
  +             }
  +             catch (Exception ex)    {
  +                     JOptionPane.showMessageDialog(this, ex, "Error", 
JOptionPane.ERROR_MESSAGE);
  +             }
  +     }
  +
  +     //////////////////////////////////////////////////////////////
  +     //
  +     // Implementation of the FocusListener-Interface.
  +     //
  +     //////////////////////////////////////////////////////////////
  +
  +     /**
  +      * Empty implementation of the FocusListener-method.
  +      */
  +     public void focusGained(FocusEvent e) {
  +     }
  +
  +     /**
  +      * Called every time a element looses its focus. Here used to determine
  +      * wether the text inside a JTextField has changed and wether
  +      * the field has changed.
  +      *
  +      * @param e The FocusEvent-object encapsulating all relevant informations
  +      * about the FocusEvent.
  +      */
  +     public void focusLost(FocusEvent e) {
  +             Object source = e.getSource();
  +             doEventHandling(source);
  +     }
  +
   }
  +
  +// new ressource_strings:
  +// mailer_visualizer_title - used as the title of this Visualizer
  +// mailer_attributes_panel - used as the title of the JPanel (EtchedBorder - title) 
where the attributes are entered
  +
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to