/*
* *************************************************************************************
* 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.Serializable;
import java.io.StringWriter;
/**
* Object model of a data flow operator parameter.
*/
public class DataFlowOperatorParameter implements Serializable {
private static final long serialVersionUID = 6902224639315413025L;
private String parameterName;
private Object parameterValue;
/**
* Ctor.
* @param parameterName parameter name
* @param parameterValue parameter value
*/
public DataFlowOperatorParameter(String parameterName, Object parameterValue) {
this.parameterName = parameterName;
this.parameterValue = parameterValue;
}
/**
* Ctor.
*/
public DataFlowOperatorParameter() {
}
/**
* Get the parameter name.
* @return parameter name
*/
public String getParameterName() {
return parameterName;
}
/**
* Set the parameter name.
* @param parameterName parameter name
*/
public void setParameterName(String parameterName) {
this.parameterName = parameterName;
}
/**
* Get the parameter value, which can be either a constant, an {@link Expression} or a JSON object
* or a {@link EPStatementObjectModel}.
* @return parameter value
*/
public Object getParameterValue() {
return parameterValue;
}
/**
* Set the parameter value, which can be either a constant, an {@link Expression} or a JSON object
* or a {@link EPStatementObjectModel}.
* @param parameterValue to set
*/
public void setParameterValue(Object parameterValue) {
this.parameterValue = parameterValue;
}
/**
* Render parameter.
* @param writer to write to
*/
public void toEpl(StringWriter writer) {
writer.write(parameterName);
writer.write(": ");
renderValue(writer, parameterValue);
}
/**
* Render prameter.
* @param writer to render to
* @param parameterValue value
*/
public static void renderValue(StringWriter writer, Object parameterValue) {
if (parameterValue instanceof EPStatementObjectModel) {
writer.write("(");
((EPStatementObjectModel) parameterValue).toEPL(writer);
writer.write(")");
}
else if (parameterValue instanceof Expression) {
((Expression) parameterValue).toEPL(writer, ExpressionPrecedenceEnum.MINIMUM);
}
else if (parameterValue == null) {
writer.write("null");
}
else if (parameterValue instanceof String) {
writer.write("\"");
writer.write(parameterValue.toString());
writer.write("\"");
}
else {
writer.write(parameterValue.toString());
}
}
}