I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N();
Logger.info("open rdh passport");
try {
RDHKey activeKey = this.key != null ? this.key : RDHKeyFactory.findByKonto(passport != null ? passport.getKonto() : null);
if (activeKey == null)
throw new ApplicationException(i18n.tr("Keine Schl�ssel-Diskette f�r dieses Konto definiert"));
String filename = activeKey.getFilename();
File f = new File(filename);
if (!f.exists())
{
InsertKeyDialog kd = new InsertKeyDialog(f);
Boolean b = (Boolean) kd.open();
if (b == null || !b.booleanValue())
throw new OperationCanceledException(i18n.tr("Schl�sseldiskette nicht eingelegt oder nicht lesbar"));
}
Logger.info("using passport file " + filename);
String hbciVersion = activeKey.getHBCIVersion();
if (hbciVersion == null)
{
// Bei der Neuerstellung fragen wir immer den User nach der HBCI-Version
// Wir fragen die HBCI-Version via Messaging ab, damit sie ggf. auch
// (z.Bsp. vom Payment-Server) automatisch beantwortet werden kann.
QueryMessage msg = new QueryMessage(passport);
Application.getMessagingFactory().getMessagingQueue("hibiscus.passport.rdh.hbciversion").sendSyncMessage(msg);
Object data = msg.getData();
if (data == null || !(data instanceof String))
throw new ApplicationException(i18n.tr("HBCI-Version nicht ermittelbar"));
hbciVersion = (String) msg.getData();
// Wir merken uns die Auswahl damit wir den User nicht immer wieder fragen muessen
// Siehe auch http://www.onlinebanking-forum.de/phpBB2/viewtopic.php?t=14883
if (hbciVersion != null)
{
Logger.info("storing hbci [" + hbciVersion + "] version for key " + filename);
activeKey.setHBCIVersion(hbciVersion);
}
}
hbciPassport = activeKey.load();
// Wir speichern die verwendete PIN/TAN-Config im Passport. Dann wissen wir
// spaeter in den HBCI-Callbacks noch, aus welcher Config der Passport
// erstellt wurde. Wird z.Bsp. vom Payment-Server benoetigt.
((AbstractHBCIPassport)hbciPassport).setPersistentData(CONTEXT_CONFIG,activeKey);