package com.jdroid.java.exception;
import com.jdroid.java.collections.Maps;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Map;
public abstract class AbstractException extends RuntimeException {
private static final long serialVersionUID = 6296155655850331666L;
public static final int CRITICAL_PRIORITY = 10;
public static final int NORMAL_PRIORITY = 50;
public static final int LOW_PRIORITY = 90;
private Map<String, Object> parameters = Maps.newHashMap();
private String title;
private String description;
private Boolean trackable = true;
private Boolean ignoreStackTrace = false;
private int priorityLevel = NORMAL_PRIORITY;
public AbstractException() {
super();
}
public AbstractException(String message, Throwable cause) {
super(message, cause);
}
public AbstractException(String message) {
super(message);
}
public AbstractException(Throwable cause) {
super(cause);
}
public Map<String, Object> getParameters() {
return parameters;
}
public Boolean hasParameter(String key) {
return parameters.containsKey(key);
}
@SuppressWarnings("unchecked")
public <E> E getParameter(String key) {
return (E)parameters.get(key);
}
public void addParameter(String key, Object value) {
parameters.put(key, value);
}
/**
* @return the title
*/
public String getTitle() {
return title;
}
/**
* @param title the title to set
*/
public void setTitle(String title) {
this.title = title;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
public Boolean isTrackable() {
return trackable;
}
public AbstractException setTrackable(Boolean trackable) {
this.trackable = trackable;
return this;
}
public Throwable getThrowableToLog() {
return this;
}
public int getPriorityLevel() {
return priorityLevel;
}
public void setPriorityLevel(int priorityLevel) {
this.priorityLevel = priorityLevel;
}
@Override
public StackTraceElement[] getStackTrace() {
return ignoreStackTrace ? null : super.getStackTrace();
}
@Override
public void printStackTrace(PrintStream err) {
if (ignoreStackTrace) {
return;
}
super.printStackTrace(err);
}
@Override
public void printStackTrace(PrintWriter err) {
if (ignoreStackTrace) {
return;
}
super.printStackTrace(err);
}
public void setIgnoreStackTrace(Boolean ignoreStackTrace) {
this.ignoreStackTrace = ignoreStackTrace;
}
public Boolean isIgnoreStackTrace() {
return ignoreStackTrace;
}
}