Clover coverage report - ATP library for Java - 3.6.4-stable-060214
Coverage timestamp: Вт фев 14 2006 13:45:22 MSK
file stats: LOC: 175   Methods: 7
NCLOC: 66   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ConstantStringManager.java 0% 0% 0% 0%
coverage
 1    /*
 2    * Copyright (c) 2001-2004,
 3    * RedVerst Group, ISP RAS http://www.ispras.ru
 4    * All rights reserved.
 5    *
 6    * Redistribution and use in source and binary forms, with or without
 7    * modification, are permitted provided that the following conditions are met:
 8    *
 9    * 1. Redistributions of source code must retain the above copyright notice, this
 10    * list of conditions and the following disclaimer.
 11    *
 12    * 2. Redistributions in binary form must reproduce the above copyright notice,
 13    * this list of conditions and the following disclaimer in the documentation
 14    * and/or other materials provided with the distribution.
 15    *
 16    * 3. The names "ATP", "TreeDL", "RedVerst", "ISP RAS"
 17    * may not be used to endorse or promote products derived from this software
 18    * without specific prior written permission.
 19    *
 20    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 21    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 22    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 23    * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 24    * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 25    * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 26    * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 27    * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 28    * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 29    * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 30    */
 31   
 32    package com.unitesk.atp.text.localize;
 33   
 34    import java.util.HashMap;
 35    import java.util.Locale;
 36    import java.util.Map;
 37    import java.util.MissingResourceException;
 38    import java.util.ResourceBundle;
 39   
 40    /**
 41    * The default implementation of localized strings manager.
 42    * Associates object classes and bundles of localized messages.
 43    * That is for all objects of some class localized strings with the same names are equal.
 44    *
 45    * @author <A href="mailto:demakov@ispras.ru">Alexey Demakov</A>
 46    * @version $Id: ConstantStringManager.java,v 1.4 2005/05/23 05:49:37 all-x Exp $
 47    */
 48    public class ConstantStringManager implements StringManager
 49    {
 50    /**
 51    * Creates new localized strings manager using default locale
 52    * and class loader of this class.
 53    */
 54  0 public ConstantStringManager()
 55    {
 56  0 this.locale = Locale.getDefault();
 57  0 this.classLoader = getClass().getClassLoader();
 58    }
 59   
 60    /**
 61    * Creates new localized strings manager using the specified locale
 62    * and class loader of this class.
 63    *
 64    * @param locale The locale to be used by this manager.
 65    */
 66  0 public ConstantStringManager( Locale locale )
 67    {
 68  0 this.locale = locale;
 69  0 this.classLoader = getClass().getClassLoader();
 70    }
 71   
 72    /**
 73    * Creates new localized strings manager with the specified locale and class loader.
 74    *
 75    * @param locale The locale to be used by this manager.
 76    * @param classLoader The class loader to be used by this maanger.
 77    */
 78  0 public ConstantStringManager( Locale locale, ClassLoader classLoader )
 79    {
 80  0 this.locale = locale;
 81  0 this.classLoader = classLoader;
 82    }
 83   
 84    /**
 85    * Loads bundle of localized strings for the specified class.
 86    * <P>This implementation uses
 87    * {@link ResourceBundle#getBundle(String,Locale,ClassLoader)
 88    * ResourceBundle.getBundle( cls.getName(), locale, classLoader)}
 89    * to obtain bundle. <code>locale</code> and <code>classLoader</code>
 90    * are specified in constructor of this manager.
 91    * <P>Inheritors can override this method to change a way of bundle loading.
 92    *
 93    * @param cls The specified class.
 94    * @return Bundle for the specified class or <code>null</code> if it is not found.
 95    */
 96  0 protected ResourceBundle getBundle( Class cls )
 97    {
 98  0 try
 99    {
 100  0 return ResourceBundle.getBundle( cls.getName(), locale, classLoader );
 101    }
 102    catch( MissingResourceException e )
 103    {
 104  0 return null;
 105    }
 106    }
 107   
 108    /**
 109    * Get localized string for the specified class.
 110    * The first time this method is called for the specified class
 111    * it uses {@link #getBundle(Class) getBundle( cls )} to obtain resource bundle.
 112    * Then {@link ResourceBundle#getString(String) gets string} <code>name</code> from this bundle
 113    * and customize it with respect to <code>obj</code>.
 114    *
 115    * @param cls The specified class.
 116    * @param name The name of localized string for this class.
 117    * @return Localized string or <code>null</code> if it is not found.
 118    */
 119  0 public String getString( Class cls, String name )
 120    {
 121  0 String className = cls.getName();
 122  0 ResourceBundle rb = (ResourceBundle)class_to_bundle.get( className );
 123  0 if( rb == null )
 124    {
 125  0 rb = getBundle( cls );
 126  0 if( rb == null ) return null;
 127  0 class_to_bundle.put( className, rb );
 128    }
 129  0 try
 130    {
 131  0 return rb.getString( name );
 132    }
 133    catch( MissingResourceException e )
 134    {
 135  0 return null;
 136    }
 137    }
 138   
 139    /**
 140    * Get localized string for the specified object.
 141    * It calls {@link #getString(Class,String) getString( obj.getClass(), name )}.
 142    * This string manager is called 'constant' because it returns the same string
 143    * for all objects of the same class.
 144    *
 145    * @param name The name of localized string for this object.
 146    * @param obj The specified object.
 147    * @return Localized string or <code>null</code> if it is not found.
 148    */
 149  0 public String getString( String name, Object obj )
 150    {
 151  0 return getString( obj.getClass(), name );
 152    }
 153   
 154    /**
 155    * Get localized string for the specified class and customize it for
 156    * the specified object.
 157    * It calls {@link #getString(Class,String) getString( cls, name )}.
 158    * This string manager is called 'constant' because it returns the same string
 159    * for all objects of the same class.
 160    *
 161    * @param cls The specified class.
 162    * @param name The name of localized string for this class.
 163    * @param obj Not used.
 164    * @return Localized string or <code>null</code> if it is not found.
 165    */
 166  0 public String getString( Class cls, String name, Object obj )
 167    {
 168  0 return getString( cls, name );
 169    }
 170   
 171    protected Locale locale;
 172    protected ClassLoader classLoader;
 173    protected Map/*String,ResourceBundle*/ class_to_bundle
 174    = new HashMap/*String,ResourceBundle*/();
 175    }