/* $Id: GVRAccInfo.java,v 1.1 2011/05/04 22:37:47 willuhn Exp $ This file is part of HBCI4Java Copyright (C) 2001-2008 Stefan Palme HBCI4Java is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. HBCI4Java is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.kapott.hbci.GV_Result; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import org.kapott.hbci.manager.HBCIUtils; import org.kapott.hbci.manager.HBCIUtilsInternal; import org.kapott.hbci.structures.Konto; import org.kapott.hbci.structures.Value; /** Klasse f�r die Ergebnisdaten einer Kontostammdaten-Abfrage */ public class GVRAccInfo extends HBCIJobResultImpl { private static final BigDecimal ONE_THOUSAND = new BigDecimal("1000.00"); /** Informationen zu genau einem Konto */ public static class AccInfo { // TODO: doku fehlt public static class Address { public String name1; public String name2; public String street_pf; public String plz_ort; public String plz; public String ort; public String country; public String tel; public String fax; public String email; public String toString() { StringBuffer ret=new StringBuffer(); String linesep=System.getProperty("line.separator"); ret.append(name1); if (name2!=null) { ret.append(" "+name2); } ret.append(linesep); ret.append(street_pf).append(linesep); if (plz_ort!=null) { ret.append(plz_ort); } else { ret.append(plz).append(" ").append(ort); } ret.append(linesep); if (country!=null) { ret.append(country).append(linesep); } if (tel!=null) { ret.append("Tel: ").append(tel).append(linesep); } if (fax!=null) { ret.append("Fax: ").append(fax).append(linesep); } if (email!=null) { ret.append("Email: ").append(email).append(linesep); } return ret.toString(); } } public static final int DELIVER_TYPE_NONE=0; public static final int DELIVER_TYPE_POST=1; public static final int DELIVER_TYPE_KAD=2; public static final int DELIVER_TYPE_OFFICE=3; public static final int DELIVER_TYPE_EDV=4; public static final int TURNUS_DAILY=1; public static final int TURNUS_WEEKLY=2; public static final int TURNUS_MONTHLY=3; public static final int TURNUS_QUARTER=4; public static final int TURNUS_HALF=5; public static final int TURNUS_ANNUAL=6; /** Konto, auf das sich diese Daten beziehen */ public Konto account; /** Kontoart - Folgende Wertebereiche sind definiert:. <ul> <li>1-9 - Kontokorrent-/Girokonto</li> <li>10-19 - Sparkonto</li> <li>20-29 - Festgeldkonto (Termineinlagen) </li> <li>30-39 - Wertpapierdepot</li> <li>40-49 - Kredit-/Darlehenskonto</li> <li>50-59 - Kreditkartenkonto</li> <li>60-69 - Fondsdepot bei einer Kapitalanlagegesellschaft</li> <li>70-79 - Bausparvertrag</li> <li>80-89 - Versicherungsvertrag</li> <li>90-99 - Sonstige</li> </ul> <code>-1</code>, wenn diese Information nicht von der Bank bereitgestellt wird*/ public int type; /** Er�ffnungsdatum (optional) */ public Date created; /** 1000*Sollzins (optional) */ public long sollzins; /** 1000*Habenzins (optional) */ public long habenzins; /** 1000*�berziehungszins (optional) */ public long ueberzins; /** Kreditlinie (optional) */ public Value kredit; /** Referenzkonto (zB f�r Kreditkartenkonten) (optional) */ public Konto refAccount; /** Versandart f�r Kontoausz�ge. Folgende Werte sind definiert: <ul> <li><code>DELIVER_TYPE_NONE</code> - kein Auszug</li> <li><code>DELIVER_TYPE_POST</code> - Postzustellung</li> <li><code>DELIVER_TYPE_KAD</code> - Kontoauszugsdrucker</li> <li><code>DELIVER_TYPE_OFFICE</code> - Abholung in Gesch�ftsstelle</li> <li><code>DELIVER_TYPE_EDV</code> - elektronische �bermittlung</li> </ul>*/ public int versandart; /** Turnus f�r Kontoauszugszustellung (nur bei Postzustellung) (optional). * Folgende Werte sind definiert: * <ul> * <li><code>TURNUS_DAILY</code> - t�glicher Kontoauszug</li> * <li><code>TURNUS_WEEKLY</code> - w�chentlicher Kontoauszug</li> * <li><code>TURNUS_MONTHLY</code> - monatlicher Kontoauszug</li> * <li><code>TURNUS_QUARTER</code> - viertelj�hrlicher Kontoauszug</li> * <li><code>TURNUS_HALF</code> - halbj�hrlicher Kontoauszug</li> * <li><code>TURNUS_ANNUAL</code> - j�hrlicher Kontoauszug</li> * </ul> */ public int turnus; /** Weitere Informationen (optional) */ public String comment; // TODO: doku fehlt public Address address; // TODO public Berechtigter[] berechtigte; // /* TODO Briefanschrift (optional) */ public String toString() { StringBuffer ret=new StringBuffer(); String linesep=System.getProperty("line.separator"); ret.append("Konto ").append(account.toString()); ret.append(" (art: ").append(type).append(")").append(linesep); if (created!=null) ret.append("Er�ffnungsdatum: ").append(HBCIUtils.date2StringLocal(created)).append(linesep); ret.append("Sollzins:").append(HBCIUtilsInternal.bigDecimal2String(new BigDecimal(sollzins).divide(ONE_THOUSAND))); ret.append(" Habenzins:").append(HBCIUtilsInternal.bigDecimal2String(new BigDecimal(habenzins).divide(ONE_THOUSAND))); ret.append(" �berziehungszins:").append(HBCIUtilsInternal.bigDecimal2String(new BigDecimal(ueberzins).divide(ONE_THOUSAND))); ret.append(" Kredit: ").append(kredit).append(linesep); if (refAccount!=null) ret.append("Referenzkonto: ").append(refAccount.toString()).append(linesep); ret.append("Kontoauszug Versandart:").append(versandart); ret.append(" Turnus:").append(turnus).append(linesep); if (comment!=null) ret.append("Bemerkungen: ").append(comment).append(linesep); if (address!=null) { ret.append("Anschrift").append(linesep); ret.append(address.toString()).append(linesep); } // TODO: Berechtigte return ret.toString().trim(); } } private List<AccInfo> entries; public GVRAccInfo() { entries=new ArrayList<AccInfo>(); } public void addEntry(AccInfo info) { entries.add(info); } /** Holen aller empfangenen Kontostammdaten. @return Array mit einzelnen Konto-Informationen. Das Array ist niemals <code>null</code>, kann aber die L�nge <code>0</code> haben */ public AccInfo[] getEntries() { return entries.toArray(new AccInfo[entries.size()]); } public String toString() { StringBuffer ret=new StringBuffer(); String linesep=System.getProperty("line.separator"); int num=0; for (Iterator<AccInfo> i=entries.iterator();i.hasNext();) { num++; ret.append("Kontoinfo #").append(num).append(linesep); ret.append((i.next()).toString()+linesep); } return ret.toString().trim(); } }