org.viafirma.util.ConfigUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.viafirma.util.ConfigUtil.java

Source

/* Copyright (C) 2007 Flix Garca Borrego (borrego at gmail.com)
      
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 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
   Library General Public License for more details.
      
   You should have received a copy of the GNU Library 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 org.viafirma.util;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Mtodos de utilidad para recuperar los parametros de configuracin de la aplicacin.
 * 
 * @author Felix Garcia Borrego (borrego at gmail.com)
 */
public class ConfigUtil {
    private static ConfigUtil singleton;

    /**
     * Recupera una instancia del ConfigUtil.
     * @return
     */
    public static ConfigUtil getInstance() {
        if (singleton == null) {
            singleton = new ConfigUtil();
        }
        return singleton;
    }

    /**
     * Recupera el conjunto de propiedades que utiliza la aplicacin.
     * @param context
     * @return
     */
    public String readConfigProperty(String property) {
        Context initCtx;
        try {
            initCtx = new InitialContext();
            Context contextInit = (Context) initCtx.lookup("java:comp/env");
            // recuperamos ahora todos los parametros JNDI que estan en el raiz de la aplicacin 
            NamingEnumeration<NameClassPair> propiedadesJDNI = contextInit.list("");
            while (propiedadesJDNI.hasMoreElements()) {
                NameClassPair propiedad = propiedadesJDNI.nextElement();
                if (property.equalsIgnoreCase(propiedad.getName())) {
                    // propiedad encontrada
                    Object temp = contextInit.lookup(propiedad.getName());
                    if (temp instanceof String) {
                        String valor = (String) temp;
                        return valor;
                    }
                }
            }
        } catch (Exception e) {
            throw new ExceptionInInitializerError(
                    "No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible."
                            + e.getMessage());
        }
        log.fatal("No se pueden recuperar el parametro de configuracin " + property
                + " de configuracin. JNDI parece no estar disponible.");
        return null;
    }

    /**
     * Recupera el conjunto de propiedades que utiliza la aplicacin.
     * @param context
     * @return
     */
    public Properties readConfigPropertes() {
        Properties properties = new Properties();
        Context initCtx;
        try {
            initCtx = new InitialContext();
            Context contextInit = (Context) initCtx.lookup("java:comp/env");
            // recuperamos ahora todos los parametros JNDI que estan en el raiz de la aplicacin 
            NamingEnumeration<NameClassPair> propiedadesJDNI = contextInit.list("");
            while (propiedadesJDNI.hasMoreElements()) {
                NameClassPair propiedad = propiedadesJDNI.nextElement();
                Object temp = contextInit.lookup(propiedad.getName());
                if (temp instanceof String) {
                    String valor = (String) temp;
                    System.out.println("\t\t\t" + propiedad.getName() + "=" + valor);
                    properties.put(propiedad.getName(), valor);
                }
            }
        } catch (Exception e) {
            log.fatal("No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible.",
                    e);
            throw new ExceptionInInitializerError(
                    "No se pueden recuperar los parametros de configuracin. JNDI parece no estar disponible."
                            + e.getMessage());
        }
        return properties;
    }

    /**
     * Sistema de Logs.
     */
    private Log log = LogFactory.getLog(ConfigUtil.class);
}