package com.meidusa.amoeba.aladdin.test.parser; import java.io.StringReader; import java.util.Map; import com.meidusa.amoeba.aladdin.parser.sql.AladdinParser; import com.meidusa.amoeba.parser.Parser; import com.meidusa.amoeba.parser.expression.Expression; import com.meidusa.amoeba.parser.function.Function; import com.meidusa.amoeba.parser.statement.DMLStatement; import com.meidusa.amoeba.parser.statement.PropertyStatement; import com.meidusa.amoeba.parser.statement.Statement; import com.meidusa.amoeba.route.AbstractQueryRouter; public class AladdinParserTest { static String file = "./build/build-aladdin/conf/functionMap.xml"; // TODO �����ļ����޸�Ϊ����·�����ļ��� static Map<String, Function> funMap = AbstractQueryRouter.loadFunctionMap(file); public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("select * from aaa where id = 12 AND (upper(subject) like upper(?) OR upper(keywords) like upper(?))"); String sql = sb.toString(); Parser parser = new AladdinParser(new StringReader(sql)); parser.setFunctionMap(funMap); try { Statement statment = parser.doParse(); if (statment instanceof DMLStatement) { DMLStatement dmlStatment = (DMLStatement) statment; Expression expression = dmlStatment.getExpression(); System.out.println(sql + " =[ " + expression + "], evaluated = {" + dmlStatment.evaluate(null) + "}"); } else if (statment instanceof PropertyStatement) { PropertyStatement proStatment = (PropertyStatement) statment; System.out.println(proStatment.getProperties()); } } catch (com.meidusa.amoeba.parser.ParseException e) { e.printStackTrace(); } } }