Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.builder; import org.apache.commons.lang.StringUtils; import com.enonic.cms.core.content.index.queryexpression.ArrayExpr; import com.enonic.cms.core.content.index.queryexpression.Expression; import com.enonic.cms.core.content.index.queryexpression.FunctionEvaluator; import com.enonic.cms.core.content.index.queryexpression.FunctionExpr; import com.enonic.cms.core.content.index.queryexpression.ValueExpr; /** * Created by IntelliJ IDEA. * User: rmh * Date: 11/23/11 * Time: 12:26 PM */ public final class ExpressionValueResolver { public static Object[] toValues(final Expression expr) { if (expr instanceof ArrayExpr) { return toValues((ArrayExpr) expr); } else if (expr instanceof ValueExpr) { return new Object[] { toValue((ValueExpr) expr) }; } else if (expr instanceof FunctionExpr) { return toValues((FunctionExpr) expr); } else { return new String[0]; } } public static Object toValue(final ValueExpr expr) { if (expr.isNumber()) { return expr.getValue(); } else { final String stringValue = expr.getValue().toString(); return StringUtils.lowerCase(stringValue); } } private static Object[] toValues(final ArrayExpr expr) { final ValueExpr[] list = expr.getValues(); final Object[] result = new Object[list.length]; for (int i = 0; i < list.length; i++) { result[i] = toValue(list[i]); } return result; } private static Object[] toValues(final FunctionExpr expr) { final FunctionEvaluator eval = new FunctionEvaluator(); return toValues((Expression) expr.evaluate(eval)); } }