use of org.geotools.filter.function.string.ConcatenateFunction in project sldeditor by robward-scisys.
the class ExpressionNodeTest method testSetExpression.
/**
* Test method for
* {@link com.sldeditor.filter.v2.expression.ExpressionNode#setExpression(org.opengis.filter.expression.Expression)}.
*/
@Test
public void testSetExpression() {
FilterFactory ff = CommonFactoryFinder.getFilterFactory();
ExpressionNode node = new ExpressionNode();
// Test literal expression
String expressionString = "Literalexpression";
Expression literal = ff.literal(expressionString);
node.setExpression(literal);
String expected = Localisation.getField(ExpressionPanelv2.class, "ExpressionPanelv2.literal") + " " + expressionString;
String actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test attribute expression
String propertyName = "testproperty";
Expression attribute = ff.property(propertyName);
node.setExpression(attribute);
expected = Localisation.getField(ExpressionPanelv2.class, "ExpressionPanelv2.attribute") + " [" + attribute + "]";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test attribute expression
literal = ff.literal(ff.property(propertyName));
node.setExpression(literal);
expected = Localisation.getField(ExpressionPanelv2.class, "ExpressionPanelv2.attribute") + " [" + attribute + "]";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test math expression
Expression maths = ff.multiply(ff.literal(6), ff.literal(7));
node.setExpression(maths);
expected = "*";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test function
FunctionImpl function = new ConcatenateFunction();
List<Expression> params = new ArrayList<Expression>();
params.add(ff.literal("world"));
params.add(ff.literal("dog"));
function.setParameters(params);
node.setExpression(function);
expected = "Concatenate([world], [dog])";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test function expression
DefaultFunctionFactory functionFactory = new DefaultFunctionFactory();
String name = "strConcat";
List<Expression> parameters = new ArrayList<Expression>();
parameters.add(ff.literal("cat"));
parameters.add(ff.literal("dog"));
Function functionExpression = functionFactory.function(name, parameters, null);
node.setExpression(functionExpression);
expected = "strConcat([cat], [dog])";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
// Test environment function
EnvFunction envExpression = (EnvFunction) ff.function("env", ff.literal("foo"), ff.literal(0));
node.setExpression(envExpression);
expected = "env([foo], [0])";
actual = node.toString();
assertTrue(actual.compareTo(expected) == 0);
}
use of org.geotools.filter.function.string.ConcatenateFunction in project sldeditor by robward-scisys.
the class ExpressionPanelv2 method addExpression.
/**
* Adds the expression.
*
* @param node the node
* @return the expression
*/
private Expression addExpression(ExpressionNode node) {
Expression expression = node.getExpression();
if (expression instanceof LiteralExpressionImpl) {
return expression;
} else if (expression instanceof AttributeExpressionImpl) {
return expression;
} else if (expression instanceof FunctionExpressionImpl) {
FunctionExpressionImpl functionExpression = (FunctionExpressionImpl) expression;
List<Expression> parameterlist = new ArrayList<Expression>();
for (int childIndex = 0; childIndex < node.getChildCount(); childIndex++) {
ExpressionNode childNode = (ExpressionNode) node.getChildAt(childIndex);
parameterlist.add(addExpression(childNode));
}
functionExpression.setParameters(parameterlist);
return functionExpression;
} else if (expression instanceof MathExpressionImpl) {
MathExpressionImpl mathExpression = (MathExpressionImpl) expression;
ExpressionNode leftChildNode = (ExpressionNode) node.getChildAt(0);
mathExpression.setExpression1(addExpression(leftChildNode));
ExpressionNode rightChildNode = (ExpressionNode) node.getChildAt(1);
mathExpression.setExpression2(addExpression(rightChildNode));
return mathExpression;
} else if (expression instanceof ConcatenateFunction) {
ConcatenateFunction concatenateExpression = (ConcatenateFunction) expression;
List<Expression> parameters = new ArrayList<Expression>();
ExpressionNode leftChildNode = (ExpressionNode) node.getChildAt(0);
parameters.add(addExpression(leftChildNode));
ExpressionNode rightChildNode = (ExpressionNode) node.getChildAt(1);
parameters.add(addExpression(rightChildNode));
concatenateExpression.setParameters(parameters);
return concatenateExpression;
}
return null;
}
Aggregations