return ConfigUtils.newInstance(this, "scoreDefinitionClass", scoreDefinitionClass);
}
if (scoreDefinitionType != null) {
switch (scoreDefinitionType) {
case SIMPLE:
return new SimpleScoreDefinition();
case SIMPLE_LONG:
return new SimpleLongScoreDefinition();
case SIMPLE_DOUBLE:
return new SimpleDoubleScoreDefinition();
case SIMPLE_BIG_DECIMAL:
return new SimpleBigDecimalScoreDefinition();
case HARD_SOFT:
return new HardSoftScoreDefinition();
case HARD_SOFT_LONG:
return new HardSoftLongScoreDefinition();
case HARD_SOFT_DOUBLE:
return new HardSoftDoubleScoreDefinition();
case HARD_SOFT_BIG_DECIMAL:
return new HardSoftBigDecimalScoreDefinition();
case HARD_MEDIUM_SOFT:
return new HardMediumSoftScoreDefinition();
case HARD_MEDIUM_SOFT_LONG:
return new HardMediumSoftLongScoreDefinition();
case BENDABLE:
if (bendableHardLevelsSize == null || bendableSoftLevelsSize == null) {
throw new IllegalArgumentException("With scoreDefinitionType (" + scoreDefinitionType
+ ") there must be a bendableHardLevelsSize (" + bendableHardLevelsSize
+ ") and a bendableSoftLevelsSize (" + bendableSoftLevelsSize + ").");
}
return new BendableScoreDefinition(bendableHardLevelsSize, bendableSoftLevelsSize);
case BENDABLE_BIG_DECIMAL:
if (bendableHardLevelsSize == null || bendableSoftLevelsSize == null) {
throw new IllegalArgumentException("With scoreDefinitionType (" + scoreDefinitionType
+ ") there must be a bendableHardLevelsSize (" + bendableHardLevelsSize
+ ") and a bendableSoftLevelsSize (" + bendableSoftLevelsSize + ").");
}
return new BendableBigDecimalScoreDefinition(bendableHardLevelsSize, bendableSoftLevelsSize);
default:
throw new IllegalStateException("The scoreDefinitionType (" + scoreDefinitionType
+ ") is not implemented.");
}
} else {
return new SimpleScoreDefinition();
}
}