Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/01/2013, 03:14
jonasgv
 
Fecha de Ingreso: julio-2012
Ubicación: Madrid
Mensajes: 95
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: Problema con Properties

Cita:
Iniciado por Xerelo Ver Mensaje
Lo que necesitas es aplicar el patrón singleton

http://es.wikipedia.org/wiki/Singleton

Hay varias maneras de hacerlo, una muy sencilla


Código Javascript:
Ver original
  1. public class Config {
  2.  
  3. private static Properties props;
  4.  
  5. public static String getProperty(String property){
  6.  
  7. if(props==null) {
  8. Creas el objeto properties y lo referencias con props
  9. }
  10.  
  11. return props.getProperty(property);
  12.  
  13.  
  14. }

Evidentemente tienes que añadir los controles de errores, y para llamarlo desde cualquier sitio sólo tienes que poner Config.getProperty(nombrePropiedad)
Al final, me ha quedado la cosa así:

Código PHP:
public class ArchivoProperties {
    
    private static 
Properties properties;
    
    
// El constructor privado no permite que se genere un constructor por defecto
    // (con mismo modificador de acceso que la definición de la clase) 
    
private ArchivoProperties(){
        throw new 
AssertionError("No se permite crear ejemplares de esta clase.");    
    }
    
    public static 
String getProperty(String property){
        if(
properties == null) {
            
properties = new Properties();
            try{
                
properties.load(new FileInputStream("datos.properties"));
            }catch(
IOException ex) {
                
ex.printStackTrace();
            }
        }
        return 
properties.getProperty(property);
    }

Y no me da error al "inicializar" los mensajes.

Pero me vuelve a plantear la duda:

Lo que me gustaría es que nada mas arrancar mi aplicación, lo primero que hiciese ésta es buscar el archivo Properties (y si no lo encuentra, dar un error y terminar porque la aplicación no puede funcionar sin este archivo)
Porque según lo que acabo de hacer, hasta que no se llama al método getProperty no comprueba (ni crea) dicho objeto Properties

¿Cómo haría eso?