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 }

http://dive4elements.wald.intevation.org