/* * Copyright 2011 by Graz University of Technology, Austria * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint * initiative of the Federal Chancellery Austria and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.bku.slexceptions; import java.text.MessageFormat; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; public class SLException extends Exception { private static String RESOURCE_BUNDLE_BASE_NAME = "at.gv.egiz.bku.slexceptions.SLExceptionMessages"; private static String MISSING_RESOURCE_PATTERN = "MISSING RESOURCE FOR ERROR MESSAGE: {0} ({1})"; private static String ILLEGAL_ARGUMENT_MESSAGE = "MESSAGE FORMAT FAILED"; private static final long serialVersionUID = 1L; private int errorCode; private String message; private Object[] arguments; public SLException(int errorCode) { this.errorCode = errorCode; this.message = SLExceptionMessages.STANDARD_PREFIX + Integer.toString(errorCode); } public SLException(int errorCode, String message, Object[] arguments) { this.errorCode = errorCode; this.message = message; this.arguments = arguments; } public int getErrorCode() { return errorCode; } public String getDetailedMsg() { return getLocalizedMessage(); } @Override public String getLocalizedMessage() { return getLocalizedMessage(Locale.getDefault()); } public String getLocalizedMessage(Locale locale) { String pattern; Object[] arguments = this.arguments; try { ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE_BASE_NAME, locale); pattern = bundle.getString(message); } catch (MissingResourceException e) { pattern = MISSING_RESOURCE_PATTERN; arguments = new Object[]{message, e.getMessage()}; } String localizedMessage; try { localizedMessage = MessageFormat.format(pattern, arguments); } catch (IllegalArgumentException e) { localizedMessage = ILLEGAL_ARGUMENT_MESSAGE + ": " + pattern; } return localizedMessage; } /* (non-Javadoc) * @see java.lang.Throwable#getMessage() */ @Override public String getMessage() { return getLocalizedMessage(); } }