/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale 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 3 of the
* License, or any later version.
*
* Squale 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 General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.squaleweb.resources;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.Globals;
import org.squale.squalecommon.util.messages.BaseMessages;
/**
* @author m400832
* @version 1.0
*/
public class WebMessages
extends BaseMessages
{
/**
* @param pBundleName le nom du bundle
*/
private WebMessages( String pBundleName )
{
super( pBundleName );
}
/**
* Logger.
*/
private static final Log LOGGER = LogFactory.getLog( WebMessages.class );
/**
* Chemin du fichier de propri�t�s.
*/
private static final String BUNDLE_NAME = "org.squale.squaleweb.resources.ApplicationResources";
/**
* Instance de ResourceBudle utilis�e par defaut
*/
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME, new Locale( "" ) );
/**
* Retourne la cha�ne de caract�re identifi�e par la cl�.
*
* @param pKey nom de la cl�.
* @return la cha�ne associ�e.
*/
public static String getString( String pKey )
{
String value = null;
try
{
value = RESOURCE_BUNDLE.getString( pKey );
}
catch ( MissingResourceException e )
{
LOGGER.warn( e, e );
value = pKey;
}
return value;
}
/**
* Retourne la cha�ne de caract�re identifi�e par la cl�.
*
* @param pLocale locale
* @param pKey nom de la cl�.
* @return la cha�ne associ�e.
*/
public static String getString( Locale pLocale, String pKey )
{
String value = null;
try
{
// On modifie la locale par d�faut pour r�cup�rer
// notre fichier properties par d�faut (ApplicationResources.properties) dans le cas
// o� il n'y a pas de ressource pour la locale pass�e en param�tre
Locale.setDefault( new Locale( "" ) );
ResourceBundle bundle = ResourceBundle.getBundle( BUNDLE_NAME, pLocale );
value = bundle.getString( pKey );
if ( value == null )
{
value = DataBaseMessages.getMessage( pLocale, pKey );
}
}
catch ( MissingResourceException e )
{
value = DataBaseMessages.getMessage( pLocale, pKey );
}
return value;
}
/**
* Retourne True si la cl� demand�e est pr�sente et si elle contient bien un message
*
* @param pKey nom de la cl�
* @return true si un message est pr�sent
*/
public static Boolean existString( String pKey )
{
Boolean valid = false;
String value=null;
Locale defaut = new Locale ("");
Locale.setDefault( defaut );
ResourceBundle bundle = ResourceBundle.getBundle( BUNDLE_NAME, defaut );
try
{
value = bundle.getString(pKey);
if ( value==null )
{
value = DataBaseMessages.getMessage( defaut , pKey);
}
}
catch ( MissingResourceException e )
{
valid=false;
}
if (value!=null)
{
valid=true;
}
return valid;
}
/**
* Retourne la cha�ne de caract�re identifi�e par la cl�.
*
* @param pRequest requ�te
* @param pKey nom de la cl�.
* @return la cha�ne associ�e.
*/
public static String getString( HttpServletRequest pRequest, String pKey )
{
String value = null;
Locale locale = (Locale) pRequest.getSession().getAttribute( Globals.LOCALE_KEY );
if ( locale == null )
{
locale = Locale.getDefault();
}
return getString( locale, pKey );
}
/**
* @param pKey la cl�
* @return le r�sultat apr�s conversion dans le int associ�
*/
public static int getInt( String pKey )
{
return Integer.decode( getString( pKey ) ).intValue();
}
/**
* @param pKey la cl�
* @return le r�sultat apr�s conversion dans le bool�en associ�
*/
public static boolean getBool( String pKey )
{
return Boolean.valueOf( getString( pKey ) ).booleanValue();
}
/**
* @param pKey la cl�
* @return le r�sultat apr�s conversion dans le double associ�
*/
public static double getDouble( String pKey )
{
return Double.parseDouble( getString( pKey ) );
}
/**
* @param pKey la cl�
* @param pValues les param�tres du message
* @return le texte
*/
public static Object getString( String pKey, String[] pValues )
{
MessageFormat format = new MessageFormat( getString( pKey ) );
return format.format( pValues );
}
/**
* @param pLocale la locale
* @param pKey la cl�
* @param pValues les param�tres du message
* @return le texte
*/
public static Object getString( Locale pLocale, String pKey, String[] pValues )
{
MessageFormat format = new MessageFormat( getString( pLocale, pKey ) );
return format.format( pValues );
}
}