Search in sources :

Example 16 with ClosureExpression

use of org.apache.atlas.groovy.ClosureExpression in project incubator-atlas by apache.

the class Gremlin3ExpressionFactory method generateLikeExpressionUsingFilter.

@Override
public GroovyExpression generateLikeExpressionUsingFilter(GroovyExpression parent, String propertyName, GroovyExpression propertyValue) throws AtlasException {
    GroovyExpression itExpr = getItVariable();
    GroovyExpression nameExpr = new FieldExpression(itExpr, propertyName);
    GroovyExpression matchesExpr = new FunctionCallExpression(nameExpr, MATCHES, escapePropertyValue(propertyValue));
    GroovyExpression closureExpr = new ClosureExpression(matchesExpr);
    GroovyExpression filterExpr = new FunctionCallExpression(parent, FILTER_METHOD, closureExpr);
    return filterExpr;
}
Also used : GroovyExpression(org.apache.atlas.groovy.GroovyExpression) ClosureExpression(org.apache.atlas.groovy.ClosureExpression) FunctionCallExpression(org.apache.atlas.groovy.FunctionCallExpression) FieldExpression(org.apache.atlas.groovy.FieldExpression)

Example 17 with ClosureExpression

use of org.apache.atlas.groovy.ClosureExpression in project incubator-atlas by apache.

the class Gremlin3ExpressionFactory method generateGroupByExpression.

@Override
public GroovyExpression generateGroupByExpression(GroovyExpression parent, GroovyExpression groupByExpression, GroovyExpression aggregationFunction) {
    GroovyExpression result = new FunctionCallExpression(TraversalStepType.BARRIER, parent, "group");
    GroovyExpression groupByClosureExpr = new TypeCoersionExpression(new ClosureExpression(groupByExpression), "Function");
    result = new FunctionCallExpression(TraversalStepType.SIDE_EFFECT, result, "by", groupByClosureExpr);
    result = new FunctionCallExpression(TraversalStepType.END, result, "toList");
    GroovyExpression mapValuesClosure = new ClosureExpression(new FunctionCallExpression(new CastExpression(getItVariable(), "Map"), "values"));
    result = new FunctionCallExpression(result, "collect", mapValuesClosure);
    //when we call Map.values(), we end up with an extra list around the result.  We remove this by calling toList().get(0).  This
    //leaves us with a list of lists containing the vertices that match each group.  We then apply the aggregation functions
    //specified in the select list to each of these inner lists.
    result = new FunctionCallExpression(result, "toList");
    result = new FunctionCallExpression(result, "get", new LiteralExpression(0));
    GroovyExpression aggregrationFunctionClosure = new ClosureExpression(aggregationFunction);
    result = new FunctionCallExpression(result, "collect", aggregrationFunctionClosure);
    return result;
}
Also used : TypeCoersionExpression(org.apache.atlas.groovy.TypeCoersionExpression) LiteralExpression(org.apache.atlas.groovy.LiteralExpression) GroovyExpression(org.apache.atlas.groovy.GroovyExpression) ClosureExpression(org.apache.atlas.groovy.ClosureExpression) CastExpression(org.apache.atlas.groovy.CastExpression) FunctionCallExpression(org.apache.atlas.groovy.FunctionCallExpression)

Aggregations

ClosureExpression (org.apache.atlas.groovy.ClosureExpression)17 GroovyExpression (org.apache.atlas.groovy.GroovyExpression)16 FunctionCallExpression (org.apache.atlas.groovy.FunctionCallExpression)14 LiteralExpression (org.apache.atlas.groovy.LiteralExpression)5 CastExpression (org.apache.atlas.groovy.CastExpression)3 ComparisonExpression (org.apache.atlas.groovy.ComparisonExpression)3 FieldExpression (org.apache.atlas.groovy.FieldExpression)3 TypeCoersionExpression (org.apache.atlas.groovy.TypeCoersionExpression)3 ComparisonOperatorExpression (org.apache.atlas.groovy.ComparisonOperatorExpression)2 TernaryOperatorExpression (org.apache.atlas.groovy.TernaryOperatorExpression)2 AttributeInfo (org.apache.atlas.typesystem.types.AttributeInfo)2 IDataType (org.apache.atlas.typesystem.types.IDataType)2 ArrayList (java.util.ArrayList)1 VariableDeclaration (org.apache.atlas.groovy.ClosureExpression.VariableDeclaration)1 IdentifierExpression (org.apache.atlas.groovy.IdentifierExpression)1 ListExpression (org.apache.atlas.groovy.ListExpression)1 LogicalExpression (org.apache.atlas.groovy.LogicalExpression)1 VariableAssignmentExpression (org.apache.atlas.groovy.VariableAssignmentExpression)1 AtlasGraph (org.apache.atlas.repository.graphdb.AtlasGraph)1