if (terminals != null && terminals.size() > 0)
{
CardTerminal terminal = terminals.get(0);
String name = terminal.getName();
temp.setPCSCName(name);
PassportHandle handle = new PassportHandleImpl(temp);
handle.open();
handle.close(); // nein, nicht im finally, denn wenn das Oeffnen
// Passport liess sich oeffnen und schliessen. Dann haben
// wir den Kartenleser gefunden.
monitor.log(" " + name + " " + i18n.tr("gefunden"));
monitor.setStatusText(i18n.tr("OK. Kartenleser \"{0}\" gefunden",name));
monitor.setStatus(ProgressMonitor.STATUS_DONE);
monitor.setPercentComplete(100);
// Wir kopieren die temporaere Config noch in eine richtige
DDVConfig config = temp.copy();
config.setName(name);
return config;
}
}
catch (ApplicationException ae)
{
monitor.log(" " + ae.getMessage());
}
catch (Exception e)
{
Logger.error("unable to create ddv config",e);
}
finally
{
temp.setPCSCName(null); // muessen wir wieder zuruecksetzen
}
// Wir haben wohl nichts via PC/SC gefunden
monitor.log(" " + i18n.tr(" nicht gefunden"));
continue;
}
// Wir probieren alle Ports durch
for (String port:DDVConfig.PORTS)
{
if (task.isInterrupted())
throw new OperationCanceledException();
monitor.addPercentComplete(factor);
monitor.log(" " + i18n.tr("Port {0}",port));
temp.setPort(port);
try
{
PassportHandle handle = new PassportHandleImpl(temp);
handle.open();
handle.close(); // nein, nicht im finally, denn wenn das Oeffnen
// fehlschlaegt, ist nichts zum Schliessen da ;)
// Passport liess sich oeffnen und schliessen. Dann haben
// wir den Kartenleser gefunden.
monitor.log(" " + i18n.tr("gefunden"));