view flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/StackFrames.java @ 372:fc3cf0ef777e

Added meta data service. flys-artifacts/trunk@1781 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 29 Apr 2011 15:10:44 +0000
parents
children 7c018f466d6d
line wrap: on
line source
package de.intevation.flys.artifacts.services.meta;

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

public class StackFrames
{
    protected List<Map<String, Object>> frames;

    public StackFrames() {
        frames = new ArrayList<Map<String, Object>>();
    }

    public void enter() {
        frames.add(new HashMap<String, Object>());
    }

    public void leave() {
        frames.remove(frames.size()-1);
    }

    public void put(String [] keys, Object [] values) {
        Map<String, Object> top = frames.get(frames.size()-1);
        for (int i = 0; i < keys.length; ++i) {
            top.put(keys[i], values[i]);
        }
    }

    public Object get(String key) {
        return get(key, null);
    }

    public Object get(String key, Object def) {

        for (int i = frames.size()-1; i >= 0; --i) {
            Map<String, Object> frame = frames.get(i);
            if (frame.containsKey(key)) {
                return frame.get(key);
            }
        }

        return def;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org