package org.kapott.hbci.GV.generators; import java.io.OutputStream; import java.util.Properties; import org.kapott.hbci.sepa.PainVersion; /** * Basis-Interface fuer alle SEPA-Job-Generatoren. */ public interface ISEPAGenerator { /** * Das verwendete Encoding. UTF-8. * Siehe Siehe http://www.onlinebanking-forum.de/forum/topic.php?p=107420#real107420 */ public final static String ENCODING = "UTF-8"; /** * Schreibt den Job als SEPA-XML in den Stream. * @param sepaParams die sepaParams aus dem SEPA-Geschaeftsvorfall. * Urspruenglich wurde hier direkt eine Instanz von "AbstractSEPAGV" uebergeben * und dort job.getSEPAParam($targetname(ohne "sepa.") aufgerufen. Das hatte jedoch * den Nachteil, dass fuer die Instanziierung eines "AbstractSEPAGV" (welche * von "HBCIJobImpl" abgeleitet ist) ein HBCIHandler erforderlicher. Der * erfordert jedoch einen initialisierten und geoeffneten Passport, was wiederrum * bedeutet, dass das SEPA-XML nur innerhalb eines HBCI-Dialogs erzeugt werden * kann. Schon allein zur besseren Testbarkeit sollte sich das XML jedoch auch * ohne HBCI-Initialisierung erstellen lassen. Daher werden hier nur noch * die Properties uebergeben aus denen sich der SEPA-Generator dann anhand * der Parameternamen bedient. * @param os der Stream. * @param validate true, wenn das erzeugte XML gegen das PAIN-Schema validiert werden soll. * @throws Exception */ public void generate(Properties sepaParams, OutputStream os, boolean validate) throws Exception; /** * Liefert die PAIN-Version des Generators. * Wenn die Methode implementiert wurde und eine "vollqualifizierte" * Pain-Version zurueckliefert, in der sowohl URN als auch FILE gesetzt sind, * dann wird die Schema-Location dem Marshaller mittels "Marshaller.JAXB_SCHEMA_LOCATION" * uebergeben, was bewirkt, dass im Root-Element das Attribute * "xsi:schemaLocation" gesetzt wird. Ausserdem kann dann die Schema-Validierung * aktiviert werden. * @return die zu deklarierende Schema-Location oder NULL, falls nichts * angegeben werden soll. */ public PainVersion getPainVersion(); }