/** @see de.willuhn.jameica.hbci.passports.pintan.rmi.PinTanConfig#getKonten() */ public Konto[] getKonten() throws RemoteException { // Und jetzt laden wir die Liste neu String[] ids = settings.getList(getID() + ".konto", null); if (ids == null || ids.length == 0) return null; List<String> fixedIds = new ArrayList<String>(); List<Konto> konten = new ArrayList<Konto>(); for (int i = 0; i < ids.length; ++i) { try { konten.add( (Konto) de.willuhn.jameica.hbci.Settings.getDBService().createObject(Konto.class, ids[i])); fixedIds.add(ids[i]); // Wenn das Konto geladen wurde, bleibt es erhalten } catch (ObjectNotFoundException noe) { Logger.warn("account " + ids[i] + " does not exist, removing from list"); } catch (RemoteException re) { throw re; } } if (fixedIds.size() != ids.length) { Logger.info("fixing list of assigned accounts"); settings.setAttribute(getID() + ".konto", fixedIds.toArray(new String[fixedIds.size()])); } return konten.toArray(new Konto[konten.size()]); }
/** * Ueberschrieben, damit wir bei Bedarf eine neue Ueberweisung erzeugen koennen. * * @see de.willuhn.jameica.hbci.gui.controller.AbstractTransferControl#getTransfer() */ public HibiscusTransfer getTransfer() throws RemoteException { if (transfer != null) return transfer; transfer = (Ueberweisung) getCurrentObject(); if (transfer != null) return transfer; transfer = (Ueberweisung) Settings.getDBService().createObject(Ueberweisung.class, null); return transfer; }
/** * 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; }
/** * Ermittelt die Liste der Zeilen fuer die Tabelle. * * @return Liste mit den Werten. * @throws RemoteException */ private List<EinnahmeAusgabe> getWerte() throws RemoteException { List<EinnahmeAusgabe> list = new ArrayList<EinnahmeAusgabe>(); Konto konto = (Konto) getKontoAuswahl().getValue(); Date start = (Date) this.getStart().getValue(); Date end = (Date) this.getEnd().getValue(); // Uhrzeit zuruecksetzen, falls vorhanden if (start != null) start = DateUtil.startOfDay(start); if (end != null) end = DateUtil.startOfDay(end); // Wird nur ein Konto ausgewertet? if (konto != null) { list.add(new EinnahmeAusgabe(konto, start, end)); return list; } // Alle Konten double summeAnfangssaldo = 0.0d; double summeEinnahmen = 0.0d; double summeAusgaben = 0.0d; double summeEndsaldo = 0.0d; DBIterator it = de.willuhn.jameica.hbci.Settings.getDBService().createList(Konto.class); it.setOrder("ORDER BY blz, kontonummer"); while (it.hasNext()) { EinnahmeAusgabe ea = new EinnahmeAusgabe((Konto) it.next(), start, end); // Zu den Summen hinzufuegen summeAnfangssaldo += ea.getAnfangssaldo(); summeEinnahmen += ea.getEinnahmen(); summeAusgaben += ea.getAusgaben(); summeEndsaldo += ea.getEndsaldo(); list.add(ea); } // Summenzeile noch hinten dran haengen EinnahmeAusgabe summen = new EinnahmeAusgabe(); summen.setIsSumme(true); summen.setText(i18n.tr("Summe")); summen.setAnfangssaldo(summeAnfangssaldo); summen.setAusgaben(summeAusgaben); summen.setEinnahmen(summeEinnahmen); summen.setEndsaldo(summeEndsaldo); summen.setEnddatum((Date) this.getStart().getValue()); summen.setStartdatum((Date) this.getEnd().getValue()); list.add(summen); return list; }
/** * @see de.willuhn.jameica.hbci.gui.parts.AbstractFromToList#getList(java.util.Date, * java.util.Date, java.lang.String) */ protected DBIterator getList(Date from, Date to, String text) throws RemoteException { HBCIDBService service = (HBCIDBService) Settings.getDBService(); DBIterator list = service.createList(getObjectType()); if (from != null) list.addFilter( "termin >= ?", new Object[] {new java.sql.Date(DateUtil.startOfDay(from).getTime())}); if (to != null) list.addFilter( "termin <= ?", new Object[] {new java.sql.Date(DateUtil.endOfDay(to).getTime())}); if (text != null && text.length() > 0) { list.addFilter("LOWER(bezeichnung) like ?", new Object[] {"%" + text.toLowerCase() + "%"}); } list.setOrder("ORDER BY " + service.getSQLTimestamp("termin") + " DESC, id DESC"); return list; }
/** @see de.willuhn.jameica.search.SearchProvider#search(java.lang.String) */ public List search(String search) throws RemoteException, ApplicationException { if (search == null || search.length() == 0) return null; String text = "%" + search.toLowerCase() + "%"; HBCIDBService service = (HBCIDBService) Settings.getDBService(); DBIterator list = service.createList(AuslandsUeberweisung.class); list.addFilter( "LOWER(zweck) LIKE ? OR " + "LOWER(empfaenger_name) LIKE ? OR " + "LOWER(endtoendid) LIKE ? OR " + "LOWER(empfaenger_konto) LIKE ?", text, text, text, text); list.setOrder("ORDER BY " + service.getSQLTimestamp("termin") + " DESC"); ArrayList results = new ArrayList(); while (list.hasNext()) { results.add(new MyResult((AuslandsUeberweisung) list.next())); } return results; }
/** @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event) */ public void handleEvent(Event event) { if (chart == null) return; try { int start = ((Integer) getRange().getValue()).intValue(); Konto k = konto; if (k == null) // Das ist der Fall, wenn das Kontoauswahlfeld verfuegbar ist k = (Konto) getKontoAuswahl().getValue(); if (start == startPrev && k == kPrev) return; // Auswahl nicht geaendert chart.removeAllData(); Date date = null; if (start < 0) { // Keine Anzahl von Tagen angegeben. Dann nehmen wir den // aeltesten gefundenen Umsatz als Beginn String query = "select min(valuta) from umsatz"; if (k != null) query += " where konto_id = " + k.getID(); date = (Date) Settings.getDBService() .execute( query, null, new ResultSetExtractor() { public Object extract(ResultSet rs) throws RemoteException, SQLException { if (!rs.next()) return null; return rs.getDate(1); } }); } else { long d = start * 24l * 60l * 60l * 1000l; date = DateUtil.startOfDay(new Date(System.currentTimeMillis() - d)); } if (date == null) { Logger.info("no start date, no entries, skipping chart"); return; } chart.setTitle(i18n.tr("Saldo-Verlauf seit {0}", HBCI.DATEFORMAT.format(date))); if (k == null) // wir zeichnen einen Stacked-Graph ueber alle Konten { DBIterator it = Settings.getDBService().createList(Konto.class); ChartDataSaldoSumme s = new ChartDataSaldoSumme(); while (it.hasNext()) { ChartDataSaldoVerlauf v = new ChartDataSaldoVerlauf((Konto) it.next(), date); chart.addData(v); s.add(v.getData()); } ChartDataSaldoTrend t = new ChartDataSaldoTrend(); t.add(s.getData()); chart.addData(s); chart.addData(t); } else // Ansonsten nur fuer eine { ChartDataSaldoVerlauf s = new ChartDataSaldoVerlauf(k, date); ChartDataSaldoTrend t = new ChartDataSaldoTrend(); t.add(s.getData()); chart.addData(s); chart.addData(t); } if (event != null) chart.redraw(); // nur neu laden, wenn via Select ausgeloest kPrev = k; startPrev = start; } catch (Exception e) { Logger.error("unable to redraw chart", e); Application.getMessagingFactory() .sendMessage( new StatusBarMessage( i18n.tr("Fehler beim Aktualisieren des Saldo-Verlaufs"), StatusBarMessage.TYPE_ERROR)); } }