shared items

Wednesday, September 3, 2008

Exception class

public class NXExceptionReport
{
public static void recordEvent(String strHeading, String strMessage)
{
NXExceptionReport report = new NXExceptionReport(strHeading);
report.appendMessage(strMessage);
report.report();
}

public static void recordException(String strHeading, Throwable t, boolean bTrace)
{
NXExceptionReport report = new NXExceptionReport(strHeading, t);
report.setShowStackTrace(bTrace);
report.report();
}

public static void recordAdminException(String strHeading, Throwable t, boolean bTrace)
{
NXExceptionReport report = new NXExceptionReport(strHeading, t);
report.setShowStackTrace(bTrace);
report.setEmailAdmin(true);
report.report(true);
}

public static void recordAdminEvent(String strHeading, String strMessage)
{
NXExceptionReport report = new NXExceptionReport(strHeading);
report.appendMessage(strMessage);
report.setEmailAdmin(true);
report.report(true);
}

public static void recordException(Throwable t, boolean bTrace)
{
recordException("EXCEPTION", t, bTrace);
}

public NXExceptionReport(String heading, Throwable t)
{
this.heading = heading;
this.throwable = t;
}

public NXExceptionReport(String heading)
{
this.heading = heading;
}

public void appendMessage(Object message)
{
messages.addElement(message);
}

public void appendMessageTimestamp(Object message)
{
java.text.DateFormat tf = java.text.DateFormat.getTimeInstance(java.text.DateFormat.LONG);
StringBuffer sb = new StringBuffer(tf.format(new Date()));
sb.append(": ");
sb.append(message);
messages.addElement(sb.toString());
}

public void report()
{
report(false);
}

public void report(boolean bemail)
{
try
{
java.text.DateFormat df = java.text.DateFormat.getDateTimeInstance(java.text.DateFormat.FULL, java.text.DateFormat.FULL);
String strDate = df.format(new Date());
java.io.StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
pw.println("................................................................................................");
pw.println(". .");
pw.println(". .");

pw.print(strDate);
pw.print(": ");
pw.println(heading);
Iterator iter = messages.iterator();
while ( iter.hasNext() )
{
pw.println(iter.next());
}
if ( getClazz() != null )
{
pw.println("Recording Class: " + getClazz().getName());
}
if ( throwable != null )
{
pw.print("Original Exception ");
pw.print(throwable.getClass().getName());
pw.print(" [");
pw.print(throwable.getMessage());
pw.println("]");
if ( isShowStackTrace() )
{
pw.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Begin Stack Trace <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
throwable.printStackTrace(pw);
pw.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> End Stack Trace <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
}
}
pw.println(". .");
pw.println(". .");
pw.println("................................................................................................");
pw.close();
String strMessage = sw.toString();
System.err.println(strMessage);

if ( bemail || (throwable != null && this.isEmailException()) )
{
emailException(strMessage);
}
if ( this.isEmailAdmin() )
{
this.emailAdmin(strMessage);
}
}
catch ( Exception e )
{
e.printStackTrace();
}
}

/**
* @param strMessage
*/
private void emailException(String strMessage)
{
try
{
ResourceBundle rb = ResourceBundle.getBundle("ospp");
String strList = rb.getString("exception_email_list");
String strOriginator = rb.getString("exception_originator");
StringTokenizer st = new StringTokenizer(strList, ";:");
Vector vSend = new Vector();
while ( st.hasMoreTokens() )
{
dao.beans.NXUser user = new dao.beans.NXUser();
user.setEmail(st.nextToken());
user.setRealName("OSPP Technician");
vSend.addElement(user);
}
if ( !vSend.isEmpty() )
{
NXEmail email = new NXEmail();
email.setRecipients(vSend);
email.setBody(strMessage);
email.setSubject("OSPP Exception");
email.setOriginatorName("OSPP Watch");
email.setOriginatorEmail(strOriginator);
email.send();
}

}
catch ( Exception e )
{
// do nothing
}
}

private void emailAdmin(String strMessage)
{
try
{
ResourceBundle rb = ResourceBundle.getBundle("ospp");
String strList = rb.getString("exception_email_admins");
String strOriginator = rb.getString("exception_originator");
StringTokenizer st = new StringTokenizer(strList, ";:");
Vector vSend = new Vector();
while ( st.hasMoreTokens() )
{
dao.beans.NXUser user = new dao.beans.NXUser();
user.setEmail(st.nextToken());
user.setRealName("OSPP Administrator");
vSend.addElement(user);
}
if ( !vSend.isEmpty() )
{
NXEmail email = new NXEmail();
email.setRecipients(vSend);
email.setBody(strMessage);
email.setSubject("OSPP Exception");
email.setOriginatorName("OSPP Watch");
email.setOriginatorEmail(strOriginator);
email.send();
}

}
catch ( Exception e )
{
// do nothing
}
}

/**
* @return
*/
public boolean isShowStackTrace()
{
return showStackTrace;
}

/**
* @param b
*/
public void setShowStackTrace(boolean b)
{
showStackTrace = b;
}

/**
* @return
*/
public Throwable getThrowable()
{
return throwable;
}

/**
* @param throwable
*/
public void setThrowable(Throwable throwable)
{
this.throwable = throwable;
}

/**
* @return
*/
public Class getClazz()
{
return clazz;
}

/**
* @param class1
*/
public void setClazz(Class class1)
{
clazz = class1;
}

/**
* @return
*/
public boolean isEmailException()
{
return emailException;
}

/**
* @param b
*/
public void setEmailException(boolean b)
{
emailException = b;
}

/**
* @return Returns the emailAdmin.
*/
public boolean isEmailAdmin()
{
return emailAdmin;
}
/**
* @param emailAdmin The emailAdmin to set.
*/
public void setEmailAdmin( boolean emailAdmin )
{
this.emailAdmin = emailAdmin;
}
private String heading;
private Throwable throwable;
private Vector messages = new Vector();
private boolean showStackTrace;
private Class clazz;
private boolean emailException = true;
private boolean emailAdmin;
}

No comments: