public <Solution_> SolutionDescriptor<Solution_> buildSolutionDescriptor(SolverConfigContext configContext) { ScoreDefinition deprecatedScoreDefinition = scoreDirectorFactoryConfig == null ? null : scoreDirectorFactoryConfig.buildDeprecatedScoreDefinition(); if (scanAnnotatedClassesConfig != null) { if (solutionClass != null || entityClassList != null) { throw new IllegalArgumentException("The solver configuration with scanAnnotatedClasses (" + scanAnnotatedClassesConfig + ") cannot also have a solutionClass (" + solutionClass + ") or an entityClass (" + entityClassList + ").\n" + " Please decide between automatic scanning or manual referencing."); } return scanAnnotatedClassesConfig.buildSolutionDescriptor(configContext, deprecatedScoreDefinition); } else { if (solutionClass == null) { throw new IllegalArgumentException("The solver configuration must have a solutionClass (" + solutionClass + "), if it has no scanAnnotatedClasses (" + scanAnnotatedClassesConfig + ")."); } if (ConfigUtils.isEmptyCollection(entityClassList)) { throw new IllegalArgumentException( "The solver configuration must have at least 1 entityClass (" + entityClassList + "), if it has no scanAnnotatedClasses (" + scanAnnotatedClassesConfig + ")."); } return SolutionDescriptor.buildSolutionDescriptor((Class<Solution_>) solutionClass, entityClassList, deprecatedScoreDefinition); } }
@Test public void buildSimpleScoreDefinition() { ScoreDirectorFactoryConfig config = new ScoreDirectorFactoryConfig(); config.setScoreDefinitionType(ScoreDefinitionType.SIMPLE); ScoreDefinition scoreDefinition = config.buildDeprecatedScoreDefinition(); assertInstanceOf(SimpleScoreDefinition.class, scoreDefinition); }
@Test public void buildBendableScoreDefinition() { ScoreDirectorFactoryConfig config = new ScoreDirectorFactoryConfig(); config.setScoreDefinitionType(ScoreDefinitionType.BENDABLE); config.setBendableHardLevelsSize(2); config.setBendableSoftLevelsSize(3); BendableScoreDefinition scoreDefinition = (BendableScoreDefinition) config.buildDeprecatedScoreDefinition(); assertEquals(2, scoreDefinition.getHardLevelsSize()); assertEquals(3, scoreDefinition.getSoftLevelsSize()); }