package org.jboss.windup.rules.apps.xml.condition;

import java.util.HashMap;
import java.util.Map;

public class XmlFileParameterMatchCache
{
    private Map<Integer, Map<String, String>> vars = new HashMap<>();

    public void addFrame(int frameID)
    {
        if (vars.containsKey(frameID))
        {
            vars.get(frameID).clear();
        }
        else
        {
            vars.put(frameID, new HashMap<String, String>());
        }
    }

    public boolean checkVariable(int frameID, String key, String value)
    {
        for (int i = frameID; i >= 0; i--)
        {
            Map<String, String> frameVariables = vars.get(i);
            if(frameVariables == null) {
                continue;
            }
            String existingValue = frameVariables.get(key);
            if (existingValue != null && !existingValue.equals(value))
            {
                return false;
            }
        }
        return true;
    }

    public void addVariable(int frameID, String key, String value)
    {
        vars.get(frameID).put(key, value);
    }

    public Map<String, String> getVariables()
    {
        Map<String, String> result = new HashMap<>();
        for (int i  : vars.keySet())
        {
            Map<String, String> existingVars = vars.get(i);
            for (Map.Entry<String, String> existingVar : existingVars.entrySet())
            {
                result.put(existingVar.getKey(), existingVar.getValue());
            }
        }
        return result;
    }
}
