/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/server/AbstractBaseUeberweisungImpl.java,v $
* $Revision: 1.17 $
* $Date: 2011/10/27 09:42:14 $
* $Author: willuhn $
* $Locker: $
* $State: Exp $
*
* Copyright (c) by willuhn.webdesign
* All rights reserved
*
**********************************************************************/
package de.willuhn.jameica.hbci.server;
import java.rmi.RemoteException;
import java.util.Date;
import de.willuhn.datasource.BeanUtil;
import de.willuhn.jameica.hbci.HBCI;
import de.willuhn.jameica.hbci.rmi.BaseUeberweisung;
import de.willuhn.jameica.hbci.rmi.Terminable;
import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.I18N;
/**
* Abstrakte Basis-Klasse fuer Ueberweisungen und Lastschriften.
*/
public abstract class AbstractBaseUeberweisungImpl extends AbstractHibiscusTransferImpl
implements BaseUeberweisung, Terminable
{
private final static transient I18N i18n = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getI18N();
/**
* @throws RemoteException
*/
public AbstractBaseUeberweisungImpl() throws RemoteException {
super();
}
/**
* @see de.willuhn.datasource.GenericObject#getPrimaryAttribute()
*/
public String getPrimaryAttribute() throws RemoteException {
return "zweck";
}
/**
* @see de.willuhn.jameica.hbci.server.AbstractHibiscusTransferImpl#insertCheck()
*/
protected void insertCheck() throws ApplicationException
{
super.insertCheck();
try
{
if (this.getTermin() == null)
this.setTermin(new Date());
}
catch (RemoteException e)
{
Logger.error("error while checking order",e);
throw new ApplicationException(i18n.tr("Fehler beim Pr�fen des Auftrages."));
}
}
/**
* @see de.willuhn.datasource.db.AbstractDBObject#updateCheck()
*/
protected void updateCheck() throws ApplicationException
{
try
{
if (!whileStore && ausgefuehrt())
throw new ApplicationException(i18n.tr("Auftrag wurde bereits ausgef�hrt und kann daher nicht mehr ge�ndert werden."));
}
catch (RemoteException e)
{
Logger.error("error while checking transfer",e);
throw new ApplicationException(i18n.tr("Fehler beim Pr�fen des Auftrags."));
}
super.updateCheck();
}
/**
* @see de.willuhn.datasource.db.AbstractDBObject#insert()
*/
public void insert() throws RemoteException, ApplicationException
{
if (getAttribute("ausgefuehrt") == null) // Status noch nicht definiert
setAttribute("ausgefuehrt",new Integer(0));
super.insert();
}
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#getTermin()
*/
public Date getTermin() throws RemoteException {
return (Date) getAttribute("termin");
}
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#getAusfuehrungsdatum()
*/
public Date getAusfuehrungsdatum() throws RemoteException
{
return (Date) getAttribute("ausgefuehrt_am");
}
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#ausgefuehrt()
*/
public boolean ausgefuehrt() throws RemoteException {
Integer i = (Integer) getAttribute("ausgefuehrt");
if (i == null)
return false;
return i.intValue() == 1;
}
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#setTermin(java.util.Date)
*/
public void setTermin(Date termin) throws RemoteException {
setAttribute("termin",termin);
}
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#ueberfaellig()
*/
public boolean ueberfaellig() throws RemoteException {
if (ausgefuehrt())
return false;
Date termin = getTermin();
if (termin == null)
return false;
return (termin.before(new Date()));
}
// Kleines Hilfsboolean damit uns der Status-Wechsel
// beim Speichern nicht um die Ohren fliegt.
private boolean whileStore = false;
/**
* @see de.willuhn.jameica.hbci.rmi.Terminable#setAusgefuehrt(boolean)
*/
public void setAusgefuehrt(boolean b) throws RemoteException, ApplicationException
{
try
{
whileStore = true;
setAttribute("ausgefuehrt",new Integer(b ? 1 : 0));
setAttribute("ausgefuehrt_am",new Date());
store();
Logger.info("[" + getTableName() + ":" + getID() + "] (" + BeanUtil.toString(this) + ") - executed: " + b);
}
finally
{
whileStore = false;
}
}
/**
* @see de.willuhn.jameica.hbci.rmi.BaseUeberweisung#getTextSchluessel()
*/
public String getTextSchluessel() throws RemoteException
{
return (String) getAttribute("typ");
}
/**
* @see de.willuhn.jameica.hbci.rmi.BaseUeberweisung#setTextSchluessel(java.lang.String)
*/
public void setTextSchluessel(String schluessel) throws RemoteException
{
setAttribute("typ",schluessel);
}
}