/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: Email.java 3918 2008-04-14 17:35:35Z 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: 3918 $
* @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 +
"}";
}
}