/****************************************************************************** * The MIT License * Copyright (c) 2003 Novell Inc. www.novell.com * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the Software), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. *******************************************************************************/ // // Novell.Directory.Ldap.Utilclass.ResourcesHandler.cs // // Author: // Sunil Kumar (Sunilk@novell.com) // // (C) 2003 Novell, Inc (http://www.novell.com) // using System; using System.Resources; using System.Threading; using System.Reflection; using System.Text; namespace Novell.Directory.Ldap.Utilclass { /// A utility class to get strings from the ExceptionMessages and /// ResultCodeMessages resources. /// public class ResourcesHandler { // Cannot create an instance of this class private ResourcesHandler() { return ; } /* * Initialized when the first result string is requested */ private static System.Resources.ResourceManager defaultResultCodes = null; /// Initialized when the first Exception message string is requested private static System.Resources.ResourceManager defaultMessages = null; /// Package where resources are found private static System.String pkg = "Novell.Directory.Ldap.Utilclass."; /// The default Locale private static System.Globalization.CultureInfo defaultLocale; /// Returns a string using the MessageOrKey as a key into /// ExceptionMessages or, if the Key does not exist, returns the /// string messageOrKey. In addition it formats the arguments into the message /// according to MessageFormat. /// /// /// Key string for the resource. /// /// /// arguments /// /// /// the text for the message specified by the MessageKey or the Key /// if it there is no message for that key. /// public static System.String getMessage(System.String messageOrKey, System.Object[] arguments) { return getMessage(messageOrKey, arguments, null); } /// Returns the message stored in the ExceptionMessages resource for the /// specified locale using messageOrKey and argments passed into the /// constructor. If no string exists in the resource then this returns /// the string stored in message. (This method is identical to /// getLdapErrorMessage(Locale locale).) /// /// /// Key string for the resource. /// /// /// arguments /// /// /// The Locale that should be used to pull message /// strings out of ExceptionMessages. /// /// /// the text for the message specified by the MessageKey or the Key /// if it there is no message for that key. /// public static System.String getMessage(System.String messageOrKey, System.Object[] arguments, System.Globalization.CultureInfo locale) { if (defaultMessages == null) { defaultMessages = new ResourceManager ("ExceptionMessages", Assembly.GetExecutingAssembly ()); } if (defaultLocale == null) defaultLocale = Thread.CurrentThread.CurrentUICulture; if (locale == null) locale = defaultLocale; if (messageOrKey == null) { messageOrKey = ""; } string pattern; try { pattern = defaultMessages.GetString(messageOrKey, locale); } catch (System.Resources.MissingManifestResourceException mre) { pattern = messageOrKey; } // Format the message if arguments were passed if (arguments != null) { StringBuilder strB = new StringBuilder(); strB.AppendFormat(pattern, arguments); pattern = strB.ToString(); // MessageFormat mf = new MessageFormat(pattern); // pattern=System.String.Format(locale,pattern,arguments); // mf.setLocale(locale); //this needs to be reset with the new local - i18n defect in java // mf.applyPattern(pattern); // pattern = mf.format(arguments); } return pattern; } /// Returns a string representing the Ldap result code from the /// default ResultCodeMessages resource. /// /// /// the result code /// /// /// the String representing the result code. /// public static System.String getResultString(int code) { return getResultString(code, null); } /// Returns a string representing the Ldap result code. The message /// is obtained from the locale specific ResultCodeMessage resource. /// /// /// the result code /// /// /// The Locale that should be used to pull message /// strings out of ResultMessages. /// /// /// the String representing the result code. /// public static System.String getResultString(int code, System.Globalization.CultureInfo locale) { if (defaultResultCodes == null) { /* defaultResultCodes = ResourceManager.CreateFileBasedResourceManager("ResultCodeMessages", "Resources", null);*/ defaultResultCodes = new ResourceManager ("ResultCodeMessages", Assembly.GetExecutingAssembly ()); } if (defaultLocale == null) defaultLocale = Thread.CurrentThread.CurrentUICulture; if (locale == null) locale = defaultLocale; string result; try { result = defaultResultCodes.GetString(Convert.ToString(code), defaultLocale); } catch (ArgumentNullException mre) { result = getMessage(ExceptionMessages.UNKNOWN_RESULT, new Object[]{code}, locale); } return result; } static ResourcesHandler() { defaultLocale = Thread.CurrentThread.CurrentUICulture; } } //end class ResourcesHandler }