📄 messages.java
字号:
// jTDS JDBC Driver for Microsoft SQL Server and Sybase// Copyright (C) 2004 The jTDS Project//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package net.sourceforge.jtds.jdbc;import java.text.MessageFormat;import java.util.Enumeration;import java.util.Map;import java.util.ResourceBundle;/** * Support class for <code>Messages.properties</code>. * * @author David D. Kilzer * @author Mike Hutchinson * @version $Id: Messages.java,v 1.8 2005/04/20 16:49:22 alin_sinpalean Exp $ */public final class Messages { /** * Default name for resource bundle containing the messages. */ private static final String DEFAULT_RESOURCE = "net.sourceforge.jtds.jdbc.Messages"; /** * Cached resource bundle containing the messages. * <p> * <code>ResourceBundle</code> does caching internally but this caching * involves a lot of string operations to generate the keys used for * caching, leading to a lot of <code>StringBuffer</code> reallocation. In * one run through the complete jTDS test suite there were over 60000 * allocations and reallocations (about one for each <code>get()</code> * call). */ private static ResourceBundle defaultResource; /** * Default constructor. Private to prevent instantiation. */ private Messages() { } /** * Get runtime message using supplied key. * * @param key The key of the message in Messages.properties * @return The selected message as a <code>String</code>. */ public static String get(String key) { return get(key, null); } /** * Get runtime message using supplied key and substitute parameter * into message. * * @param key The key of the message in Messages.properties * @param param1 The object to insert into message. * @return The selected message as a <code>String</code>. */ public static String get(String key, Object param1) { Object args[] = {param1}; return get(key, args); } /** * Get runtime message using supplied key and substitute parameters * into message. * * @param key The key of the message in Messages.properties * @param param1 The object to insert into message. * @param param2 The object to insert into message. * @return The selected message as a <code>String</code>. */ static String get(String key, Object param1, Object param2) { Object args[] = {param1, param2}; return get(key, args); } /** * Get runtime error using supplied key and substitute parameters * into message. * * @param key The key of the error message in Messages.properties * @param arguments The objects to insert into the message. * @return The selected error message as a <code>String</code>. */ private static String get(String key, Object[] arguments) { try { ResourceBundle bundle = loadResourceBundle(); String formatString = bundle.getString(key); // No need for any formatting if no parameters are specified if (arguments == null || arguments.length == 0) { return formatString; } else { MessageFormat formatter = new MessageFormat(formatString); return formatter.format(arguments); } } catch (java.util.MissingResourceException mre) { throw new RuntimeException("No message resource found for message property " + key); } } /** * Retrieve the list of driver property names and driver property * descriptions from <code>Messages.properties</code> and populate * them into {@link Map} objects. * <p/> * The keys used to populate both <code>propertyMap</code> and * <code>descriptionMap</code> are guaranteed to match up as long * as the properties defined in <code>Messages.properties</code> * are well-formed. * * @param propertyMap The map of property names to be populated. * @param descriptionMap The map of property descriptions to be populated. */ static void loadDriverProperties(Map propertyMap, Map descriptionMap) { final ResourceBundle bundle = loadResourceBundle(); final Enumeration keys = bundle.getKeys(); while (keys.hasMoreElements()) { final String key = (String) keys.nextElement(); final String descriptionPrefix = "prop.desc."; final String propertyPrefix = "prop."; if (key.startsWith(descriptionPrefix)) { descriptionMap.put(key.substring(descriptionPrefix.length()), bundle.getString(key)); } else if (key.startsWith(propertyPrefix)) { propertyMap.put(key.substring(propertyPrefix.length()), bundle.getString(key)); } } } /** * Load the {@link #DEFAULT_RESOURCE} resource bundle. * * @return The resource bundle. */ private static ResourceBundle loadResourceBundle() { if (defaultResource == null) { defaultResource = ResourceBundle.getBundle(DEFAULT_RESOURCE); } return defaultResource; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -