/** * Versucht eine SEPA-Ueberweisung aus der Zwischenablage zu erstellen. * * @return die Ueberweisung, wenn eine erstellt werden konnte oder null. */ public AuslandsUeberweisung getUeberweisung() { try { // BUGZILLA 336 final Clipboard cb = new Clipboard(GUI.getDisplay()); TextTransfer transfer = TextTransfer.getInstance(); String text = (String) cb.getContents(transfer); if (text == null || text.length() == 0) return null; text = text.trim(); // Fuer den Fall, dass wir Key+Value nicht nur durch Doppelpunkt sondern zusaetzlich // auch noch durch einen Zeilenumbruch getrennt sind, entfernen wir Zeilen-Umbrueche, // wenn sie auf einen Doppelpunkt folgen // Siehe http://www.onlinebanking-forum.de/phpBB2/viewtopic.php?p=82519#82519 text = PT_SPLIT.matcher(text).replaceAll(":"); StringTokenizer st = new StringTokenizer(text, System.getProperty("line.separator", "\n")); HashMap values = new HashMap(); while (st.hasMoreTokens()) { String line = st.nextToken(); if (line == null || line.length() <= 0) continue; line = line.replaceAll("\\s", " "); int sep = line.indexOf(":"); if (sep == -1) continue; values.put(line.substring(0, sep).trim(), line.substring(sep + 1).trim()); } AuslandsUeberweisung u = (AuslandsUeberweisung) Settings.getDBService().createObject(AuslandsUeberweisung.class, null); Iterator i = values.keySet().iterator(); while (i.hasNext()) { String s = (String) i.next(); String value = (String) values.get(s); if (value == null || s == null) continue; if (PT_BLZ.matcher(s).matches()) u.setGegenkontoBLZ(value.replaceAll(" ", "")); else if (PT_KONTO.matcher(s).matches()) u.setGegenkontoNummer(value.replaceAll(" ", "")); else if (PT_NAME.matcher(s).matches()) u.setGegenkontoName(value); else if (PT_ZWECK.matcher(s).matches()) u.setZweck(value); } return u; } catch (Throwable t) { Logger.debug("unable to parse clipboard data: " + t.getMessage()); } return null; }
/** @see de.willuhn.jameica.search.Result#getName() */ public String getName() { try { Konto k = u.getKonto(); String[] params = new String[] { HBCI.DATEFORMAT.format(u.getTermin()), HBCI.DECIMALFORMAT.format(u.getBetrag()), k.getWaehrung(), u.getGegenkontoName(), u.getZweck(), k.getLongName(), }; I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N(); return i18n.tr("{0}: {1} {2} an {3} - {4} (via {5})", params); } catch (RemoteException re) { Logger.error("unable to determin result name", re); return null; } }
/** @see de.willuhn.jameica.gui.AbstractView#bind() */ public void bind() throws Exception { final AuslandsUeberweisungControl control = new AuslandsUeberweisungControl(this); this.transfer = control.getTransfer(); GUI.getView().setTitle(i18n.tr("SEPA-Überweisung bearbeiten")); GUI.getView() .addPanelButton( new PanelButton( "edit-select-all.png", new SepaExportUeberweisung(transfer), i18n.tr("Als SEPA-XML-Datei exportieren..."))); GUI.getView() .addPanelButton(new PanelButtonPrint(new PrintSupportAuslandsUeberweisung(transfer))); Container cl = new SimpleContainer(getParent()); cl.addHeadline(i18n.tr("Konto")); cl.addInput(control.getKontoAuswahl()); ColumnLayout cols = new ColumnLayout(getParent(), 2); // Linke Seite { Container container = new SimpleContainer(cols.getComposite()); container.addHeadline(i18n.tr("Empfänger")); container.addLabelPair(i18n.tr("Name"), control.getEmpfaengerName()); container.addLabelPair(i18n.tr("IBAN"), control.getEmpfaengerKonto()); container.addLabelPair(i18n.tr("BIC"), control.getEmpfaengerBic()); container.addCheckbox(control.getStoreEmpfaenger(), i18n.tr("In Adressbuch übernehmen")); } // Rechte Seite { Container container = new SimpleContainer(cols.getComposite()); container.addHeadline(i18n.tr("SEPA")); container.addInput(control.getEndToEndId()); container.addHeadline(i18n.tr("Sonstige Informationen (nur Hibiscus-intern)")); container.addText(i18n.tr("Diese Daten werden nicht an die Bank übertragen."), true); container.addInput(control.getTermin()); container.addInput(control.getReminderInterval()); } Container container = new SimpleContainer(getParent()); container.addHeadline(i18n.tr("Details")); container.addLabelPair(i18n.tr("Verwendungszweck"), control.getZweck()); container.addLabelPair(i18n.tr("Betrag"), control.getBetrag()); ButtonArea buttonArea = new ButtonArea(); buttonArea.addButton( i18n.tr("Löschen"), new DBObjectDelete(), transfer, false, "user-trash-full.png"); buttonArea.addButton( i18n.tr("Duplizieren..."), new Action() { public void handleAction(Object context) throws ApplicationException { if (control.handleStore()) // BUGZILLA 1181 new Duplicate().handleAction(transfer); } }, null, false, "edit-copy.png"); Button execute = new Button( i18n.tr("Jetzt ausführen..."), new Action() { public void handleAction(Object context) throws ApplicationException { if (control.handleStore()) new AuslandsUeberweisungExecute().handleAction(transfer); } }, null, false, "emblem-important.png"); execute.setEnabled(!transfer.ausgefuehrt()); Button store = new Button( i18n.tr("Speichern"), new Action() { public void handleAction(Object context) throws ApplicationException { control.handleStore(); } }, null, !transfer.ausgefuehrt(), "document-save.png"); store.setEnabled(!transfer.ausgefuehrt()); buttonArea.addButton(execute); buttonArea.addButton(store); buttonArea.paint(getParent()); Application.getMessagingFactory().registerMessageConsumer(this.mc); }