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