case OPTIMAL:
if ((config.blockingStrategyType==BlockingStrategyType.OPTIMAL && hasNominals) || config.blockingStrategyType==BlockingStrategyType.SIMPLE_CORE || config.blockingStrategyType==BlockingStrategyType.COMPLEX_CORE) {
directBlockingChecker=new ValidatedSingleDirectBlockingChecker(hasInverseRoles);
} else {
if (hasInverseRoles)
directBlockingChecker=new PairWiseDirectBlockingChecker();
else
directBlockingChecker=new SingleDirectBlockingChecker();
}
break;
case SINGLE:
if (config.blockingStrategyType==BlockingStrategyType.SIMPLE_CORE || config.blockingStrategyType==BlockingStrategyType.COMPLEX_CORE)
directBlockingChecker=new ValidatedSingleDirectBlockingChecker(hasInverseRoles);
else
directBlockingChecker=new SingleDirectBlockingChecker();
break;
case PAIR_WISE:
if (config.blockingStrategyType==BlockingStrategyType.SIMPLE_CORE || config.blockingStrategyType==BlockingStrategyType.COMPLEX_CORE)
directBlockingChecker=new ValidatedPairwiseDirectBlockingChecker(hasInverseRoles);
else
directBlockingChecker=new PairWiseDirectBlockingChecker();
break;
default:
throw new IllegalArgumentException("Unknown direct blocking type.");
}