/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.core; /** * * @see Core * @author Frank Shaka */ public class CoreException extends Exception { /** * */ private static final long serialVersionUID = -5654915714687349526L; private int type; private String localizedMessage; private String codeInfo; /** * * @param type */ public CoreException(int type) { super(getErrorMessage(type, null)); this.type = type; } /** * * @param type * @param codeInfo */ public CoreException(int type, String codeInfo) { super(getErrorMessage(type, codeInfo)); this.type = type; this.codeInfo = codeInfo; } /** * * @param type * @param cause */ public CoreException(int type, Throwable cause) { super(getErrorMessage(type, null), cause); this.type = type; } /** * * @param type * @param codeInfo * @param cause */ public CoreException(int type, String codeInfo, Throwable cause) { super(getErrorMessage(type, codeInfo), cause); this.type = type; this.codeInfo = codeInfo; } public int getType() { return type; } public void setLocalizedMessage(String localizedMessage) { this.localizedMessage = localizedMessage; } public boolean isMessageLocalized() { return localizedMessage != null; } void setCodeInfo(String info) { this.codeInfo = info; } public String getCodeInfo() { return codeInfo; } public String getLocalizedMessage() { if (isMessageLocalized()) return localizedMessage; return super.getLocalizedMessage(); } public String getMessage() { if (isMessageLocalized()) return localizedMessage; return super.getMessage(); } private static String getErrorMessage(int type, String codeInfo) { String err; if (type == Core.ERROR_NULL_ARGUMENT) { err = "Null argument"; //$NON-NLS-1$ } else if (type == Core.ERROR_INVALID_ARGUMENT) { err = "Invalid argument"; //$NON-NLS-1$ } else if (type == Core.ERROR_INVALID_FILE) { err = "Invalid file"; //$NON-NLS-1$ } else if (type == Core.ERROR_NO_SUCH_ENTRY) { err = "No such entry"; //$NON-NLS-1$ } else if (type == Core.ERROR_FAIL_ACCESS_XML_PARSER) { err = "Failed to access XML parser"; //$NON-NLS-1$ } else if (type == Core.ERROR_FAIL_PARSING_XML) { err = "Failed to parse XML"; //$NON-NLS-1$ } else if (type == Core.ERROR_NO_WORKBOOK_CONTENT) { err = "No workbook content"; //$NON-NLS-1$ } else if (type == Core.ERROR_FAIL_ACCESS_XML_TRANSFORMER) { err = "Failed to access XML transformer"; //$NON-NLS-1$ } else if (type == Core.ERROR_FAIL_INIT_CRYPTOGRAM) { err = "Failed to initialize cryptogram engine"; //$NON-NLS-1$ } else if (type == Core.ERROR_WRONG_PASSWORD) { err = "Wrong password"; //$NON-NLS-1$ } else if (type == Core.ERROR_FAIL_SERIALIZING_XML) { err = "Failed to serialize XML"; //$NON-NLS-1$ } else if (type == Core.ERROR_CANCELLATION) { err = "Operation canceled"; //$NON-NLS-1$ } else { err = "Unexpected error"; //$NON-NLS-1$ } if (codeInfo != null) return String.format("%s: %s", err, codeInfo); //$NON-NLS-1$ return err; } }