All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.ginere.base.util.properties.GlobalFileProperties Maven / Gradle / Ivy

There is a newer version: 1.2.3
Show newest version
package eu.ginere.base.util.properties;

import eu.ginere.base.util.properties.FileProperties.PropertiesChangedLister;

import java.io.File;
import java.util.HashSet;
import java.util.MissingResourceException;

import org.apache.log4j.Logger;


/**
 * Esta clase lee las propiedades de un fichero, ver @see
 * {@link GlobalFileProperties#setInitFilePath(String)}. Todo cambio en el
 * fichero se actualiza la proxima vez que se consulta el valor de la propiedad.
 * No es necesario realanzar la maquina virtual java
 * 
 * @see {@link GlobalFileProperties#setInitFilePath(String)}
 * 
 * @author AV Mendo
 */
public class GlobalFileProperties {
	static Logger log = Logger.getLogger(GlobalFileProperties.class);
	static private FileProperties staticFileProperties = null;

	/**
	 * Returns the current FileProperties used by the GlobalFileProperties. If no defined returns null.
	 * @return
	 */
	public static FileProperties getFileProperties() {
		return staticFileProperties;
	}


	/**
	 * Utiliza el valor de la JVM GlobalFileProperties.class.getName()+".DefaultPath"
	 * para obtener el path de la propiedad
	 * 
	 * @param filePath
	 * @return
	 */
	public static String getPropertiesFilePath(String filePath) {
		// Verificamos is esta definida una propiedad Global para los ficheros de properties
		String defaultPath=System.getProperty(GlobalFileProperties.class.getName()+".DefaultPath");

		if (defaultPath!=null){
			return getFilePath(defaultPath,filePath);
		} else {
			return filePath;
		}
	}

	/**
	 * Define el fichero del cual se van a leer las propiedades.
	 * 
	 * @param filePath
	 */
	public static void setInitFilePath(String filePath) {
		filePath=getPropertiesFilePath(filePath);
		
		if (staticFileProperties == null) {
			staticFileProperties=new FileProperties(filePath);
		} else {
			staticFileProperties.setInitFilePath(filePath);
		}
	}

	/**
	 * Crea el path para el fichero a partir del path por defecto
	 * @param defaultPath
	 * @param filePath
	 * @return
	 */
	private static String getFilePath(String defaultPath, String filePath) {
//		int lastIndex=filePath.lastIndexOf(File.separator);
//		String fileName;
//		
//		if (lastIndex>=0){
//			fileName=filePath.substring(lastIndex+1,filePath.length());
//			
//		} else {
//			fileName=filePath;
//		}
		return defaultPath+File.separator+filePath;
	}

	static public String getStringValue(Class c, String propertyName) {
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",c.toString(),propertyName);
		} else {
			return staticFileProperties.getStringValue(c,propertyName);
		}
	}

	static public String getStringValue(Class c, String propertyName,
										String defaultValue) {
		if (staticFileProperties==null){
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			return defaultValue;
		} else {
			return staticFileProperties.getStringValue(c,propertyName,defaultValue);
		}
	}

	static public String[] getPropertyList(Class c, String propertyName) {
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",c.toString(),propertyName);
		} else {
			return staticFileProperties.getPropertyList(c,propertyName);
		}
	}

	static public int getIntValue(Class c, 
								  String propertyName, 
								  int defaultValue) {
		if (staticFileProperties==null){
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			return defaultValue;
		} else {
			return staticFileProperties.getIntValue(c,propertyName,defaultValue);
		}
	}

	
	static public double getDoubleValue(Class c, String propertyName,
			double defaultValue) {
		if (staticFileProperties == null) {
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			return defaultValue;
		} else {
			return staticFileProperties.getDoubleValue(c, propertyName,
					defaultValue);
		}
	}
	
	static public long getLongValue(Class c, String propertyName, long defaultValue) {
		if (staticFileProperties == null) {
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			return defaultValue;
		} else {
			return staticFileProperties.getLongValue(c, propertyName,
					defaultValue);
		}
	}
	
	static public boolean getBooleanValue(Class c, 
										  String propertyName,
										  boolean defaultValue) {
		if (staticFileProperties==null){
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			return defaultValue;
		} else {
			return staticFileProperties.getBooleanValue(c,propertyName,defaultValue);
		}
	}

	static public HashSet getPropertyMap(Class c, String propertyName) {
		if (staticFileProperties==null){
			log.warn("No se ha especifiacdo el fichero por defecto use setInitFilePath");
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",c.toString(),propertyName);
		} else {
			return staticFileProperties.getPropertyMap(c,propertyName);
		}
	}
	
	public static void subscriveToPropertiesChanged(PropertiesChangedLister listener){
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",GlobalFileProperties.class.getName(),"subscriveToPropertiesChanged");
		} else {
			staticFileProperties.subscriveToPropertiesChanged(listener);
		}
	}
	
	public static void removePropertiesChangedListener(PropertiesChangedLister listener){
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",GlobalFileProperties.class.getName(),"removePropertiesChangedListener");
		} else {
			staticFileProperties.removePropertiesChangedListener(listener);
		}
	}

	public static File getFildes(){
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",GlobalFileProperties.class.getName(),"removePropertiesChangedListener");
		} else {
			return staticFileProperties.getFildes();
		}
	}

	public static long getLastModified(){
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",GlobalFileProperties.class.getName(),"removePropertiesChangedListener");
		} else {
			return staticFileProperties.getLastModified();
		}
	}

	public String getFilePath(){
		if (staticFileProperties==null){
			throw new MissingResourceException("No se ha especifiacdo el fichero por defecto use setInitFilePath",GlobalFileProperties.class.getName(),"removePropertiesChangedListener");
		} else {
			return staticFileProperties.getFilePath();
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy