package tk.zielony.randomdata;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DataContext {

    private static final String LOCALE = "locale";
    public static final String NAME = "name";

    protected final List<Map<String, Object>> stack = new ArrayList<>();

    void save() {
        HashMap<String, Object> contextData = (HashMap<String, Object>) stack.get(stack.size() - 1);
        HashMap<String, Object> clone = (HashMap<String, Object>) contextData.clone();
        stack.add(clone);
    }

    public DataContext() {
        stack.add(new HashMap<>());
    }

    void restore() {
        stack.remove(stack.size() - 1);
    }

    public <Type> Type get(String key) {
        return (Type) stack.get(stack.size() - 1).get(key);
    }

    public <Type> void set(String key, Type value) {
        stack.get(stack.size() - 1).put(key, value);
    }
}