/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gses.activiti.forms.values; import org.activiti.engine.delegate.VariableScope; import ru.codeinside.gses.service.Some; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; final public class HistoryScope implements VariableScope { final Set<String> usedVariables = new HashSet<String>(); private final Map<String, String> archiveValues; public HistoryScope(Map<String, String> archiveValues) { this.archiveValues = archiveValues; } public Some<String> getUsedVariable() { if (usedVariables.isEmpty()) { return Some.empty(); } if (usedVariables.size() > 1) { return Some.of(null); } return Some.of(usedVariables.iterator().next()); } @Override public Map<String, Object> getVariables() { usedVariables.addAll(archiveValues.keySet()); return new HashMap<String, Object>(archiveValues); } @Override public void setVariables(Map<String, ?> variables) { throw new UnsupportedOperationException(); } @Override public Map<String, Object> getVariablesLocal() { throw new UnsupportedOperationException(); } @Override public void setVariablesLocal(Map<String, ?> variables) { throw new UnsupportedOperationException(); } @Override public Object getVariable(String variableName) { usedVariables.add(variableName); return archiveValues.get(variableName); } @Override public Object getVariableLocal(Object variableName) { throw new UnsupportedOperationException(); } @Override public Set<String> getVariableNames() { return archiveValues.keySet(); } @Override public Set<String> getVariableNamesLocal() { throw new UnsupportedOperationException(); } @Override public void setVariable(String variableName, Object value) { throw new UnsupportedOperationException(); } @Override public Object setVariableLocal(String variableName, Object value) { throw new UnsupportedOperationException(); } @Override public boolean hasVariables() { return !archiveValues.isEmpty(); } @Override public boolean hasVariablesLocal() { throw new UnsupportedOperationException(); } @Override public boolean hasVariable(String variableName) { return archiveValues.containsKey(variableName); } @Override public boolean hasVariableLocal(String variableName) { throw new UnsupportedOperationException(); } @Override public void createVariableLocal(String variableName, Object value) { throw new UnsupportedOperationException(); } @Override public void createVariablesLocal(Map<String, ?> variables) { throw new UnsupportedOperationException(); } @Override public void removeVariable(String variableName) { throw new UnsupportedOperationException(); } @Override public void removeVariableLocal(String variableName) { throw new UnsupportedOperationException(); } @Override public void removeVariables() { throw new UnsupportedOperationException(); } @Override public void removeVariablesLocal() { throw new UnsupportedOperationException(); } }