package org.vertexium.cypher.functions.string; import org.vertexium.VertexiumException; import org.vertexium.cypher.VertexiumCypherQueryContext; import org.vertexium.cypher.ast.model.CypherAstBase; import org.vertexium.cypher.executor.ExpressionScope; import org.vertexium.cypher.functions.CypherFunction; public class ReverseFunction extends CypherFunction { @Override public Object invoke(VertexiumCypherQueryContext ctx, CypherAstBase[] arguments, ExpressionScope scope) { assertArgumentCount(arguments, 1); Object arg0 = ctx.getExpressionExecutor().executeExpression(ctx, arguments[0], scope); if (arg0 instanceof String) { return new StringBuilder((String) arg0).reverse().toString(); } throw new VertexiumException("not implemented for argument of type " + arg0.getClass().getName()); } }