Exemplo n.º 1
0
        public override SequenceFilterCallBase CreateSequenceMatchClassFilterCall(String matchClassName, String matchClassPackage,
                                                                                  String packagePrefix, String filterBase, List <String> entities,
                                                                                  SequenceVariable initArrayAccess, SequenceExpression initExpr,
                                                                                  SequenceVariable arrayAccess, SequenceVariable previousAccumulationAccess,
                                                                                  SequenceVariable index, SequenceVariable element, SequenceExpression lambdaExpr)
        {
            String             packagePrefixedMatchClassName = matchClassPackage != null ? matchClassPackage + "::" + matchClassName : matchClassName; // no (further) resolving of match classes in interpreted sequences cause there is no package context existing
            MatchClassFilterer matchClass = actions.GetMatchClass(packagePrefixedMatchClassName);                                                      // may be null, match class is part of filter call, was not checked before

            if (matchClass == null)
            {
                throw new SequenceParserException(packagePrefixedMatchClassName, packagePrefixedMatchClassName + "." + filterBase, SequenceParserError.MatchClassError);
            }

            String filterName          = GetFilterName(filterBase, entities);
            String packagePrefixedName = filterName;

            if (entities.Count == 1 && filterBase == "assignStartWithAccumulateBy")
            {
                return(new SequenceFilterCallLambdaExpressionInterpreted(matchClass, filterBase, entities[0],
                                                                         initArrayAccess, initExpr,
                                                                         arrayAccess, previousAccumulationAccess, index, element, lambdaExpr));
            }
            else
            {
                throw new SequenceParserException(packagePrefixedMatchClassName, packagePrefixedName, SequenceParserError.FilterError);
            }
        }
Exemplo n.º 2
0
        public override SequenceFilterCallBase CreateSequenceMatchClassFilterCall(String matchClassName, String matchClassPackage,
                                                                                  String packagePrefix, String filterBase, List <String> entities, List <SequenceExpression> argExprs)
        {
            String             packagePrefixedMatchClassName = matchClassPackage != null ? matchClassPackage + "::" + matchClassName : matchClassName; // no (further) resolving of match classes in interpreted sequences cause there is no package context existing
            MatchClassFilterer matchClass = actions.GetMatchClass(packagePrefixedMatchClassName);                                                      // may be null, match class is part of filter call, was not checked before

            if (matchClass == null)
            {
                throw new SequenceParserException(packagePrefixedMatchClassName, packagePrefixedMatchClassName + "." + filterBase, SequenceParserError.MatchClassError);
            }

            String filterName = GetFilterName(filterBase, entities);
            String packagePrefixedName;

            if (IsAutoSuppliedFilterName(filterBase))
            {
                packagePrefixedName = filterBase;
            }
            else if (IsAutoGeneratedFilter(filterBase, entities))
            {
                packagePrefixedName = filterName;
            }
            else
            {
                if (packagePrefix != null)
                {
                    if (packagePrefix != "global")
                    {
                        packagePrefixedName = packagePrefix + "::" + filterName;
                    }
                    else
                    {
                        packagePrefixedName = filterName;
                    }
                }
                else if (matchClassPackage != null && matchClass.info.GetFilter(matchClassPackage + "::" + filterName) != null)
                {
                    packagePrefixedName = matchClassPackage + "::" + filterName;
                }
                else
                {
                    packagePrefixedName = filterName;
                }
            }

            IFilter filter = matchClass.info.GetFilter(packagePrefixedName);

            if (filter == null)
            {
                throw new SequenceParserException(packagePrefixedMatchClassName, packagePrefixedName, SequenceParserError.FilterError);
            }

            return(new SequenceFilterCallInterpreted(matchClass, filter, argExprs.ToArray()));
        }
Exemplo n.º 3
0
        public override string GetPackagePrefixedMatchClassName(String matchClassName, String matchClassPackage)
        {
            String             packagePrefixedMatchClassName = !PackageIsNullOrGlobal(matchClassPackage) ? matchClassPackage + "::" + matchClassName : matchClassName; // no (further) resolving of match classes in interpreted sequences cause there is no package context existing
            MatchClassFilterer matchClass = actions.GetMatchClass(packagePrefixedMatchClassName);                                                                      // may be null, match class is part of filter call, was not checked before

            if (matchClass == null)
            {
                throw new SequenceParserException(packagePrefixedMatchClassName, "\\<class " + packagePrefixedMatchClassName + ">", SequenceParserError.MatchClassError);
            }
            return(matchClass.info.PackagePrefixedName);
        }