Email.java :  » Web-Framework » rife-1.6.1 » com » uwyn » rife » mail » Java Open Source

Java Open Source » Web Framework » rife 1.6.1 
rife 1.6.1 » com » uwyn » rife » mail » Email.java
/*
 * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
 * Distributed under the terms of either:
 * - the common development and distribution license (CDDL), v1.0; or
 * - the GNU Lesser General Public License, v2.1 or later
 * $Id: Email.java 3634 2007-01-08 21:42:24Z gbevin $
 */
package com.uwyn.rife.mail;

import com.uwyn.rife.site.ConstrainedBean;
import com.uwyn.rife.site.ConstrainedProperty;
import com.uwyn.rife.site.Validation;

/**
 * Contains the details of an email message that will be sent through the mail
 * queue.
 *
 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
 * @version $Revision: 3634 $
 * @since 1.0
 */
public class Email extends Validation<ConstrainedBean, ConstrainedProperty>
{
  private int     mId = -1;
  private String  mFromAddress = null;
  private String  mToAddresses = null;
  private String  mSubject = null;
  private String  mBody = null;
  private String  mCcAddresses = null;
  private String  mBccAddresses = null;
  
  private boolean mQueueFlag = false;
  
  protected void activateValidation()
  {
    addConstraint(new ConstrainedProperty("id").notNull(true).identifier(true));
    addConstraint(new ConstrainedProperty("fromAddress").notNull(true).notEmpty(true).maxLength(255));
    addConstraint(new ConstrainedProperty("toAddresses").notNull(true).notEmpty(true).maxLength(255));
    addConstraint(new ConstrainedProperty("subject").notNull(true).notEmpty(true).maxLength(255));
    addConstraint(new ConstrainedProperty("body").notNull(true).notEmpty(true));
    addConstraint(new ConstrainedProperty("ccAddresses").maxLength(255));
    addConstraint(new ConstrainedProperty("bccAddresses").maxLength(255));
  }
  
  /**
   * Creates a new instance.
   *
   * @since 1.0
   */
  public Email()
  {
  }
  
  /**
   * Sets the id.
   *
   * @param id the id
   * @return the <code>Email</code> instance
   */
  public Email id(int id)
  {
    mId = id;
    
    return this;
  }
  
  /**
   * Sets the id of this instance.
   *
   * @param id the id
   */
  public void setId(int id)
  {
    mId = id;
  }
  
  /**
   * Retrieves the id of this instance.
   *
   * @return the requested id
   */
  public int getId()
  {
    return mId;
  }
  
  /**
   * Sets the <code>from</code> email address.
   *
   * @param from an email address
   * @return the <code>Email</code> instance
   */
  public Email from(String from)
  {
    mFromAddress = from;
    
    return this;
  }
  
  /**
   * Sets the <code>from</code> email address.
   *
   * @param from an email address
   */
  public void setFromAddress(String from)
  {
    mFromAddress = from;
  }
  
  /**
   * Retrieves the <code>from</code> email address.
   *
   * @return a String
   */
  public String getFromAddress()
  {
    return mFromAddress;
  }
  
  /**
   * Adds a <code>to</code> email address.
   *
   * @param toAddress an email address
   * @return the <code>Email</code> instance
   */
  public Email to(String toAddress)
  {
    addTo(toAddress);
    return this;
  }
  
  /**
   * Adds a <code>to</code> email address.
   *
   * @param toAddress an email address
   */
  public void addTo(String toAddress)
  {
    if (null == mToAddresses)
    {
      mToAddresses = toAddress;
    }
    else
    {
      mToAddresses += "," + toAddress;
    }
  }
  
  /**
   * Sets the <code>to</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param toAddresses the email addresses, separated by commas
   * @return the <code>Email</code> instance
   */
  public Email toAddresses(String toAddresses)
  {
    setToAddresses(toAddresses);
    return this;
  }
  
  /**
   * Sets the <code>to</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param toAddresses the email addresses, separated by commas
   */
  public void setToAddresses(String toAddresses)
  {
    mToAddresses = toAddresses;
  }
  
  /**
   * Retrieves the <code>to</code> email addresses.
   *
   * @return the <code>to</code> email addresses, separated by commas
   */
  public String getToAddresses()
  {
    return mToAddresses;
  }
  
  /**
   * Sets the subject.
   *
   * @param subject the subject
   * @return the <code>Email</code> instance
   */
  public Email subject(String subject)
  {
    mSubject = subject;
    
    return this;
  }
  
  /**
   * Sets the subject .
   *
   * @param subject the subject
   */
  public void setSubject(String subject)
  {
    mSubject = subject;
  }
  
  /**
   * Retrieves the subject.
   *
   * @return the subject
   */
  public String getSubject()
  {
    return mSubject;
  }
  
  /**
   * Sets the body.
   *
   * @param body the body
   * @return the <code>Email</code> instance
   */
  public Email body(String body)
  {
    mBody = body;
    
    return this;
  }
  
  /**
   * Sets the body.
   *
   * @param body the body
   */
  public void setBody(String body)
  {
    mBody = body;
  }
  
  /**
   * Retrieves the body.
   *
   * @return the body
   */
  public String getBody()
  {
    return mBody;
  }
  
  /**
   * Adds a <code>cc</code> email address.
   *
   * @param ccAddress an email address
   * @return the <code>Email</code> instance
   */
  public Email cc(String ccAddress)
  {
    addCc(ccAddress);
    return this;
  }
  
  /**
   * Adds a <code>cc</code> email address.
   *
   * @param ccAddress an email address
   */
  public void addCc(String ccAddress)
  {
    if (null == mCcAddresses)
    {
      mCcAddresses = ccAddress;
    }
    else
    {
      mCcAddresses += "," + ccAddress;
    }
  }
  
  /**
   * Sets the <code>cc</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param ccAddresses the email addresses, separated by commas
   * @return the <code>Email</code> instance
   */
  public Email ccAddresses(String ccAddresses)
  {
    setCcAddresses(ccAddresses);
    return this;
  }
  
  /**
   * Sets the <code>cc</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param ccAddresses the email addresses, separated by commas
   */
  public void setCcAddresses(String ccAddresses)
  {
    mCcAddresses = ccAddresses;
  }
  
  /**
   * Retrieves the <code>cc</code> email addresses.
   *
   * @return the <code>cc</code> email addresses, separated by commas
   */
  public String getCcAddresses()
  {
    return mCcAddresses;
  }
  
  /**
   * Adds a <code>bcc</code> email address.
   *
   * @param bccAddress an email address
   * @return the <code>Email</code> instance
   */
  public Email bcc(String bccAddress)
  {
    addBcc(bccAddress);
    return this;
  }
  
  /**
   * Adds a <code>bcc</code> email address.
   *
   * @param bccAddress an email address
   */
  public void addBcc(String bccAddress)
  {
    if (null == mBccAddresses)
    {
      mBccAddresses = bccAddress;
    }
    else
    {
      mBccAddresses += "," + bccAddress;
    }
  }
  
  /**
   * Sets the <code>bcc</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param bccAddresses the email addresses, separated by commas
   * @return the <code>Email</code> instance
   */
  public Email bccAddresses(String bccAddresses)
  {
    setBccAddresses(bccAddresses);
    return this;
  }
  
  /**
   * Sets the <code>bcc</code> email addresses. This replaces all
   * previous ones.
   * <p>The email addresses need to be separated by commas.
   *
   * @param bccAddresses the email addresses, separated by commas
   */
  public void setBccAddresses(String bccAddresses)
  {
    mBccAddresses = bccAddresses;
  }
  
  /**
   * Retrieves the <code>bcc</code> email addresses.
   *
   * @return the bcc email addresses, separated by commas
   */
  public String getBccAddresses()
  {
    return mBccAddresses;
  }
  
  /**
   * Retrieves the queue flag, this is only for internal use.
   *
   * @return <code>true</code> if the message is queued; and
   * <p><code>false</code> otherwise
   */
  public boolean getQueueFlag()
  {
    return mQueueFlag;
  }
  
  /**
   * Sets the queue flag, this is only for internal use.
   *
   * @param queueFlag the queue flag
   */
  public void setQueueFlag(boolean queueFlag)
  {
    mQueueFlag = queueFlag;
  }
  
  public int hashCode()
  {
    int result;
    
    result = 0;
    result = 29 * result + (mFromAddress != null ? mFromAddress.hashCode() : 0);
    result = 29 * result + (mToAddresses != null ? mToAddresses.hashCode() : 0);
    result = 29 * result + (mSubject != null ? mSubject.hashCode() : 0);
    result = 29 * result + (mBody != null ? mBody.hashCode() : 0);
    result = 29 * result + (mCcAddresses != null ? mCcAddresses.hashCode() : 0);
    result = 29 * result + (mBccAddresses != null ? mBccAddresses.hashCode() : 0);
    
    return result;
  }
  
  public boolean equals(Object other)
  {
    if (null == other)
    {
      return false;
    }
    
    if (other == this)
    {
      return true;
    }
    
    if (!(other instanceof Email))
    {
      return false;
    }
    
    Email other_email = (Email)other;
    
    if (other_email.getFromAddress() != null || getFromAddress() != null)
    {
      if (null == other_email.getFromAddress() || null == getFromAddress())
      {
        return false;
      }
      if (!other_email.getFromAddress().equals(getFromAddress()))
      {
        return false;
      }
    }
    
    if (other_email.getToAddresses() != null || getToAddresses() != null)
    {
      if (null == other_email.getToAddresses() || null == getToAddresses())
      {
        return false;
      }
      if (!other_email.getToAddresses().equals(getToAddresses()))
      {
        return false;
      }
    }
    
    if (other_email.getSubject() != null || getSubject() != null)
    {
      if (null == other_email.getSubject() || null == getSubject())
      {
        return false;
      }
      if (!other_email.getSubject().equals(getSubject()))
      {
        return false;
      }
    }
    
    if (other_email.getBody() != null || getBody() != null)
    {
      if (null == other_email.getBody() || null == getBody())
      {
        return false;
      }
      if (!other_email.getBody().equals(getBody()))
      {
        return false;
      }
    }
    
    if (other_email.getCcAddresses() != null || getCcAddresses() != null)
    {
      if (null == other_email.getCcAddresses() || null == getCcAddresses())
      {
        return false;
      }
      if (!other_email.getCcAddresses().equals(getCcAddresses()))
      {
        return false;
      }
    }
    
    if (other_email.getBccAddresses() != null || getBccAddresses() != null)
    {
      if (null == other_email.getBccAddresses() || null == getBccAddresses())
      {
        return false;
      }
      if (!other_email.getBccAddresses().equals(getBccAddresses()))
      {
        return false;
      }
    }
    
    return true;
  }
  
  public String toString()
  {
    return "Email{" +
      "mId=" + mId +
      ", mFromAddress=" + mFromAddress +
      ", mToAddresses=" + mToAddresses +
      ", mSubject=" + mSubject +
      ", mBody=" + mBody +
      ", mCcAddresses=" + mCcAddresses +
      ", mBccAddresses=" + mBccAddresses +
      "}";
  }
}


java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.