dipenseToWaste = true;
}
}
}
// then treat the rest
ConsecutiveDispenseList consecutiveDispenseList = new ConsecutiveDispenseList();
while (targetHolder.needIngredient(aIngredient)) {
// if we are just after a wash we pipet to waste
if (dipenseToWaste) {
saveAspirate.clear();
}
for (int tipNum = 0; tipNum < 8; tipNum++) {
if (targetHolder.needIngredient(aIngredient) == false) {
break;
}
DispenseInfo dispenseInfo = DispenseInfo.GenerateDispenseInfo(tipNum, targetHolder, aIngredient);
targetHolder.removeIngredientFromWell(aIngredient, dispenseInfo.column, dispenseInfo.line);
double doubleVolume = new Double(dispenseInfo.volume);
for (byte[] abyte : aIngredient.writeAspirate(workListWriter, tipNum, doubleVolume) ) {
saveAspirate.add(abyte);
}
consecutiveDispenseList.add(dispenseInfo);
}
// if we are just after a wash we pipet to waste
// after every wash and even at beginning Aspirate dispense to WASTE
if (dispenseIngredientToWaste && dipenseToWaste) {
// we wrote the Aspiration so we dispense in waste
// extracting from consecutiveDispenseList what we need for ColumnDispenseInfo
// prepare the Dispense in wasteHolder at column 0 the volume of each tip;
for (DispenseInfo tmpDI : consecutiveDispenseList) {
columnDispenseInfo.add(new StringPair(String.valueOf(tmpDI.tipNumber), tmpDI.volume));
}
wasteHolder.writeColumnDispense(workListWriter, 0, columnDispenseInfo, aIngredient.chemical().pipettingInfo().liquidClass().name());
columnDispenseInfo.clear();
// then we reAspirate the same thing
for (byte[] aAb : saveAspirate) {
workListWriter.write(aAb);
}
consecutiveDispenseList.writeDispense(workListWriter);
consecutiveDispenseList.clear();
dipenseToWaste = false; // we just did it so do not re-do it until next wash
curCountForWash += 1;
} else {
consecutiveDispenseList.writeDispense(workListWriter);
consecutiveDispenseList.clear();
curCountForWash += 1;
}
// check if we wash
if (curCountForWash >= washEvery) {
workListWriter.write(writeWash() + "\n");