Search in sources :

Example 1 with PositionFunctionNode

use of org.apache.cayenne.dba.postgres.sqltree.PositionFunctionNode in project cayenne by apache.

the class PostgreSQLTreeProcessor method onFunctionNode.

protected Optional<Node> onFunctionNode(Node parent, FunctionNode child, int index) {
    Node replacement = null;
    String functionName = child.getFunctionName();
    if (EXTRACT_FUNCTION_NAMES.contains(functionName)) {
        replacement = new PostgresExtractFunctionNode(functionName);
    } else if ("CURRENT_DATE".equals(functionName) || "CURRENT_TIME".equals(functionName) || "CURRENT_TIMESTAMP".equals(functionName)) {
        replacement = new FunctionNode(functionName, child.getAlias(), false);
    } else if ("LOCATE".equals(functionName)) {
        replacement = new PositionFunctionNode(child.getAlias());
    }
    return Optional.ofNullable(replacement);
}
Also used : PostgresExtractFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PostgresExtractFunctionNode) Node(org.apache.cayenne.access.sqlbuilder.sqltree.Node) FunctionNode(org.apache.cayenne.access.sqlbuilder.sqltree.FunctionNode) LimitOffsetNode(org.apache.cayenne.access.sqlbuilder.sqltree.LimitOffsetNode) PositionFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PositionFunctionNode) PostgresLikeNode(org.apache.cayenne.dba.postgres.sqltree.PostgresLikeNode) ColumnNode(org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode) PostgresLimitOffsetNode(org.apache.cayenne.dba.postgres.sqltree.PostgresLimitOffsetNode) LikeNode(org.apache.cayenne.access.sqlbuilder.sqltree.LikeNode) TrimmingColumnNode(org.apache.cayenne.access.sqlbuilder.sqltree.TrimmingColumnNode) PostgresExtractFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PostgresExtractFunctionNode) PostgresExtractFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PostgresExtractFunctionNode) FunctionNode(org.apache.cayenne.access.sqlbuilder.sqltree.FunctionNode) PositionFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PositionFunctionNode) PositionFunctionNode(org.apache.cayenne.dba.postgres.sqltree.PositionFunctionNode)

Aggregations

ColumnNode (org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode)1 FunctionNode (org.apache.cayenne.access.sqlbuilder.sqltree.FunctionNode)1 LikeNode (org.apache.cayenne.access.sqlbuilder.sqltree.LikeNode)1 LimitOffsetNode (org.apache.cayenne.access.sqlbuilder.sqltree.LimitOffsetNode)1 Node (org.apache.cayenne.access.sqlbuilder.sqltree.Node)1 TrimmingColumnNode (org.apache.cayenne.access.sqlbuilder.sqltree.TrimmingColumnNode)1 PositionFunctionNode (org.apache.cayenne.dba.postgres.sqltree.PositionFunctionNode)1 PostgresExtractFunctionNode (org.apache.cayenne.dba.postgres.sqltree.PostgresExtractFunctionNode)1 PostgresLikeNode (org.apache.cayenne.dba.postgres.sqltree.PostgresLikeNode)1 PostgresLimitOffsetNode (org.apache.cayenne.dba.postgres.sqltree.PostgresLimitOffsetNode)1