/* $Id: GVRTANList.java,v 1.1 2011/05/04 22:37:48 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.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.kapott.hbci.manager.HBCIUtils;
/** Diese Klasse enth�lt Informationen �ber aktuelle TAN-Listen des Kunden. Dabei wird
f�r jede TAN-Liste ein separates Objekt erzeugt. Innerhalb einer TAN-Listen-Informationen
gibt es zu jeder verbrauchten TAN genauere Daten. */
public class GVRTANList
extends HBCIJobResultImpl
{
/** Daten zu genau einer TAN */
public static class TANInfo
{
/** Feld zum "�bersetzen" der Verwendungs-Codes ({@link #usagecode}) in einen Klartext. */
public static final String[] usageCodes={
"TAN ist frei",
"(not used)",
"PIN-�nderung",
"Kontosperre aufheben",
"Aktivieren neuer TAN-Liste",
"Entwertete TAN (maschinell)",
"Mitteilung mit TAN",
"�berweisung",
"Wertpapierorder",
"Dauerauftrag",
"Entwertet wegen Zeit�berschreitung im Zweischritt-Verfahren",
"Entwertet wegen Zeit�berschreitung im Zweischritt-Verfahren (Mehrfach-Signaturen)",
"Entwertet (falsche Antwort auf Challenge?)",
"", "", "", "", "", "", "",
"Lastschriften",
"Euro-�berweisung",
"Auslands�berweisung",
"Termin�berweisung",
"Umbuchung"
};
/** Code, wof�r die TAN verwendet wurde, siehe auch {@link #usageCodes}). G�ltige Codes sind:
<ul>
<li>0 - TAN wurde noch nicht verbraucht</li>
<li>1 - Stornierung einer �berweisung</li>
<li>2 - PIN-�nderung</li>
<li>3 - Aufheben der Kontosperre</li>
<li>4 - Aktivieren einer neuen TAN-Liste</li>
<li>5 - TAN wurde maschinell entwertet</li>
<li>6 - Mitteilungsversand</li>
<li>7 - �berweisung/Lastschrift</li>
<li>8 - Wertpapierverwaltung</li>
<li>9 - Dauerauftragsverwaltung</li>
<li>... (siehe Sourcecode)</li>
</ul> */
public int usagecode;
/** Erl�uterung f�r TAN-Verwendung. Wenn {@link #usagecode}==<code>99</code>
* ist, dann enth�lt dieser String optional einen erl�uternden Text, wof�r
* die TAN verbraucht wurde. */
public String usagetxt;
/** Die TAN selbst. Ist nur dann gesetzt, wenn die TAN tats�chlich bereits verbraucht
wurde, sonst ist dieses Feld <code>null</code>*/
public String tan;
/** Zeitpunkt, wann die TAN verbraucht wurde. Diese Variable ist nur dann ungleich
<code>null</code>, wenn die TAN tats�chlich bereits verbraucht wurde */
public Date timestamp;
public String toString()
{
String usage=usagecode<usageCodes.length?usageCodes[usagecode]:"(unknown)";
return "TAN:"+tan+" Verwendung:"+usagecode+" ("+usage+") ("+usagetxt+")"+
(timestamp!=null?(" Zeitpunkt:"+HBCIUtils.datetime2StringLocal(timestamp)):"");
}
}
/** Informationen zu genau einer TAN-Liste. */
public static class TANList
{
/** Typ der TAN-Liste. G�ltige Codes sind:
<ul>
<li>A - aktive Liste</li>
<li>N - Noch nicht freigeschaltete Liste</li>
<li>S - Sperre der Liste</li>
<li>V - vorherige Liste</li>
</ul> */
public char status;
/** Listennummer */
public String number;
/** Erstellungsdatum der Liste, kann <code>null</code> sein. */
public Date date;
/** Anzahl TANs pro Liste */
public int nofTANsPerList;
/** Anzahl verbrauchter TANs pro Liste */
public int nofUsedTANsPerList;
private List<TANInfo> taninfos;
public TANList()
{
taninfos=new ArrayList<TANInfo>();
}
/** Gibt ein Feld mit Daten zu den einzelnen TANs dieser Liste zur�ck.
@return Array mit TAN-Informationen */
public TANInfo[] getTANInfos()
{
return taninfos.toArray(new TANInfo[taninfos.size()]);
}
public void addTANInfo(TANInfo info)
{
taninfos.add(info);
}
public String toString()
{
StringBuffer ret=new StringBuffer();
String linesep=System.getProperty("line.separator");
ret.append("TANListe Nummer ").append(number).append(" Typ:").append(status+linesep);
ret.append("nofTANsPerList: ").append(nofTANsPerList).append("; nofUsedTANsPerList: ").append(nofUsedTANsPerList+linesep);
for (Iterator<TANInfo> i=taninfos.iterator();i.hasNext();) {
ret.append(" ").append(i.next().toString()).append(linesep);
}
return ret.toString().trim();
}
}
private List<TANList> tanlists;
public GVRTANList()
{
tanlists=new ArrayList<TANList>();
}
public void addTANList(TANList list)
{
tanlists.add(list);
}
/** Gibt ein Array mit Informationen �ber jede verf�gbare TAN-Liste zur�ck.
@return Array mit TAN-Listen-Informationen */
public TANList[] getTANLists()
{
return tanlists.toArray(new TANList[tanlists.size()]);
}
public String toString()
{
StringBuffer ret=new StringBuffer();
for (Iterator<TANList> i=tanlists.iterator();i.hasNext();) {
ret.append(i.next().toString()).append(System.getProperty("line.separator"));
}
return ret.toString().trim();
}
}