return ConfigUtils.newInstance(this,
"deciderScoreComparatorClass", deciderScoreComparatorClass);
} else if (deciderScoreComparatorFactoryType != null) {
switch (deciderScoreComparatorFactoryType) {
case NATURAL:
return new NaturalDeciderScoreComparatorFactory();
case SHIFTING_HARD_PENALTY:
ShiftingHardPenaltyDeciderScoreComparatorFactory deciderScoreComparator
= new ShiftingHardPenaltyDeciderScoreComparatorFactory();
if (hardScoreActivationThreshold != null) {
deciderScoreComparator.setHardScoreActivationThreshold(hardScoreActivationThreshold);
}
if (successiveNoHardChangeMinimum != null) {
deciderScoreComparator.setSuccessiveNoHardChangeMinimum(successiveNoHardChangeMinimum);
}
if (successiveNoHardChangeMaximum != null) {
deciderScoreComparator.setSuccessiveNoHardChangeMaximum(successiveNoHardChangeMaximum);
}
if (successiveNoHardChangeRepetitionMultiplicand != null) {
deciderScoreComparator.setSuccessiveNoHardChangeRepetitionMultiplicand(
successiveNoHardChangeRepetitionMultiplicand);
}
if (hardWeightSurvivalRatio != null) {
deciderScoreComparator.setHardWeightSurvivalRatio(hardWeightSurvivalRatio);
}
if (startingHardWeight != null) {
deciderScoreComparator.setStartingHardWeight(startingHardWeight);
}
return deciderScoreComparator;
default:
throw new IllegalStateException("The deciderScoreComparatorFactoryType ("
+ deciderScoreComparatorFactoryType + ") is not implemented");
}
} else {
return new NaturalDeciderScoreComparatorFactory();
}
}