package com.eactive.eai.transformer.engine;

// util imports:
import java.util.HashMap;
import java.util.Map;





public class TransformOption {
    /**
     * 변환 결과 메시지를 제공할 경우 참조되며 버퍼를 사용할 것인지 결정할 수 있는 boolean값.
     * 만약 버퍼를 사용 안했을 경우 메공된 변환 결과 메시지가 비정상적으로 변경될 경우가 있음.
     * 기본값은 true.
     */
    public static final String OPTION_BUFFERED = "BUFFERED";

    /**
     * 레이이웃에 정의된 기본값 사용하여 결과 메시지 생성시 적용할 것인지 결정하는 boolean값.
     * 기본값은 false.
     */
    public static final String OPTION_USE_DEFAULT = "USE_DEFAULT";
    public static final TransformOption DEFAULT_OPTION;

    static {
        DEFAULT_OPTION = new TransformOption();
        DEFAULT_OPTION.setBoolean(OPTION_BUFFERED, true);
        DEFAULT_OPTION.setBoolean(OPTION_USE_DEFAULT, false);
    }

    private Map optionMap;

    public TransformOption() {
        optionMap = new HashMap();
    }

    public void setString(String key, String value) {
        optionMap.put(key, value);
    }

    public void setInt(String key, int value) {
        optionMap.put(key, new Integer(value));
    }

    public void setBoolean(String key, boolean value) {
        optionMap.put(key, new Boolean(value));
    }

    public String getString(String key) {
        return (String) optionMap.get(key);
    }

    /**
     * 값이 없을 경우는 0
     */
    public int getInt(String key) {
    	if(optionMap.get(key) == null) {
    		return 0;
    	}
    	else {
	        return (optionMap.containsKey(key)
	        ? ((Integer) optionMap.get(key)).intValue() : 0);
    	}
    }

    /**
     * 값이 없을 경우는 false.
     */
    public boolean getBoolean(String key) {
//        return (optionMap.containsKey(key)? ((Boolean) optionMap.get(key)).booleanValue() : false);
    	Object obj = optionMap.get(key);
    	if(obj == null) {
    		return false;
    	}
    	else {
    		return ((Boolean) optionMap.get(key)).booleanValue();
    	}
    }
}
