001 /* 002 // $Id: //open/mondrian/src/main/mondrian/udf/InUdf.java#2 $ 003 // This software is subject to the terms of the Common Public License 004 // Agreement, available at the following URL: 005 // http://www.opensource.org/licenses/cpl.html. 006 // Copyright (C) 2006-2006 Julian Hyde and others 007 // All Rights Reserved. 008 // You must accept the terms of that agreement to use this software. 009 */ 010 package mondrian.udf; 011 012 import mondrian.olap.*; 013 import mondrian.olap.type.*; 014 import mondrian.spi.UserDefinedFunction; 015 import mondrian.util.*; 016 017 import java.util.*; 018 import java.util.regex.*; 019 020 /** 021 * User-defined function <code>IN</code>. 022 * 023 * @author schoi 024 * @version $Id: //open/mondrian/src/main/mondrian/udf/InUdf.java#2 $ 025 */ 026 public class InUdf implements UserDefinedFunction { 027 028 public Object execute(Evaluator evaluator, Argument[] arguments) { 029 030 Object arg0 = arguments[0].evaluate(evaluator); 031 List arg1 = (List) arguments[1].evaluate(evaluator); 032 033 for (Object anArg1 : arg1) { 034 if (((Member) arg0).getUniqueName().equals( 035 ((Member) anArg1).getUniqueName())) { 036 return Boolean.TRUE; 037 } 038 } 039 return Boolean.FALSE; 040 } 041 042 public String getDescription() { 043 return "Returns true if the member argument is contained in the set argument."; 044 } 045 046 public String getName() { 047 return "IN"; 048 } 049 050 public Type[] getParameterTypes() { 051 return new Type[] { 052 MemberType.Unknown, 053 new SetType(MemberType.Unknown) 054 }; 055 } 056 057 public String[] getReservedWords() { 058 // This function does not require any reserved words. 059 return null; 060 } 061 062 public Type getReturnType(Type[] parameterTypes) { 063 return new BooleanType(); 064 } 065 066 public Syntax getSyntax() { 067 return Syntax.Infix; 068 } 069 070 } 071 072 // End InUdf.java