Exemplo n.º 1
0
        protected ZDifferenceStrategy(
            double minimumZDifference, [CanBeNull] string minimumZDifferenceExpression,
            double maximumZDifference, [CanBeNull] string maximumZDifferenceExpression,
            [CanBeNull] string zRelationConstraint, bool expressionCaseSensitivity,
            [NotNull] IErrorReporting errorReporting,
            [NotNull] Func <double, string, double, string, string> formatComparisonFunction)
        {
            Assert.ArgumentNotNaN(minimumZDifference, nameof(minimumZDifference));
            Assert.ArgumentNotNaN(maximumZDifference, nameof(maximumZDifference));
            Assert.ArgumentNotNull(errorReporting, nameof(errorReporting));
            Assert.ArgumentNotNull(formatComparisonFunction,
                                   nameof(formatComparisonFunction));

            _minimumZDifference = minimumZDifference;
            _maximumZDifference = maximumZDifference;

            if (StringUtils.IsNotEmpty(minimumZDifferenceExpression))
            {
                _minimumZDifferenceExpression = new ZDifferenceBoundExpression(
                    minimumZDifferenceExpression, expressionCaseSensitivity);
            }

            if (StringUtils.IsNotEmpty(maximumZDifferenceExpression))
            {
                _maximumZDifferenceExpression = new ZDifferenceBoundExpression(
                    maximumZDifferenceExpression, expressionCaseSensitivity);
            }

            ErrorReporting            = errorReporting;
            _formatComparisonFunction = formatComparisonFunction;

            if (zRelationConstraint != null &&
                zRelationConstraint.IndexOf(_zDifferenceColumn,
                                            StringComparison
                                            .InvariantCultureIgnoreCase) >= 0)
            {
                _zDifferenceColumnValue = new Dictionary <string, object>();
            }

            _zRelationCondition = new ZRelationCondition(
                zRelationConstraint,
                expressionCaseSensitivity);
        }
Exemplo n.º 2
0
        private double GetMaximumZDifference([NotNull] IFeature upper,
                                             int tableIndexUpper,
                                             [NotNull] IFeature lower,
                                             int tableIndexLower)
        {
            if (string.IsNullOrEmpty(_maximumZDifferenceExpressionSql))
            {
                return(_maximumZDifference);
            }

            if (_maximumZDifferenceExpression == null)
            {
                _maximumZDifferenceExpression =
                    new ZDifferenceBoundExpression(_maximumZDifferenceExpressionSql,
                                                   GetSqlCaseSensitivity());
            }

            return(_maximumZDifferenceExpression.GetDouble(
                       upper, tableIndexUpper,
                       lower, tableIndexLower) ?? 0);
        }