package org.xenei.jdbc4sparql.sparql.parser.jsqlparser.functions; import java.sql.SQLException; import java.util.Arrays; import net.sf.jsqlparser.expression.Function; import org.xenei.jdbc4sparql.J4SDriver; import org.xenei.jdbc4sparql.iface.name.ColumnName; import org.xenei.jdbc4sparql.sparql.SparqlQueryBuilder; import org.xenei.jdbc4sparql.sparql.parser.jsqlparser.SparqlExprVisitor.AliasInfo; import org.xenei.jdbc4sparql.sparql.parser.jsqlparser.proxies.ExprInfoFactory; import com.hp.hpl.jena.sparql.expr.Expr; import com.hp.hpl.jena.sparql.expr.nodevalue.NodeValueString; public class SystemFunctionHandler extends AbstractFunctionHandler { public static final String[] SYSTEM_FUNCTIONS = { "CATALOG", "VERSION" }; private static final int CATALOG = 0; private static final int VERSION = 1; public SystemFunctionHandler(final SparqlQueryBuilder builder) { super(builder); } @Override public Expr handle(final Function func, final AliasInfo alias) throws SQLException { final int i = Arrays.asList(SystemFunctionHandler.SYSTEM_FUNCTIONS) .indexOf(func.getName().toUpperCase()); ColumnName colName; NodeValueString str; switch (i) { case CATALOG: str = new NodeValueString(builder.getCatalog().getName() .getShortName()); // colName = tblName.getColumnName(func.getName()); colName = tblName.getColumnName(alias.getAlias()); builder.registerFunction(colName, java.sql.Types.VARCHAR); return ExprInfoFactory.getInstance(str, colName); case VERSION: str = new NodeValueString(J4SDriver.getVersion()); // colName = tblName.getColumnName(func.getName()); colName = tblName.getColumnName(alias.getAlias()); builder.registerFunction(colName, java.sql.Types.VARCHAR); return ExprInfoFactory.getInstance(str, colName); default: return null; } } }