org.kapott.hbci.structures.Konto Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hbci4j-adorsys Show documentation
Show all versions of hbci4j-adorsys Show documentation
HBCI4j - Home Banking Computer Interface for Java - Clone from https://github.com/hbci4j/hbci4java
/* $Id: Konto.java,v 1.1 2011/05/04 22:37:49 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.structures;
import org.kapott.hbci.manager.HBCIUtils;
import java.io.Serializable;
import java.util.List;
/**
* Kontoverbindung.
* Diese Klasse repräsentiert eine einzelne Kontoverbindung
* eines Kunden bei einer Bank.
*/
public class Konto implements Serializable {
/**
* Länderkennzeichen des Kontos.
* Normalerweise ist hier der Wert DE
für
* Deutschland einzustellen.
*/
public String country;
/**
* Bankleitzahl der kontoführenden Bank
*/
public String blz;
/**
* Kontonummer des Kontos
*/
public String number;
/**
* Unterkontomerkmal des Kontos, kann null
sein
*/
public String subnumber;
/**
* Kontoart (Girokonto, Sparkonto, Festgeldkonto, Kreditkartenkonto, etc.)
* laut Segmentversion 5,6 von HIUPD.
* Wird bspw. bei DeuBa-Konten benötigt da dort verschiedene Konten genau die gleiche
* Kontonummer haben bzw. sich nur in der Kontoart unterscheiden
*/
public String acctype;
/**
* Name (Typ) des Kontos. Dieses Feld ist nur für
* Konten verfügbar, auf die der Anwender via HBCI Zugriff
* hat. Für alle anderen Konten ist dieser Wert null
*/
public String type;
/**
* Währung des Kontos. Hier ist in der Regel EUR
* für EURO gespeichert.
*/
public String curr;
/**
* Kreditinstitusseitiger Kundenname. Dieser Wert gibt an, unter
* welcher Kunden-ID ein Bankkunde Zugriff auf dieses Konto hat.
* Dieser Wert ist nur für Konten verfügbar, auf die der Anwender
* Zugriff via HBCI hat, für alle anderen Konten ist dieser
* Wert null
. Falls eine Bank Informationen über alle
* Konten bereitstellt, auf die ein Nutzer via HBCI Zugriff hat, so
* kann dieses Feld beim Hinzufügen von Aufträgen via
* {@link org.kapott.hbci.GV.AbstractHBCIJob#addToQueue(String)}
* ausgewertet werden.
*/
public String customerid;
/**
* Name des Kontoinhabers. Hier wird bei eigenen Konten der
* Inhabername eingestellt, wie er von der Bank bereitgestellt wird.
* Bei fremden Konten (z.B. bei den Konten, die als Gegenkonten auf
* einem Kontoauszug erscheinen) wird hier der Name eingestellt,
* wie er in den Auftragsdaten von der Bank geführt wird.
*/
public String name;
/**
* Name des Kontoinhabers (Fortsetzung) (optional).
*/
public String name2;
public Limit limit;
public List allowedGVs;
/**
* BIC des Kontos
*/
public String bic;
/**
* IBAN des Kontos
*/
public String iban;
/**
* Anlegen eines neuen Konto-Objektes. Die Währung wird auf EUR
voreingestellt
*/
public Konto() {
this.curr = "EUR";
}
/**
* Anlegen eines neuen Konto-Objektes. Die Währung wird auf EUR
* voreingestellt. Es werden BLZ und Kontonummer angegeben. Die Länderkennung
* wird auf DE
voreingestellt.
*
* @param blz Bankleitzahl der kontoführenden Bank
* @param number Kontonummer des Kontos
*/
public Konto(String blz, String number) {
this("DE", blz, number);
}
/**
* Anlegen eines neuen Konto-Objektes. Die Währung wird auf EUR
* voreingestellt. Es werden BLZ, Länderkennung und Kontonummer angegeben.
*
* @param country die Länderkennung des kontoführenden Institutes (normalerweise DE
)
* @param blz Bankleitzahl der kontoführenden Bank
* @param number Kontonummer des Kontos
*/
public Konto(String country, String blz, String number) {
this(country, blz, number, null);
}
// TODO: doku fehlt
public Konto(String country, String blz, String number, String subnumber) {
this();
this.country = country;
this.blz = blz;
this.number = number;
this.subnumber = subnumber;
}
/**
* Umwandeln der Kontoinformationen in einen String.
*
* @return Stringdarstellung der Kontoverbindung
*/
public String toString() {
StringBuffer ret = new StringBuffer();
if (type != null) {
ret.append(type + " ");
}
if (name != null) {
ret.append(name + " ");
}
if (name2 != null) {
ret.append(name2 + " ");
}
if (number != null) {
ret.append(number);
}
if (subnumber != null) {
ret.append("/" + subnumber);
}
ret.append(" ");
if (blz != null) {
ret.append("BLZ " + blz + " (" + HBCIUtils.getNameForBLZ(blz) + ") ");
}
if (bic != null) {
ret.append("BIC " + bic + " ");
}
if (iban != null) {
ret.append("IBAN " + iban + " ");
}
if (country != null) {
ret.append("[" + country + "] ");
}
if (curr != null) {
ret.append("(" + curr + ")");
}
return ret.toString();
}
/**
* Überprüfen der Kontonummer anhand des Prüfzifferverfahrens, welche für
* die Bank mit der Bankleitzahl blz
gilt. Der Aufruf dieser
* Methode setzt voraus, dass in diesem Kontoobjekt bereits blz
* und number
gesetzt sind. Diese Werte werden der Methode
* {@link org.kapott.hbci.manager.HBCIUtils#checkAccountCRC(String, String)}
* zur Überprüfung übergeben.
*
* @return es wird nur dann false
zurückgegeben, wenn das Prüfzifferverfahren
* für die jeweilige Bank implementiert ist und die Prüfung der Kontonummer einen
* Fehler ergibt. In jedem anderen Fall wird true
zurückgegeben
*/
public boolean checkCRC() {
return HBCIUtils.checkAccountCRC(blz, number);
}
// TODO: doku fehlt
public boolean checkIBAN() {
return HBCIUtils.checkIBANCRC(iban);
}
public boolean equals(Object o) {
boolean ret;
if (o instanceof Konto) {
Konto acc = (Konto) o;
ret = true;
// TODO: wenn this.blz==null und acc.blz!=null ist gibts ne exception
ret &= (this.blz == null && acc.blz == null || this.blz.equals(acc.blz));
ret &= (this.country == null && acc.country == null || this.country.equals(acc.country));
ret &= (this.number == null && acc.number == null || this.number.equals(acc.number));
ret &= (this.subnumber == null && acc.subnumber == null || this.subnumber.equals(acc.subnumber));
ret &= (this.curr == null && acc.curr == null || this.curr.equals(acc.curr));
ret &= (this.customerid == null && acc.customerid == null || this.customerid.equals(acc.customerid));
ret &= (this.name == null && acc.name == null || this.name.equals(acc.name));
ret &= (this.name2 == null && acc.name2 == null || this.name2.equals(acc.name2));
ret &= (this.type == null && acc.type == null || this.type.equals(acc.type));
ret &= (this.bic == null && acc.bic == null || this.bic.equals(acc.bic));
ret &= (this.iban == null && acc.iban == null || this.iban.equals(acc.iban));
} else {
ret = super.equals(o);
}
return ret;
}
/**
* Gibt true
zurück, wenn sich dieses Konto für SEPA-GVs
* verwenden lässt
*/
public boolean isSEPAAccount() {
return (bic != null && iban != null && bic.length() != 0 && iban.length() != 0);
}
}