Logger.flush();
monitor.setStatus(ProgressMonitor.STATUS_DONE);
monitor.setPercentComplete(100);
monitor.setStatusText(i18n.tr("Sicherheits-Medium erfolgreich getestet."));
Application.getMessagingFactory().sendMessage(new StatusBarMessage(i18n.tr("Sicherheits-Medium erfolgreich getestet."), StatusBarMessage.TYPE_SUCCESS));
removeTarget(target);
if (!Application.getCallback().askUser(i18n.tr("Test erfolgreich. Konten automatisch anlegen?")))
return;
try
{
new KontoMerge().handleAction(handle.getKonten());
// Wir starten die aktuelle View neu, damit die Liste der Konten
// gleich aktualisiert wird
GUI.startView(GUI.getCurrentView().getClass(),GUI.getCurrentView().getCurrentObject());
}
catch (Exception e)
{
// Das darf fehlschlagen. Zum Beispiel, wenn die Bank sowas nicht unterstuetzt
Logger.error("unable to fetch accounts",e);
monitor.log(i18n.tr("Automatisches Anlegen der Konten fehlgeschlagen. Bitte legen Sie sie manuell an"));
}
}
catch (ApplicationException ae)
{
// Wenn ein Fehler auftrat, MUSS der PIN-Cache geloescht werden. Denn falls
// es genau deshalb fehlschlug, WEIL der User eine falsche PIN eingegeben
// hat, kriegt er sonst keine Chance, seine Eingabe zu korrigieren
DialogFactory.clearPINCache(handler != null ? handler.getPassport() : null);
Application.getMessagingFactory().sendMessage(new StatusBarMessage(ae.getMessage(), StatusBarMessage.TYPE_ERROR));
monitor.setStatus(ProgressMonitor.STATUS_ERROR);
monitor.setPercentComplete(100);
monitor.setStatusText(ae.getMessage());
removeTarget(target);
}
catch (Exception e)
{
Throwable cause = HBCIProperties.getCause(e);
if (cause == null) cause = e; // NPE proof - man weiss ja nie ;)
Logger.info("test of passport failed: " + cause.getClass() + ": " + cause.getMessage());
// Den kompletten Stacktrace loggen wir nur auf DEBUG, weil der beim Testen bzw. Suchen nach
// einem Kartenleser durchaus auftreten kann.
Logger.write(Level.DEBUG,"error while testing passport",e);
// Wenn ein Fehler auftrat, MUSS der PIN-Cache geloescht werden. Denn falls
// es genau deshalb fehlschlug, WEIL der User eine falsche PIN eingegeben
// hat, kriegt er sonst keine Chance, seine Eingabe zu korrigieren
DialogFactory.clearPINCache(handler != null ? handler.getPassport() : null);
// Wir entfernen das Ding vor dem Ausgeben der Fehlermeldungen.
// die kommen sonst alle doppelt.
removeTarget(target);
monitor.setStatus(ProgressMonitor.STATUS_ERROR);
String errorText = i18n.tr("Fehler beim Testen des Sicherheits-Mediums: {0}",cause.getMessage());
Application.getMessagingFactory().sendMessage(new StatusBarMessage(errorText, StatusBarMessage.TYPE_ERROR));
monitor.setStatusText(errorText);
monitor.log(i18n.tr("Aufgetretene Fehlermeldungen:"));
monitor.log("-----------------------------");
Throwable current = e;