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 ! } } }
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(); } } }
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); }
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); }
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 ! } } }