/* $Id: INILetter.java,v 1.1 2011/05/04 22:37:45 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.tools; import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import org.kapott.hbci.callback.HBCICallbackConsole; import org.kapott.hbci.manager.HBCIUtils; import org.kapott.hbci.passport.AbstractHBCIPassport; import org.kapott.hbci.passport.HBCIPassport; /** <p>Tool zum Erzeugen eines INI-Briefes. Diese Klasse enth�lt kein Programmier-API, sondern ist direkt mit <code>java org.kapott.hbci.tools.INILetter [passporttype [passport-file [textfile]]]</code> ausf�hrbar.<p/> Mit diesem Tool kann zu einem bereits existierenden RDH-Passport ein INI-Brief erzeugt werden. Das Passport muss dabei schon initialisiert sein, und es m�ssen bereits Schl�ssel erzeugt worden sein. Dieses Tool wird also i.d.R. dann ben�tigt, wenn ein Passport erstmalig erzeugt wird und die Programmausf�hrung mit der Meldung <em>"Es muss ein INI-Brief erzeugt werden..."</em> abbricht.</p><p> Das erste Kommandozeilenargument <code>passporttype</code> gibt an, ob es sich um ein <code>RDH</code>-, ein <code>RDHNew</code>-, ein <code>SIZRDHFile</code>- oder ein <code>RDHXFile</code>-Passport-Format handelt. <code>RDH</code>-Passports sollten nicht mehr verwendet werden (siehe dazu auch Datei <code>README.RDHNew</code>). F�r <code>SIZRDHFile</code>-Passports wird eine separate Bibliothek ben�tigt (siehe {@link org.kapott.hbci.passport.HBCIPassportSIZRDHFile}).</p> <p>Das zweite Kommandozeilenargument <code>passport-file</code> ist dabei die Schl�sseldatei, in der die Passport-Daten gespeichert sind (entspricht also dem Inhalt von <code>client.passport.*.filename</code>).</p><p> Das Argument <code>textfile</code> gibt den Dateinamen einer Datei an, in die der INI-Brief geschrieben werden soll. Der INI-Brief wird als reine ASCII-Ausgabe erzeugt, welche ausgedruckt, unterschrieben und an die Bank versandt werden kann.</p><p> Falls ein oder beide Parameter nicht angegeben sind, so fragt das Tool interaktiv nach den entsprechenden Daten. </p>*/ public final class INILetter { private static HBCIPassport passport; private static String getArg(String[] args,int idx,String st) throws IOException { String ret=null; System.out.print(st+": "); System.out.flush(); if (args!=null && idx<args.length) { ret=args[idx]; System.out.println(ret); } else { ret=new BufferedReader(new InputStreamReader(System.in)).readLine(); } return ret; } public static void main(String[] args) throws IOException { String rdhtype=getArg(args,0,"Passport-Typ (RDH, RDHNew, SIZRDHFile oder RDHXFile)"); String pfilename=getArg(args,1,"Dateiname der Passport-Datei"); String ifilename=getArg(args,2,"Dateiname f�r INI-Brief (noch nicht existierende Text-Datei)"); String header="client.passport."+rdhtype; HBCIUtils.init(null,new HBCICallbackConsole()); HBCIUtils.setParam(header+".filename",pfilename); HBCIUtils.setParam(header+".init","1"); if (rdhtype.equals("SIZRDHFile")) { String libname=getArg(args,3,"Dateiname der SIZ-RDH-Bibliothek"); HBCIUtils.setParam(header+".libname",libname); } passport=AbstractHBCIPassport.getInstance(rdhtype); org.kapott.hbci.passport.INILetter iniletter=new org.kapott.hbci.passport.INILetter(passport,org.kapott.hbci.passport.INILetter.TYPE_USER); PrintWriter out=new PrintWriter(new FileWriter(ifilename)); out.print(iniletter.toString()); out.close(); } }