/************************************************************************************** * Copyright (C) 2008 EsperTech, Inc. All rights reserved. * * http://esper.codehaus.org * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package com.espertech.esper.client.soda; import java.io.StringWriter; /** * Instance-of expression checks if an expression returns a certain type. */ public class InstanceOfExpression extends ExpressionBase { private String[] typeNames; private static final long serialVersionUID = 237629474193131995L; /** * Ctor. */ public InstanceOfExpression() { } /** * Ctor - for use to create an expression tree, without child expression. * @param typeNames is the fully-qualified class names or Java primitive type names or "string" */ public InstanceOfExpression(String[] typeNames) { this.typeNames = typeNames; } /** * Ctor. * @param expressionToCheck provides values to check the type of * @param typeName is one fully-qualified class names or Java primitive type names or "string" * @param moreTypes is additional optional fully-qualified class names or Java primitive type names or "string" */ public InstanceOfExpression(Expression expressionToCheck, String typeName, String ...moreTypes) { this.getChildren().add(expressionToCheck); if (moreTypes == null) { typeNames = new String[] {typeName}; } else { typeNames = new String[moreTypes.length + 1]; typeNames[0] = typeName; System.arraycopy(moreTypes, 0, this.typeNames, 1, moreTypes.length); } } public ExpressionPrecedenceEnum getPrecedence() { return ExpressionPrecedenceEnum.UNARY; } public void toPrecedenceFreeEPL(StringWriter writer) { writer.write("instanceof("); this.getChildren().get(0).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM); writer.write(", "); String delimiter = ""; for (String typeName : typeNames) { writer.write(delimiter); writer.write(typeName); delimiter = ", "; } writer.write(")"); } /** * Returns the types to compare to. * @return list of types to compare to */ public String[] getTypeNames() { return typeNames; } /** * Sets the types to compare to. * @param typeNames list of types to compare to */ public void setTypeNames(String[] typeNames) { this.typeNames = typeNames; } }