org.kapott.hbci.concurrent.HBCIRunnable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hbci4j-core Show documentation
Show all versions of hbci4j-core Show documentation
HBCI4j - Home Banking Computer Interface for Java
package org.kapott.hbci.concurrent;
import java.util.Properties;
import org.kapott.hbci.callback.HBCICallback;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.manager.HBCIUtils;
import org.kapott.hbci.passport.HBCIPassport;
/**
* Basis-Klasse für Implementierungen von {@link Runnable}, die typische Aufgaben mit einem {@link HBCIPassport}
* ausführen sollen.
*
* Implementierungen müssen die Methode {@link #execute()} ergänzen.
*
* Bei Ausführung einer solchen {@link Runnable} passiert folgendes:
*
*
* - {@link HBCIUtils.initThread(properties, callback)} wird mit den Parametern aus dem Constructor aufgerufen.
* - Das Passport wird von der {@link HBCIPassportFactory} abgefragt und darüber wird der {@link HBCIHandler} erzeugt.
* - {@link #execute()} wird aufgerufen.
* {@link HBCIPassport} und {@link HBCIHandler} sind über die Variablen passport
bzw. handler
verfügbar.
* - Abschließend werden Handler und Passport geschlossen, sowie {@link HBCIUtils#doneThread()} aufgerufen.
*
*
* @author Hendrik Schnepel
*/
public abstract class HBCIRunnable implements Runnable
{
private final Properties properties;
private final HBCICallback callback;
private HBCIPassportFactory passportFactory;
protected HBCIPassport passport = null;
protected HBCIHandler handler = null;
public HBCIRunnable(Properties properties, HBCICallback callback, HBCIPassportFactory passportFactory)
{
this.properties = properties;
this.callback = callback;
this.passportFactory = passportFactory;
}
@Override
public final void run()
{
init();
try
{
prepare();
execute();
}
catch (Exception e)
{
HBCIUtils.log(e);
}
finally
{
done();
}
}
private void init()
{
HBCIUtils.initThread(properties, callback);
}
private void prepare() throws Exception
{
passport = passportFactory.createPassport();
if (passport != null)
{
String version = passport.getHBCIVersion();
handler = new HBCIHandler((version.length() != 0) ? version : "plus", passport);
}
}
protected abstract void execute() throws Exception;
private void done()
{
if (handler != null)
{
handler.close();
}
if (passport != null)
{
passport.close();
}
HBCIUtils.doneThread();
}
}