Collection<PlanningVariableDescriptor> variableDescriptors, boolean randomSelection) {
this.leftEntitySelector = leftEntitySelector;
this.rightEntitySelector = rightEntitySelector;
this.variableDescriptors = variableDescriptors;
this.randomSelection = randomSelection;
PlanningEntityDescriptor leftEntityDescriptor = leftEntitySelector.getEntityDescriptor();
PlanningEntityDescriptor rightEntityDescriptor = rightEntitySelector.getEntityDescriptor();
if (!leftEntityDescriptor.getPlanningEntityClass().equals(rightEntityDescriptor.getPlanningEntityClass())) {
throw new IllegalStateException("The selector (" + this
+ ") has a leftEntitySelector's planningEntityClass ("
+ leftEntityDescriptor.getPlanningEntityClass()
+ ") which is not equal to the rightEntitySelector's planningEntityClass ("
+ rightEntityDescriptor.getPlanningEntityClass() + ").");
}
boolean anyChained = false;
for (PlanningVariableDescriptor variableDescriptor : variableDescriptors) {
if (!leftEntityDescriptor.getPlanningEntityClass().equals(
variableDescriptor.getPlanningEntityDescriptor().getPlanningEntityClass())) {