Mercurial > dive4elements > river
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/StackFrames.java Fri Apr 29 15:10:44 2011 +0000 @@ -0,0 +1,47 @@ +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 :