public void actionPerformed(ActionEvent e) { try { String scannedDestination = ((JTextField) e.getSource()).getText().toUpperCase(); validateDestinationScan(scannedDestination); DefaultListModel listModel = (DefaultListModel) destinationsList.getModel(); int lastPosition = listModel.getSize(); int seedsCount = 0; // todo: do we have to worry about more trays than required..? for (int i = 0; i < seedPlates.length; i++) { if (seedPlates[i].getSeedPlateBarcode() != null && SCANNED.equals(seedPlates[i].getStatus()) && !isContainedInList(seedPlates[i].getSeedPlateBarcode(), failedPlatesList)) { seedsCount++; } } if (lastPosition >= seedsCount) { throw new ChippingManagerException(DESTINATIONS_LIMIT_EXCEEDED); } addDestination(scannedDestination); } catch (Throwable cmException) { logger.error("Unable to scan destination ", cmException); JOptionPane.showMessageDialog( new JFrame(), cmException.getMessage(), TITLE_CHIPPING_MANAGER, JOptionPane.WARNING_MESSAGE); } scanDestination.setText(BLANK); }
public void unloadPlates() throws ChippingManagerException { seedChipperGUIController.getSeedChipperController().validateChangePriorToSave(); // List<Plate> platesToUnload = getFailedChiplates(); DefaultListModel destinationsListModel = (DefaultListModel) destinationsList.getModel(); int[] destinationsLoadCount = new int[destinationsListModel.getSize()]; // Assign destinations to the seed plates int destinationsListIndex = 0; updateSeedPlateStatus(); updateChipPlateStatus(); // Set the respective locations in the seed plates for (int i = 0; i < seedPlates.length; i++) { // todo: unload criteria to be refactored to plate object.... if (SCANNED.equals(seedPlates[i].getStatus()) && seedPlates[i].getPrescanStatus() != null) { destinationsListIndex = findDestinationListIndex( destinationsListModel, destinationsLoadCount, destinationsListIndex, i); // Decide the destination String seedPlateDestination = destinationsListModel.getElementAt(destinationsListIndex).toString(); logger.info( "assigning seed plates to plate " + seedPlates[i].getDeckNest() + " ->> " + seedPlateDestination); seedPlates[i].setStorageLocation(seedPlateDestination); destinationsLoadCount[destinationsListIndex]++; destinationsListIndex++; seedPlates[i].setPrescanStatus(CHIPPED); } } seedChipperGUIController .getSeedChipperController() .unloadChipperRun(userIDComboBox.getSelectedItem().toString()); // // seedChipperGUIController.getSeedChipperController().syncPrescannedPlatesList(platesToUnload, // seedPlates, chipPlates); seedChipperGUIController.drawDeck(); seedChipperGUIController.drawRunsOnDeck(); logger.info("Plates unloaded to seed store"); this.dispose(); }