Пример #1
0
        protected override void ConfigureQueryFilter(int tableIndex,
                                                     IQueryFilter queryFilter)
        {
            base.ConfigureQueryFilter(tableIndex, queryFilter);
            ITable table = InvolvedTables[tableIndex];

            foreach (QueryFilterHelper[] rule in _rules)
            {
                if (rule[tableIndex] == null)
                {
                    continue;
                }

                string subFields = rule[tableIndex].SubFields;

                if (string.IsNullOrEmpty(subFields))
                {
                    continue;
                }

                foreach (string fieldName in ExpressionUtils.GetExpressionFieldNames(
                             table, subFields))
                {
                    queryFilter.AddField(fieldName);                     // .AddField checks for multiple entries !
                }
            }
        }
Пример #2
0
        public QaValidUrls(
            [Doc(nameof(DocStrings.QaValidUrls_table))][NotNull] ITable table,
            [Doc(nameof(DocStrings.QaValidUrls_urlExpression))][NotNull]
            string urlExpression)
            : base(table)
        {
            Assert.ArgumentNotNull(table, nameof(table));
            Assert.ArgumentNotNullOrEmpty(urlExpression, nameof(urlExpression));

            _table         = table;
            _urlExpression = urlExpression;

            _maximumParallelTasks = _defaultMaximumParallelTasks;

            // if the url expression is a single field, then direclty read from the field
            // (by the field index determined here)
            // Use the infrastructure for expression evaluation only if the url expression
            // is really a sql expression involving more than one field name
            // and/or functions, literals etc.,
            List <string> tokens = ExpressionUtils.GetExpressionTokens(urlExpression).ToList();

            _isSingleField = false;
            if (tokens.Count == 1)
            {
                int fieldIndex = table.FindField(urlExpression);

                if (fieldIndex < 0)
                {
                    throw new ArgumentException(
                              string.Format("Field not found in table {0}: {1}",
                                            DatasetUtils.GetName(table),
                                            urlExpression), nameof(urlExpression));
                }

                // the url expression is a single field name
                _fieldIndex        = fieldIndex;
                _isSingleField     = true;
                _affectedComponent = urlExpression.ToUpper().Trim();
            }

            if (!_isSingleField)
            {
                List <string> fieldNames = ExpressionUtils.GetExpressionFieldNames(
                    _table, _urlExpression).ToList();

                if (fieldNames.Count == 0)
                {
                    throw new ArgumentException(
                              $@"Invalid expression: {urlExpression}",
                              nameof(urlExpression));
                }

                if (fieldNames.Count == 1)
                {
                    _affectedComponent = fieldNames[0].ToUpper().Trim();
                }
            }
        }
Пример #3
0
        protected override void ConfigureQueryFilter(int tableIndex,
                                                     IQueryFilter queryFilter)
        {
            if (_flipExpressions != null)
            {
                ITable table = InvolvedTables[tableIndex];

                foreach (string fieldName in
                         ExpressionUtils.GetExpressionFieldNames(table,
                                                                 _flipExpressions[tableIndex]))
                {
                    // .AddField checks for multiple entries !
                    queryFilter.AddField(fieldName);
                }
            }

            base.ConfigureQueryFilter(tableIndex, queryFilter);
        }
Пример #4
0
        private string GetSimpleConstraintAffectedComponent()
        {
            if (_simpleConstraintAffectedComponent == null)
            {
                var uniqueFieldNames = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

                foreach (string fieldName in ExpressionUtils.GetExpressionFieldNames(
                             _table, _simpleConstraintHelper.Constraint ?? string.Empty))
                {
                    uniqueFieldNames.Add(fieldName);
                }

                _simpleConstraintAffectedComponent = uniqueFieldNames.Count == 1
                                                                             ? uniqueFieldNames.ToList()[0]
                                                                             : string.Empty;
            }

            return(_simpleConstraintAffectedComponent.Length > 0
                                       ? _simpleConstraintAffectedComponent
                                       : null);
        }
Пример #5
0
        protected override void ConfigureQueryFilter(int tableIndex,
                                                     IQueryFilter queryFilter)
        {
            base.ConfigureQueryFilter(tableIndex, queryFilter);
            ITable table = InvolvedTables[tableIndex];

            foreach (QaConnectionRuleHelper ruleHelper in _ruleHelpers)
            {
                if (ruleHelper.MainRuleFilterHelpers[tableIndex] == null)
                {
                    continue;
                }

                string constraint = ruleHelper.MainRuleFilterHelpers[tableIndex].Constraint;

                foreach (
                    string fieldName in ExpressionUtils.GetExpressionFieldNames(table, constraint))
                {
                    queryFilter.AddField(fieldName);                     // .AddField checks for multiple entries !
                }
            }
        }