package com.mossle.bpm.support; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.activiti.engine.delegate.VariableScope; public class MapVariableScope implements VariableScope { private Map<String, Object> map = new HashMap<String, Object>(); public Map<String, Object> getVariables() { return map; } public Map<String, Object> getVariablesLocal() { return map; } public Object getVariable(String variableName) { return map.get(variableName); } public <T> T getVariable(String variableName, Class<T> variableType) { return (T) map.get(variableName); } public Object getVariableLocal(String variableName) { return map.get(variableName); } public <T> T getVariableLocal(String variableName, Class<T> variableType) { return (T) map.get(variableName); } public Set<String> getVariableNames() { return map.keySet(); } public Set<String> getVariableNamesLocal() { return map.keySet(); } public void setVariable(String variableName, Object value) { map.put(variableName, value); } public Object setVariableLocal(String variableName, Object value) { map.put(variableName, value); return value; } public void setVariables(Map<String, ? extends Object> variables) { map.putAll(variables); } public void setVariablesLocal(Map<String, ? extends Object> variables) { map.putAll(variables); } public boolean hasVariables() { return !map.isEmpty(); } public boolean hasVariablesLocal() { return !map.isEmpty(); } public boolean hasVariable(String variableName) { return map.containsKey(variableName); } public boolean hasVariableLocal(String variableName) { return map.containsKey(variableName); } public void createVariableLocal(String variableName, Object value) { map.put(variableName, value); } public void removeVariable(String variableName) { map.remove(variableName); } public void removeVariableLocal(String variableName) { map.remove(variableName); } public void removeVariables(Collection<String> variableNames) { for (String variableName : variableNames) { map.remove(variableName); } } public void removeVariablesLocal(Collection<String> variableNames) { for (String variableName : variableNames) { map.remove(variableName); } } public void removeVariables() { map.clear(); } public void removeVariablesLocal() { map.clear(); } // ~ public void setVariable(String variableName, Object value, boolean fetchAllVariables) { map.put(variableName, value); } public Object setVariableLocal(String variableName, Object value, boolean fetchAllVariables) { map.put(variableName, value); return value; } public Object getVariable(String variableName, boolean fetchAllVariables) { return map.get(variableName); } public Object getVariableLocal(String variableName, boolean fetchAllVariables) { return map.get(variableName); } public Map<String, Object> getVariables(Collection<String> variableNames) { Map<String, Object> result = new HashMap<String, Object>(); for (String variableName : variableNames) { result.put(variableName, map.get(variableName)); } return result; } public Map<String, Object> getVariables(Collection<String> variableNames, boolean fetchAllVariables) { Map<String, Object> result = new HashMap<String, Object>(); for (String variableName : variableNames) { result.put(variableName, map.get(variableName)); } return result; } public Map<String, Object> getVariablesLocal( Collection<String> variableNames) { Map<String, Object> result = new HashMap<String, Object>(); for (String variableName : variableNames) { result.put(variableName, map.get(variableName)); } return result; } public Map<String, Object> getVariablesLocal( Collection<String> variableNames, boolean fetchAllVariables) { Map<String, Object> result = new HashMap<String, Object>(); for (String variableName : variableNames) { result.put(variableName, map.get(variableName)); } return result; } }