예제 #1
0
        public ExprDotNodeForgeRootChild(
            ExprDotNodeImpl parent,
            FilterExprAnalyzerAffector filterExprAnalyzerAffector,
            int? streamNumReferenced,
            string rootPropertyName,
            bool hasEnumerationMethod,
            ExprForge rootNodeForge,
            ExprEnumerationForge rootLambdaEvaluator,
            EPType typeInfo,
            ExprDotForge[] forgesIteratorEventBean,
            ExprDotForge[] forgesUnpacking,
            bool checkedUnpackEvent)
        {
            Parent = parent;
            FilterExprAnalyzerAffector = filterExprAnalyzerAffector;
            StreamNumReferenced = streamNumReferenced;
            RootPropertyName = rootPropertyName;
            if (rootLambdaEvaluator != null) {
                if (typeInfo is EventMultiValuedEPType eventMultiValuedEpType) {
                    innerForge = new InnerDotEnumerableEventCollectionForge(
                        rootLambdaEvaluator,
                        eventMultiValuedEpType.Component);
                }
                else if (typeInfo is EventEPType eventEpType) {
                    innerForge = new InnerDotEnumerableEventBeanForge(
                        rootLambdaEvaluator,
                        eventEpType.EventType);
                }
                else {
                    innerForge = new InnerDotEnumerableScalarCollectionForge(
                        rootLambdaEvaluator,
                        ((ClassMultiValuedEPType) typeInfo).Component);
                }
            }
            else {
                if (checkedUnpackEvent) {
                    innerForge = new InnerDotScalarUnpackEventForge(rootNodeForge);
                }
                else {
                    var returnType = rootNodeForge.EvaluationType;
                    if (hasEnumerationMethod && returnType.IsArray) {
                        if (returnType.GetElementType().CanNotBeNull()) {
                            innerForge = new InnerDotArrPrimitiveToCollForge(rootNodeForge);
                        }
                        else {
                            innerForge = new InnerDotArrObjectToCollForge(rootNodeForge);
                        }
                    }
                    else if (hasEnumerationMethod && returnType.IsGenericCollection()) {
                        innerForge = new InnerDotCollForge(rootNodeForge);
                    }
                    else {
                        innerForge = new InnerDotScalarForge(rootNodeForge);
                    }
                }
            }

            this.forgesUnpacking = forgesUnpacking;
            this.forgesIteratorEventBean = forgesIteratorEventBean;
        }
 public ExprDotNodeForgeTransposeAsStream(
     ExprDotNodeImpl parent,
     ExprForge inner)
 {
     ExprForgeRenderable = parent;
     this.inner = inner;
 }
예제 #3
0
        public ExprDotNodeForgeStream(
            ExprDotNodeImpl parent,
            FilterExprAnalyzerAffector filterExprAnalyzerAffector,
            int streamNumber,
            EventType eventType,
            ExprDotForge[] evaluators,
            bool method)
        {
            this.parent = parent;
            FilterExprAnalyzerAffector = filterExprAnalyzerAffector;
            StreamNumber = streamNumber;
            EventType = eventType;
            Evaluators = evaluators;
            this.method = method;

            var last = evaluators[evaluators.Length - 1];
            if (!method) {
                if (last.TypeInfo is ClassMultiValuedEPType) {
                    EvaluationType = EPTypeHelper.GetClassMultiValuedContainer(last.TypeInfo).GetBoxedType();
                }
                else {
                    EvaluationType = EPTypeHelper.GetClassSingleValued(last.TypeInfo).GetBoxedType();
                }
            }
            else {
                EvaluationType = EPTypeHelper.GetNormalizedClass(last.TypeInfo).GetBoxedType();
            }
        }
예제 #4
0
 public ExprDotNodeAggregationMethodForgeLocal(
     ExprDotNodeImpl parent,
     string aggregationMethodName,
     ExprNode[] parameters,
     AggregationPortableValidation validation,
     ExprAggMultiFunctionNode agg)
     : base(parent, aggregationMethodName, parameters, validation)
 {
     this.agg = agg;
 }
예제 #5
0
 public ExprDotNodeForgeVariable(
     ExprDotNodeImpl parent,
     VariableMetaData variable,
     ExprDotStaticMethodWrap resultWrapLambda,
     ExprDotForge[] chainForge)
 {
     ExprForgeRenderable = parent;
     Variable = variable;
     ResultWrapLambda = resultWrapLambda;
     ChainForge = chainForge;
 }
예제 #6
0
 public ExprDotNodeAggregationMethodForge(
     ExprDotNodeImpl parent,
     string aggregationMethodName,
     ExprNode[] parameters,
     AggregationPortableValidation validation)
 {
     this.parent = parent;
     this.aggregationMethodName = aggregationMethodName;
     this.parameters            = parameters;
     this.validation            = validation;
 }
 public ExprDotNodeAggregationMethodForgeTableReset(
     ExprDotNodeImpl parent,
     string aggregationMethodName,
     ExprNode[] parameters,
     AggregationPortableValidation validation,
     ExprTableIdentNode identNode,
     TableMetadataColumnAggregation column)
     : base(parent, aggregationMethodName, parameters, validation)
 {
     this.identNode = identNode;
     this.column = column;
 }
예제 #8
0
 public ExprDotNodeAggregationMethodForgeTableAccess(
     ExprDotNodeImpl parent,
     string aggregationMethodName,
     ExprNode[] parameters,
     AggregationPortableValidation validation,
     ExprTableAccessNodeSubprop subprop,
     TableMetadataColumnAggregation column)
     : base(parent, aggregationMethodName, parameters, validation)
 {
     this.subprop = subprop;
     this.column = column;
 }
 internal ExprDotNodeForgePropertyExpr(
     ExprDotNodeImpl parent,
     string statementName,
     string propertyName,
     int streamNum,
     ExprForge exprForge,
     Type propertyType,
     EventPropertyGetterIndexedSPI indexedGetter,
     EventPropertyGetterMappedSPI mappedGetter)
 {
     Parent = parent;
     this.statementName = statementName;
     this.propertyName = propertyName;
     StreamNum = streamNum;
     ExprForge = exprForge;
     EvaluationType = propertyType;
     IndexedGetter = indexedGetter;
     MappedGetter = mappedGetter;
 }