/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * 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.Serializable; import java.io.StringWriter; import java.util.List; /** * Script-expression is external scripting language expression such as JavaScript, Groovy or MVEL, for example. */ public class ScriptExpression implements Serializable { private static final long serialVersionUID = 3264067514571908258L; private String name; private List<String> parameterNames; private String expressionText; private String optionalReturnType; private String optionalEventTypeName; private String optionalDialect; /** * Ctor. */ public ScriptExpression() { } /** * Ctor. * * @param name script name * @param parameterNames parameter list * @param expressionText script text * @param optionalReturnType return type * @param optionalDialect dialect * @param optionalEventTypeName optional event type name */ public ScriptExpression(String name, List<String> parameterNames, String expressionText, String optionalReturnType, String optionalDialect, String optionalEventTypeName) { this.name = name; this.parameterNames = parameterNames; this.expressionText = expressionText; this.optionalReturnType = optionalReturnType; this.optionalDialect = optionalDialect; this.optionalEventTypeName = optionalEventTypeName; } /** * Ctor. * * @param name script name * @param parameterNames parameter list * @param expressionText script text * @param optionalReturnType return type * @param optionalDialect dialect */ public ScriptExpression(String name, List<String> parameterNames, String expressionText, String optionalReturnType, String optionalDialect) { this(name, parameterNames, expressionText, optionalReturnType, optionalDialect, null); } /** * Returns the script name. * * @return script name */ public String getName() { return name; } /** * Sets the script name. * * @param name script name to set */ public void setName(String name) { this.name = name; } /** * Returns the return type, if any is specified. * * @return return type */ public String getOptionalReturnType() { return optionalReturnType; } /** * Sets the return type, if any is specified. * * @param optionalReturnType return type */ public void setOptionalReturnType(String optionalReturnType) { this.optionalReturnType = optionalReturnType; } /** * Returns a dialect name, or null if none is defined and the configured default applies * * @return dialect name */ public String getOptionalDialect() { return optionalDialect; } /** * Sets a dialect name, or null if none is defined and the configured default applies * * @param optionalDialect dialect name */ public void setOptionalDialect(String optionalDialect) { this.optionalDialect = optionalDialect; } /** * Returns the script body. * * @return script body */ public String getExpressionText() { return expressionText; } /** * Sets the script body. * * @param expressionText script body */ public void setExpressionText(String expressionText) { this.expressionText = expressionText; } /** * Returns the lambda expression parameters. * * @return lambda expression parameters */ public List<String> getParameterNames() { return parameterNames; } /** * Sets the lambda expression parameters. * * @param parameterNames lambda expression parameters */ public void setParameterNames(List<String> parameterNames) { this.parameterNames = parameterNames; } /** * Returns the optional event type name. * @return type name */ public String getOptionalEventTypeName() { return optionalEventTypeName; } /** * Sets the optional event type name. * @param optionalEventTypeName name */ public void setOptionalEventTypeName(String optionalEventTypeName) { this.optionalEventTypeName = optionalEventTypeName; } /** * Print. * * @param writer to print to * @param scripts scripts * @param formatter for newline-whitespace formatting */ public static void toEPL(StringWriter writer, List<ScriptExpression> scripts, EPStatementFormatter formatter) { if ((scripts == null) || (scripts.isEmpty())) { return; } for (ScriptExpression part : scripts) { if (part.getName() == null) { continue; } formatter.beginExpressionDecl(writer); part.toEPL(writer); } } /** * Print part. * * @param writer to write to */ public void toEPL(StringWriter writer) { writer.append("expression "); if (optionalReturnType != null) { writer.append(optionalReturnType); writer.append(" "); } if (optionalEventTypeName != null) { writer.append("@type("); writer.append(optionalEventTypeName); writer.append(") "); } if (optionalDialect != null && optionalDialect.trim().length() != 0) { writer.append(optionalDialect); writer.append(":"); } writer.append(name); writer.append("("); if (parameterNames != null && !parameterNames.isEmpty()) { String delimiter = ""; for (String name : parameterNames) { writer.append(delimiter); writer.append(name); delimiter = ","; } } writer.append(")"); writer.append(" ["); writer.append(expressionText); writer.append("]"); } }