Search in sources :

Example 1 with CDecimal

use of org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDecimal in project legend-engine by finos.

the class RelationalGraphFetchUtils method subTreeValidForCaching.

static boolean subTreeValidForCaching(GraphFetchTree graphFetchTree) {
    boolean currentValidity = true;
    if (graphFetchTree instanceof PropertyGraphFetchTree) {
        PropertyGraphFetchTree propertyGraphFetchTree = (PropertyGraphFetchTree) graphFetchTree;
        if (propertyGraphFetchTree.parameters != null && !propertyGraphFetchTree.parameters.isEmpty()) {
            currentValidity = propertyGraphFetchTree.parameters.stream().allMatch(param -> param instanceof CBoolean || param instanceof CInteger || param instanceof CFloat || param instanceof CDecimal || param instanceof CString || param instanceof CStrictDate || param instanceof CDateTime || param instanceof EnumValue || (param instanceof Collection && ((Collection) param).values.stream().allMatch(x -> x instanceof EnumValue)));
        }
    }
    boolean childrenValidity = graphFetchTree.subTrees == null || graphFetchTree.subTrees.isEmpty() || graphFetchTree.subTrees.stream().allMatch(RelationalGraphFetchUtils::subTreeValidForCaching);
    return currentValidity && childrenValidity;
}
Also used : PropertyGraphFetchTree(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.graph.PropertyGraphFetchTree) CDateTime(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDateTime) DoubleStrategyHashMap(org.finos.legend.engine.shared.core.collectionsExtensions.DoubleStrategyHashMap) GraphFetchCache(org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCache) BiFunction(java.util.function.BiFunction) ObjectInputStream(java.io.ObjectInputStream) GraphFetchCacheKey(org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCacheKey) PropertyGraphFetchTree(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.graph.PropertyGraphFetchTree) DoubleHashingStrategy(org.finos.legend.engine.shared.core.collectionsExtensions.DoubleHashingStrategy) Function(java.util.function.Function) ArrayList(java.util.ArrayList) GraphFetchTree(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.graph.GraphFetchTree) GraphFetchCacheByEqualityKeys(org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCacheByEqualityKeys) CDecimal(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDecimal) CFloat(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CFloat) ObjectOutputStream(java.io.ObjectOutputStream) Collector(java.util.stream.Collector) Method(java.lang.reflect.Method) CBoolean(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CBoolean) CInteger(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CInteger) CString(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CString) EnumValue(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.EnumValue) IOException(java.io.IOException) Collection(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.Collection) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) SQLExecutionResult(org.finos.legend.engine.plan.execution.stores.relational.result.SQLExecutionResult) CStrictDate(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CStrictDate) CDateTime(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDateTime) EnumValue(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.EnumValue) CBoolean(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CBoolean) CInteger(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CInteger) CFloat(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CFloat) CStrictDate(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CStrictDate) Collection(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.Collection) CDecimal(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDecimal) CString(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CString)

Example 2 with CDecimal

use of org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.raw.CDecimal in project legend-engine by finos.

the class PureCollectionDataParseTreeWalker method visitInstanceLiteral.

private ValueSpecification visitInstanceLiteral(PureCollectionDataParserGrammar.InstanceLiteralContext ctx) {
    ValueSpecification result;
    if (ctx.instanceLiteralToken() != null) {
        PureCollectionDataParserGrammar.InstanceLiteralTokenContext literalToken = ctx.instanceLiteralToken();
        if (literalToken.STRING() != null) {
            result = cString(PureGrammarParserUtility.fromGrammarString(literalToken.STRING().getText(), true));
        } else if (literalToken.INTEGER() != null) {
            result = cInteger(Long.parseLong(literalToken.INTEGER().getText()));
        } else if (literalToken.FLOAT() != null) {
            result = cFloat(Double.parseDouble(literalToken.FLOAT().getText()));
        } else if (literalToken.DECIMAL() != null) {
            String text = literalToken.DECIMAL().getText();
            result = cDecimal(new BigDecimal(text.substring(0, text.length() - 1)));
        } else if (literalToken.DATE() != null) {
            result = new DateParseTreeWalker(literalToken.DATE(), this.walkerSourceInformation).visitDefinition();
        } else if (literalToken.BOOLEAN() != null) {
            result = cBoolean(Boolean.parseBoolean(literalToken.BOOLEAN().getText()));
        } else if (literalToken.STRICTTIME() != null) {
            result = new StrictTimeParseTreeWalker(literalToken.STRICTTIME(), this.walkerSourceInformation).visitStrictTimeDefinition();
        } else {
            throw new IllegalStateException("Unhandled instanceLiteralToken");
        }
    } else if (ctx.INTEGER() != null && ctx.MINUS() != null) {
        result = cInteger(Long.parseLong(ctx.MINUS().getText() + ctx.INTEGER().getText()));
    } else if (ctx.FLOAT() != null && ctx.MINUS() != null) {
        result = cFloat(Double.parseDouble(ctx.MINUS().getText() + ctx.FLOAT().getText()));
    } else if (ctx.DECIMAL() != null && ctx.MINUS() != null) {
        String text = ctx.MINUS().getText() + ctx.DECIMAL().getText();
        result = cDecimal(new BigDecimal(text.substring(0, text.length() - 1)));
    } else if (ctx.INTEGER() != null && ctx.PLUS() != null) {
        result = cInteger(Long.parseLong(ctx.PLUS().getText() + ctx.INTEGER().getText()));
    } else if (ctx.FLOAT() != null && ctx.PLUS() != null) {
        result = cFloat(Double.parseDouble(ctx.PLUS().getText() + ctx.FLOAT().getText()));
    } else if (ctx.DECIMAL() != null && ctx.PLUS() != null) {
        String text = ctx.PLUS().getText() + ctx.DECIMAL().getText();
        result = cDecimal(new BigDecimal(text.substring(0, text.length() - 1)));
    } else {
        throw new IllegalStateException("Unhandled instanceLiteral");
    }
    result.sourceInformation = walkerSourceInformation.getSourceInformation(ctx);
    return result;
}
Also used : StrictTimeParseTreeWalker(org.finos.legend.engine.language.pure.grammar.from.domain.StrictTimeParseTreeWalker) PureCollectionDataParserGrammar(org.finos.legend.engine.language.pure.grammar.from.antlr4.data.embedded.pureCollection.PureCollectionDataParserGrammar) ValueSpecification(org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.ValueSpecification) BigDecimal(java.math.BigDecimal) DateParseTreeWalker(org.finos.legend.engine.language.pure.grammar.from.domain.DateParseTreeWalker)

Aggregations

IOException (java.io.IOException)1 ObjectInputStream (java.io.ObjectInputStream)1 ObjectOutputStream (java.io.ObjectOutputStream)1 Method (java.lang.reflect.Method)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Objects (java.util.Objects)1 BiFunction (java.util.function.BiFunction)1 Function (java.util.function.Function)1 Collector (java.util.stream.Collector)1 Collectors (java.util.stream.Collectors)1 PureCollectionDataParserGrammar (org.finos.legend.engine.language.pure.grammar.from.antlr4.data.embedded.pureCollection.PureCollectionDataParserGrammar)1 DateParseTreeWalker (org.finos.legend.engine.language.pure.grammar.from.domain.DateParseTreeWalker)1 StrictTimeParseTreeWalker (org.finos.legend.engine.language.pure.grammar.from.domain.StrictTimeParseTreeWalker)1 GraphFetchCache (org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCache)1 GraphFetchCacheByEqualityKeys (org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCacheByEqualityKeys)1 GraphFetchCacheKey (org.finos.legend.engine.plan.execution.cache.graphFetch.GraphFetchCacheKey)1 SQLExecutionResult (org.finos.legend.engine.plan.execution.stores.relational.result.SQLExecutionResult)1 ValueSpecification (org.finos.legend.engine.protocol.pure.v1.model.valueSpecification.ValueSpecification)1