package org.marketcetera.core.notifications;
import java.util.Date;
import org.marketcetera.core.ClassVersion;
/* $License$ */
/**
* A notification of a system event.
*
* <p>It is preferable to subclass this class to create notifications
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: Notification.java 16154 2012-07-14 16:34:05Z colin $
* @since 0.8.0
*/
@ClassVersion("$Id: Notification.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$
public class Notification
implements INotification
{
private static final long serialVersionUID = 1L;
/**
* Returns a <em>low</em> priority <code>Notification</code>.
*
* @param inSubject a <code>String</code> value
* @param inBody a <code>String</code> value
* @param inOriginator a <code>String</code> value
* @return a <code>Notification</code> value
*/
public static Notification low(String inSubject,
String inBody,
String inOriginator)
{
return new Notification(inSubject,
inBody,
new Date(),
Severity.LOW,
inOriginator);
}
/**
* Returns a <em>medium</em> priority <code>Notification</code>.
*
* @param inSubject a <code>String</code> value
* @param inBody a <code>String</code> value
* @param inOriginator a <code>String</code> value
* @return a <code>Notification</code> value
*/
public static Notification medium(String inSubject,
String inBody,
String inOriginator)
{
return new Notification(inSubject,
inBody,
new Date(),
Severity.MEDIUM,
inOriginator);
}
/**
* Returns a <em>high</em> priority <code>Notification</code>.
*
* @param inSubject a <code>String</code> value
* @param inBody a <code>String</code> value
* @param inOriginator a <code>String</code> value
* @return a <code>Notification</code> value
*/
public static Notification high(String inSubject,
String inBody,
String inOriginator)
{
return new Notification(inSubject,
inBody,
new Date(),
Severity.HIGH,
inOriginator);
}
/**
* the subject of the notification
*/
private final String mSubject;
/**
* the body of the notification
*/
private final String mBody;
/**
* the timestamp of the notification
*/
private final Date mDate;
/**
* the severity of the notification
*/
private final Severity mSeverity;
/**
* the originator of the notification
*/
private final String mOriginator;
/**
* Create a new Notification instance.
*/
protected Notification(String inSubject,
String inBody,
Date inDate,
Severity inSeverity,
String inOriginator)
{
mSubject = inSubject;
mBody = inBody;
mDate = inDate;
mSeverity = inSeverity;
mOriginator = inOriginator;
}
/* (non-Javadoc)
* @see org.marketcetera.core.notifications.INotification#getBody()
*/
@Override
public final String getBody()
{
return mBody;
}
/* (non-Javadoc)
* @see org.marketcetera.core.notifications.INotification#getDate()
*/
@Override
public final Date getDate()
{
return mDate;
}
/* (non-Javadoc)
* @see org.marketcetera.core.notifications.INotification#getOriginator()
*/
@Override
public final String getOriginator()
{
return mOriginator;
}
/* (non-Javadoc)
* @see org.marketcetera.core.notifications.INotification#getSeverity()
*/
@Override
public final Severity getSeverity()
{
return mSeverity;
}
/* (non-Javadoc)
* @see org.marketcetera.core.notifications.INotification#getSubject()
*/
@Override
public final String getSubject()
{
return mSubject;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return String.format("%s Priority Notification at %s:\n%s\n%s", //$NON-NLS-1$
getSeverity().toString(),
getDate().toString(),
getSubject(),
getBody());
}
}