System.out.println("Enter in \"limited\" mode: register only PcScTerminalManager with hard coded options\n");
terminalManagers.add(new PcScTerminalManager());
availableTerminals = terminalManagers.get(0).list();
if (0 == availableTerminals.size()){
String msg = "Could not find any terminal.";
throw new ExternalRuntimeException(msg);
}
}
if (parallelMode) {
StringBuilder cardsDetected = new StringBuilder("Cards detected in following readers:\n");
StringBuilder terminalsWithCard = new StringBuilder();
do{
StringBuilder allTerminals = new StringBuilder();
for (GenericTerminal terminal : availableTerminals) {
allTerminals.append("\t- ");
allTerminals.append(terminal.getName());
allTerminals.append("\n");
if (terminal.isCardPresent()) {
selectedTerminals.add(terminal);
terminalsWithCard.append("\t- ");
terminalsWithCard.append(terminal.getName());
terminalsWithCard.append("\n");
}
}
if (0 == selectedTerminals.size()) {
String msg = "No card has been detected, please insert card(s) in following terminals:\n";
msg+=allTerminals.toString();
int choice = JOptionPane.showConfirmDialog(null, msg, "Waiting for card", JOptionPane.OK_CANCEL_OPTION);
if (JOptionPane.OK_OPTION == choice) {
//nothing to do
}
if (JOptionPane.CANCEL_OPTION == choice) {
throw new StopRequestFromUserException("Operation cancelled by user.");
}
}
}while(0 == selectedTerminals.size());
if (PARALLEL_MODE_N_TERMINAL_NOT_FIXED > fixedParallelModeNTerminals) {
if (selectedTerminals.size() != fixedParallelModeNTerminals) {
String msg = "Command line request " + fixedParallelModeNTerminals + " terminals with card but " + selectedTerminals.size() + " have been detected:";
msg += "\n" + terminalsWithCard;
throw new ExternalRuntimeException(msg);
}
} else if ((PARALLEL_MODE_SKIP_CONFIRMATION != fixedParallelModeNTerminals) &&
selectedTerminals.size()!=fixedParallelModeNTerminals) {//if number match, don't ask anything
cardsDetected.append(terminalsWithCard);
cardsDetected.append("\nContinue ?\n");