/*
* Created on Jul 7, 2003
*
* To change this generated comment go to
* Window>Preferences>Java>Code Generation>Code Template
*/
package com.idega.block.dataquery.presentation;
import java.io.InvalidClassException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import com.idega.presentation.IWContext;
/**
* <p>Title: idegaWeb</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: idega Software</p>
* @author aron
* @version 1.0
*/
public class ParameterEngine {
private String identifier;
private HashMap parameters;
/**
*
*/
public ParameterEngine(String identifier) {
this.identifier = identifier;
this.parameters = new HashMap();
}
public void parse(IWContext iwc) throws InvalidClassException{
Iterator iter = this.parameters.values().iterator();
Parameter prm;
String key;
while (iter.hasNext()) {
prm = (Parameter) iter.next();
key = getPrefixedKeyName(prm.getName());
if (iwc.isParameterSet(key)) {
String value = iwc.getParameter(key);
setObjecValue(prm,value);
}
else{
prm.setAsDefaultValue();
}
}
}
private void setObjecValue(Parameter prm, String value) throws InvalidClassException{
String className = prm.getType().getName();
if (className.equals(Integer.class.getName())) {
prm.setValue(new Integer(value));
}
else if (className.equals(Date.class.getName())) {
prm.setValue(new Date(value));
}
else if(className.equals(String.class.getName())){
prm.setValue(value);
}
else if(className.equals(Boolean.class.getName())){
prm.setValue(new Boolean(value));
}
else if(className.equals(Float.class.getName())){
prm.setValue(new Float(value));
}
else if(className.equals(Double.class.getName())){
prm.setValue(new Double(value));
}
else {
throw new InvalidClassException(className);
}
}
public Object getParameterValue(String key) {
if (this.parameters.containsKey(key)) {
return ((Parameter) this.parameters.get(key)).getValue();
}
return null;
}
private String getPrefixedKeyName(String key) {
return this.identifier + "_" + key;
}
public Parameter createParameter(String name, Class type,Object defaultValue){
Parameter prm =new Parameter(name,null,defaultValue,type);
this.parameters.put(name,prm);
return prm;
}
public Parameter createParameter(String name,Class type){
return createParameter(name,type,null);
}
}