}
return new QueuedEntityPlacer(entitySelector, moveSelectorList);
}
private EntitySelectorConfig buildEntitySelectorConfig(HeuristicConfigPolicy configPolicy) {
EntitySelectorConfig entitySelectorConfig_;
if (entitySelectorConfig == null) {
entitySelectorConfig_ = new EntitySelectorConfig();
EntityDescriptor entityDescriptor = deduceEntityDescriptor(configPolicy.getSolutionDescriptor());
Class<?> entityClass = entityDescriptor.getEntityClass();
entitySelectorConfig_.setId(entityClass.getName());
entitySelectorConfig_.setEntityClass(entityClass);
if (configPolicy.getEntitySorterManner().hasSorter(entityDescriptor)) {
entitySelectorConfig_.setCacheType(SelectionCacheType.PHASE);
entitySelectorConfig_.setSelectionOrder(SelectionOrder.SORTED);
entitySelectorConfig_.setSorterManner(configPolicy.getEntitySorterManner());
}
} else {
entitySelectorConfig_ = entitySelectorConfig;
}
if (entitySelectorConfig_.getCacheType() != null
&& entitySelectorConfig_.getCacheType().compareTo(SelectionCacheType.PHASE) < 0) {
throw new IllegalArgumentException("The queuedEntityPlacer (" + this
+ ") cannot have an entitySelectorConfig (" + entitySelectorConfig_
+ ") with a cacheType (" + entitySelectorConfig_.getCacheType()
+ ") lower than " + SelectionCacheType.PHASE + ".");
}
return entitySelectorConfig_;
}