/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.xtec.jclic.report.servlet;
import edu.xtec.jclic.report.rp.ReportsRequestProcessor;
import java.util.Enumeration;
import java.util.Properties;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* Web application lifecycle listener.
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.09
*/
public class ContextParamsReader implements ServletContextListener {
public static final String PREFIX_ENV_KEY="PREFIX_ENV_KEY";
public static final String PREFIX_KEY="PREFIX_KEY";
public static final String PREFIX_SEP="_";
public void contextInitialized(ServletContextEvent sce) {
javax.servlet.ServletContext sc=sce.getServletContext();
try{
// Read defaut values
ReportsRequestProcessor.loadProperties(null);
Properties prop=ReportsRequestProcessor.getProperties();
String prefixKey=null;
// Try to find the name of the environment variable containing
// the prefix key
String prefixEnvKey=sc.getInitParameter(PREFIX_ENV_KEY);
if(prefixEnvKey==null)
prefixEnvKey=prop.getProperty(PREFIX_ENV_KEY);
if(prefixEnvKey!=null)
prefixKey=System.getenv(prefixEnvKey);
// No environment variable set, then try to find the prefix key
// directly
if(prefixKey==null){
prefixKey=sc.getInitParameter(PREFIX_KEY);
if(prefixKey==null)
prefixKey=prop.getProperty(PREFIX_KEY);
}
if(prefixKey!=null && !prefixKey.endsWith(PREFIX_SEP))
prefixKey=prefixKey+PREFIX_SEP;
// Read properties stored in web.xml
Enumeration en=sc.getInitParameterNames();
while(en.hasMoreElements()){
String key=(String)en.nextElement();
if(prefixKey==null || key.startsWith(prefixKey) || key.indexOf(PREFIX_SEP)<0){
String value=sc.getInitParameter(key);
if(value!=null && value.length()>0){
String realKey =
prefixKey==null || key.indexOf(PREFIX_SEP)<0
? key
: key.substring(prefixKey.length());
prop.put(realKey, value);
//System.out.println("Clau: "+realKey+" - Valor: "+value);
}
}
}
// Values stored in local properties file have always preference
ReportsRequestProcessor.loadLocalProperties(null);
} catch(Exception ex){
System.err.println("Error reading initial parameters: "+ex);
}
}
public void contextDestroyed(ServletContextEvent sce) {
}
}