public static DataExperssion compute(String filterExperssion) {
        DataExperssion result = null;
        log.debug(String.format("method start String[filterExperssion:%s]", filterExperssion));
        if (null == filterExperssion || 0 == filterExperssion.length()) {
            result = NullDataExperssion.getInstance();
        } else {
            String experssion = filterExperssion.trim();
            int intAnd = experssion.indexOf(" and ");
            int or = experssion.indexOf(" or ");
            if (intAnd >= 0 && or >= 0) { //解析And/Or树型表达式
                result = resolveTreeExperssion(experssion);
            } else if (intAnd >= 0 && or < 0) { //解析And数组表达式
                result = resolveAndExperssion(experssion);
            } else if (intAnd < 0 && or >= 0) { //解析Or数组表达式
                result = resolveOrExperssion(experssion);
            } else { //解析简单表达式
                result = resolveCompareExperssion(experssion);
            }
        }
        log.debug(String.format("method stop return:DataExperssion[%s]", result));
        return result;
    }