RowDetector otherRowDetector ) {
boolean overlappingCondition = true;
boolean hasUnrecognizedCondition = false;
for ( Map.Entry<ConditionDetectorKey, ConditionDetector> entry : conditionDetectorMap.entrySet() ) {
ConditionDetectorKey key = entry.getKey();
ConditionDetector conditionDetector = entry.getValue();
ConditionDetector otherConditionDetector = otherRowDetector.getConditionDetector( key );
// If 1 field is in both
if ( otherConditionDetector != null ) {
ConditionDetector mergedConditionDetector = conditionDetector.merge( otherConditionDetector );
if ( mergedConditionDetector.isImpossibleMatch() ) {
// If 1 field is in both and not overlapping then the entire 2 rows are not overlapping
overlappingCondition = false;
}
if ( mergedConditionDetector.hasUnrecognizedConstraint() ) {
// If 1 field is in both and unrecognized, then the 2 rows might not be overlapping
hasUnrecognizedCondition = true;
}
}
}