package org.kapott.hbci.GV.generators; import java.util.logging.Logger; import org.kapott.hbci.GV.AbstractSEPAGV; import org.kapott.hbci.GV.HBCIJob; import org.kapott.hbci.exceptions.InvalidUserDataException; import org.kapott.hbci.sepa.PainVersion; /** * Factory zum Ermitteln des passenden Pain-Generators fuer den angegebenen Job. * * WICHTIG: Diese Klasse sowie die Ableitungen sollten auch ohne initialisiertes HBCI-System * funktionieren, um das XML ohne HBCI-Handler erstellen zu koennen. Daher sollte auf die * Verwendung von "HBCIUtils" & Co verzichtet werden. Das ist auch der Grund, warum hier * das Java-Logging verwendet wird und nicht das HBCI4Java-eigene. */ public class SEPAGeneratorFactory { private final static Logger LOG = Logger.getLogger(SEPAGeneratorFactory.class.getName()); /** * Gibt den passenden SEPA Generator f�r die angegebene PAIN-Version. * @param job der zu erzeugende Job. * @param version die PAIN-Version. * @return ISEPAGenerator * @throws IllegalAccessException * @throws InstantiationException * @throws ClassNotFoundException */ public static ISEPAGenerator get(HBCIJob job, PainVersion version) throws ClassNotFoundException, InstantiationException, IllegalAccessException { String jobname = ((AbstractSEPAGV)job).getPainJobName(); // referenzierter pain-Gesch�ftsvorfall return get(jobname,version); } /** * Gibt den passenden SEPA Generator f�r die angegebene PAIN-Version. * @param jobname der Job-Name. Z.Bsp. "UebSEPA". * @param version die PAIN-Version. * @return ISEPAGenerator * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException */ public static ISEPAGenerator get(String jobname, PainVersion version) throws ClassNotFoundException, InstantiationException, IllegalAccessException { if (!version.isSupported(jobname)) throw new InvalidUserDataException("PAIN version is not supported: " + version); String className = version.getGeneratorClass(jobname); LOG.fine("trying to init SEPA creator: " + className); Class cl = Class.forName(className); return (ISEPAGenerator) cl.newInstance(); } }