/** * Error defines a common error-reporting mechanism for all JJIL classes. * It includes an error code and up to three string objects representing * objects that explain the error, for example file names or images. * * Build-specific libraries like jjil.android or jjil.j2se will define * a Error.toString() class that converts the Error object into a localized * error message. * * */ package jjil.core; /** * Error defines a common error-reporting mechanism for all JJIL classes. * It includes an error code and up to three string objects representing * objects that explain the error, for example file names or images. * @author webb * */ public class Error extends Throwable { /** * J2ME's Java is only 1.4 so no enums. We must simulate them... */ public static class PACKAGE { /** * Error code is defined in jjil.algorithm package. */ public static final int ALGORITHM = 0; /** * Error code is defined in jjil.android package. */ public static final int ANDROID = ALGORITHM + 1; /** * Error code is defined in jjil.core package. */ public static final int CORE = ANDROID + 1; /** * Error code is defined in jjil.j2me package. */ public static final int J2ME = CORE + 1; /** * Error code is defined in jjil.j2se package. */ public static final int J2SE = J2ME + 1; /** * Count of packages. */ public static final int COUNT = J2SE + 1; } /** * nCode is a general error code. Possible values are defined in the CODES enumerated * type (really, we use ints for compatibility with J2ME). */ private int nCode; /** * The package where the error code is defined. */ private int nPackage; /** * szParam1 is a primary parameter giving detailed error information. */ private String szParam1; /** * szParam2 is a secondary parameter giving detailed error information. */ private String szParam2; /** * szParam3 is a tertiary parameter giving detailed error information. */ private String szParam3; /** * Copy constructor. * @param e Error object to copy. */ public Error(Error e) { this.nPackage = e.getPackage(); this.nCode = e.getCode(); this.szParam1 = e.getParam1(); this.szParam2 = e.getParam2(); this.szParam3 = e.getParam3(); } /** * This is how Error objects are created. The first two parameters determine * the specific type of error. The other parameters give information about * the objects causing the error. * @param nPackage package where error code is defined. * @param nCode : the error code * @param szParam1 : a first parameter giving detailed information * @param szParam2 : a second parameter giving detailed information * @param szParam3 : a third parameter giving detailed information */ public Error( int nPackage, int nCode, String szParam1, String szParam2, String szParam3) { this.nPackage = nPackage; this.nCode = nCode; this.szParam1 = szParam1; this.szParam2 = szParam2; this.szParam3 = szParam3; } /** * * @return the error code. */ public int getCode() { return this.nCode; } /** * * @return the package where the error code is defined. */ public int getPackage() { return this.nPackage; } /** * * @return first parameter describing error. */ public String getParam1() { return this.szParam1; } /** * * @return second parameter describing error. */ public String getParam2() { return this.szParam2; } /** * * @return third parameter describing error. */ public String getParam3() { return this.szParam3; } /** * * @return String including all parameters describing error. */ protected String parameters() { String sz = "("; if (this.getParam1() != null) { sz += this.getParam1(); } sz += ","; if (this.getParam2() != null) { sz += this.getParam2(); } sz += ","; if (this.getParam3() != null) { sz += this.getParam3(); } sz += ")"; return sz; } /** * * @return String describing this instance of Error. */ public String toString() { return new Integer(this.nPackage).toString() + " " + new Integer(this.nCode).toString() + parameters(); } }