*/
public IntPair setHolders(IngredientList compatibleIngredientList, IntPair holderAndPos, HolderList holderList) throws RobotDriverException {
// give to each used ingredient a Holder and a position in Holder
HolderList inputHolderList = holderList.getInputHolders();
int holderNumber = holderAndPos.first;
Holder inputHolder = inputHolderList.get(holderNumber);
int maxPosition = inputHolder.xSize() * inputHolder.ySize(); // to handle position in holder
int currentPosition = holderAndPos.second; // to handle position in holder
for (Ingredient aIngredient : compatibleIngredientList) {
if (aIngredient.chemical().pipettingInfo().holder().name().equals("FREE")) {
if (currentPosition <= maxPosition) {
aIngredient.chemical().pipettingInfo().setHolder(inputHolder);
aIngredient.chemical().pipettingInfo().setPositionInHolder(String.valueOf(currentPosition));
currentPosition += 1;
} else {
holderNumber += 1;
// display error if not enough inputHolders
if (holderNumber >= inputHolderList.size()) {
throw new RobotDriverException("You do not have enough space in your input Holders!\n - You must Cancel and add input Holders to make this screen.\n");
}
inputHolder = inputHolderList.get(holderNumber);
maxPosition = inputHolder.xSize() * inputHolder.ySize();
currentPosition = 1;
aIngredient.chemical().pipettingInfo().setHolder(inputHolder);
aIngredient.chemical().pipettingInfo().setPositionInHolder(String.valueOf(currentPosition));
currentPosition += 1;
}