Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/FunctionResolver.java @ 974:30c85cb33a50
meta data service: made artifact optional and allow passing extra parameters.
flys-artifacts/trunk@2400 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 25 Jul 2011 11:05:33 +0000 |
parents | a2b20ed3d3b4 |
children | d830c398c8f4 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/FunctionResolver.java Sat Jul 23 18:47:08 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/meta/FunctionResolver.java Mon Jul 25 11:05:33 2011 +0000 @@ -1,6 +1,8 @@ package de.intevation.flys.artifacts.services.meta; import java.util.List; +import java.util.Collection; +import java.util.Map; import java.util.ArrayList; import javax.xml.xpath.XPathFunctionResolver; @@ -36,14 +38,27 @@ FUNCTIONS.addFunction("contains", 2, new XPathFunction() { @Override public Object evaluate(List args) throws XPathFunctionException { + Object haystack = args.get(0); + Object needle = args.get(1); try { - Object [] haystack = (Object [])args.get(0); - Object needle = args.get(1); - for (Object straw: haystack) { - if (straw.equals(needle)) { - return Boolean.TRUE; + if (haystack instanceof Collection) { + return Boolean.valueOf( + ((Collection)haystack).contains(needle)); + } + + if (haystack instanceof Map) { + return Boolean.valueOf( + ((Map)haystack).containsKey(needle)); + } + + if (haystack instanceof Object []) { + for (Object straw: (Object [])haystack) { + if (straw.equals(needle)) { + return Boolean.TRUE; + } } } + return Boolean.FALSE; } catch (Exception e) {