Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
973:c30ada285d45 | 974:30c85cb33a50 |
---|---|
1 package de.intevation.flys.artifacts.services.meta; | 1 package de.intevation.flys.artifacts.services.meta; |
2 | 2 |
3 import java.util.List; | 3 import java.util.List; |
4 import java.util.Collection; | |
5 import java.util.Map; | |
4 import java.util.ArrayList; | 6 import java.util.ArrayList; |
5 | 7 |
6 import javax.xml.xpath.XPathFunctionResolver; | 8 import javax.xml.xpath.XPathFunctionResolver; |
7 import javax.xml.xpath.XPathFunction; | 9 import javax.xml.xpath.XPathFunction; |
8 import javax.xml.xpath.XPathFunctionException; | 10 import javax.xml.xpath.XPathFunctionException; |
34 | 36 |
35 static { | 37 static { |
36 FUNCTIONS.addFunction("contains", 2, new XPathFunction() { | 38 FUNCTIONS.addFunction("contains", 2, new XPathFunction() { |
37 @Override | 39 @Override |
38 public Object evaluate(List args) throws XPathFunctionException { | 40 public Object evaluate(List args) throws XPathFunctionException { |
41 Object haystack = args.get(0); | |
42 Object needle = args.get(1); | |
39 try { | 43 try { |
40 Object [] haystack = (Object [])args.get(0); | 44 if (haystack instanceof Collection) { |
41 Object needle = args.get(1); | 45 return Boolean.valueOf( |
42 for (Object straw: haystack) { | 46 ((Collection)haystack).contains(needle)); |
43 if (straw.equals(needle)) { | 47 } |
44 return Boolean.TRUE; | 48 |
49 if (haystack instanceof Map) { | |
50 return Boolean.valueOf( | |
51 ((Map)haystack).containsKey(needle)); | |
52 } | |
53 | |
54 if (haystack instanceof Object []) { | |
55 for (Object straw: (Object [])haystack) { | |
56 if (straw.equals(needle)) { | |
57 return Boolean.TRUE; | |
58 } | |
45 } | 59 } |
46 } | 60 } |
61 | |
47 return Boolean.FALSE; | 62 return Boolean.FALSE; |
48 } | 63 } |
49 catch (Exception e) { | 64 catch (Exception e) { |
50 throw new XPathFunctionException(e); | 65 throw new XPathFunctionException(e); |
51 } | 66 } |