Das SEPA-Nuclet arbeitet mit Wrapper-Objekte anstelle der nur dem Zielnuclet bekannten BusinessObjects (siehe Abschnitt 4.8.1). Daher muss bei der Integration des SEPA-Nuclets dafür gesorgt werden, dass gewisse Datenbankzugriffe auf den tatsächlich genutzten Businessobjekte operieren können. D.h. die verwendeten Klassen und Attributnamen müssen bekannt sein. Die Bereitstellung erfolgt über businessobjektbezogene Fassaden.
Außerdem stellen die Fassaden Wrapper-Methoden bereit, die die tatsächlich verwendeten Businessobjekte auf die in Abschnitt 4.8.1. definierten Wrapper-Objekte umwandeln.
Bei der Anbindung des SEPA-Nuclets sind die folgende Fassadenklassen für Debitoren, Referenzen und Zahlungsreferenzen anzupassen:
Fassaden-Klasse | Funktion | Java-Package | Anzupassende Methoden |
---|
DebitorFacade | - Definition der tatsächlichen Debitorenklasse
- Wrapper-Methoden
| org.nuclet.sepa.facade | - getDebitorWrapper(UpdateContext)
- getDebitorWrapper(Modifiable)
- getWrappedClass()
|
ReferenceFacade | - Definition der tatsächlichen Klasse für Referenzobjekte
- Wrapper-Methoden
| org.nuclet.sepa.facade | - getReferenceWrapper(Modifiable)
- getWrappedClass()
|
PaymentReferenceFacade | - Definition der tatsächlichen Zahlungsreferenzklasse
- Definition von Attributen
- Wrapper-Methoden
| org.nuclet.sepa.facade | - getPaymentReferenceWrapper(Modifiable)
- getWrappedClass()
- getSEPAPaymentInformationAttribute()
|
Tabelle 4.8.2: Übersicht, Anpassungen in Fassaden-Klassen
4.7.2.1 DebitorFacade
In der Klasse DebitorFacade müssen drei Methoden implementiert werden:
- getDebitorWrapper(UpdateContext) wandelt das Debitoren-Businessobjekt aus dem UpdateContext in ein Objekt vom Typ AbstractDebitorWrapper
- getDebitorWrapper(Modifiable) wandelt ein Debitoren-Businessobjekt in ein Objekt vom Typ AbstractDebitorWrapper
- getWrappedClass() sollte die Java-Klasse des verwendeten Debitorenobjektes zurückgeben
Ein Beispiel dazu ist jeweils in einem Kommentarblock angegeben, dieses Beispiel ist an das tatsächlich genutzte Debitorenbusinessobjekt (bzw. dessen BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.facade;
import java.util.ArrayList;
import java.util.List;
import org.nuclos.api.businessobject.BusinessObject;
import org.nuclos.api.businessobject.facade.Modifiable;
import org.nuclos.api.context.UpdateContext;
import org.nuclos.api.exception.BusinessException;
import org.nuclet.sepa.wrapper.AbstractDebitorWrapper;
import org.nuclet.sepa.wrapper.DebitorWrapper;
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// import org.nuclet.businesstemplate.Client;
import de.bffs.Person;
/**
* Facade for Business Objects of type "Debitor"
*
* @version 1.0
* @date 21.03.2014
* @nuclet org.nuclet.SEPA
* @nucletversion 1.0.0
* @sincenucletversion 1.0.0
* @since 21.03.2014
*
* @author frank.lehmann@nuclos.de
*
*/
public class DebitorFacade<T extends BusinessObject & Modifiable> extends AbstractDebitorFacade<Person>
{
private static final DebitorFacade instance = new DebitorFacade();
/**
* Liefert die Singleton-Instanz dieser Klasse
*
*/
public static DebitorFacade getInstance()
{
return instance;
}
/**
* Wrap the context's actual reference objects inside an <code>AbstractReferenceWrapper</code>
*
* @param context A given <code>UpdateContext</code>
*
* @return the context's actual reference object, wrapped inside an <code>AbstractReferenceWrapper</code>
*
*/
public AbstractDebitorWrapper getDebitorWrapper(final UpdateContext context)
{
// @replace!
//
// return new DebitorWrapper(context.getBusinessObject(getWrappedClass()));
return new DebitorWrapper(context.getBusinessObject(getWrappedClass()));
}
/**
* Wrap the actual reference object inside an <code>AbstractReferenceWrapper</code>
*
* @param boDebitor The actual reference object
*
* @return the actual reference object, wrapped inside an <code>AbstractReferenceWrapper</code>
*
*/
public AbstractDebitorWrapper getDebitorWrapper(final Modifiable boDebitor)
{
// @replace!
//
// return new DebitorWrapper(boDebitor);
return new DebitorWrapper(boDebitor);
}
/**
* Get the class of the actual reference objects, i.e. the class wrapped by <code>DebitorWrapper</code>
*
* @return the class of the actual reference objects, i.e. the class wrapped by <code>DebitorWrapper</code>
*
*/
public Class<Person> getWrappedClass()
{
// @replace!
//
// return Client.class;
return Person.class;
}
}
4.7.2.2 ReferenceFacade
In der Klasse ReferenceFacade müssen drei Methoden implementiert werden:
- getReferenceWrapper(Modifiable) wandelt ein Referenz-Businessobjekt in ein Objekt vom Typ AbstractReferenceWrapper
- getWrappedClass() sollte die Java-Klasse des verwendeten Referenzobjektes zurückgeben
Ein Beispiel dazu ist jeweils in einem Kommentarblock angegeben, dieses Beispiel ist an das tatsächlich genutzte Referenzbusinessobjekt (bzw. dessen BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.facade;
import java.util.ArrayList;
import java.util.List;
import org.nuclos.api.businessobject.BusinessObject;
import org.nuclos.api.businessobject.facade.Modifiable;
import org.nuclos.api.exception.BusinessException;
import org.nuclet.sepa.wrapper.AbstractReferenceWrapper;
import org.nuclet.sepa.wrapper.ReferenceWrapper;
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// import org.nuclet.businesstemplate.ClientBilling;
import de.bffs.Rechnung;
/**
* Facade for Business Objects of type "Reference"
*
* @version 1.0
* @date 21.03.2014
* @nuclet org.nuclet.SEPA
* @nucletversion 1.0.0
* @sincenucletversion 1.0.0
* @since 21.03.2014
*
* @author frank.lehmann@nuclos.de
*
*/
public class ReferenceFacade<T extends BusinessObject & Modifiable> extends AbstractReferenceFacade<Rechnung>
{
private static final ReferenceFacade instance = new ReferenceFacade();
/**
* Liefert die Singleton-Instanz dieser Klasse
*
*/
public static ReferenceFacade getInstance()
{
return instance;
}
/**
* Wrap the actual reference objects inside an <code>AbstractReferenceWrapper</code>
*
* @return the actual reference objects, wrapped inside an <code>AbstractReferenceWrapper</code>
*
*/
public AbstractReferenceWrapper getReferenceWrapper(final Modifiable boReference)
{
// @replace!
//
// return new ReferenceWrapper(boReference);
return new ReferenceWrapper(boReference);
}
/**
* Get the class of the actual reference objects, i.e. the class wrapped by <code>ReferenceWrapper</code>
*
* @return the class of the actual reference objects, i.e. the class wrapped by <code>ReferenceWrapper</code>
*
*/
public Class<Rechnung> getWrappedClass()
{
// @replace!
//
// return ClientBilling.class;
return Rechnung.class;
}
}
4.7.2.3 PaymentReferenceFacade
In der Klasse PaymentReferenceFacade müssen drei Methoden implementiert werden:
- getPaymentReferenceWrapper(Modifiable) wandelt ein Zahlungsreferenz-Businessobjekt in ein Objekt vom Typ AbstractPaymentReferenceWrapper
- getWrappedClass() sollte die Java-Klasse des verwendeten Zahlungsreferenzobjektes zurückgeben
Ein Beispiel dazu ist jeweils in einem Kommentarblock angegeben, dieses Beispiel ist an das tatsächlich genutzte Zahlungsreferenzbusinessobjekt (bzw. dessen BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.facade;
import java.util.ArrayList;
import java.util.List;
import org.nuclos.api.businessobject.BusinessObject;
import org.nuclos.api.businessobject.facade.Modifiable;
import org.nuclos.api.businessobject.Query;
import org.nuclos.api.businessobject.QueryOperation;
import org.nuclos.api.businessobject.SearchExpression;
import org.nuclos.api.businessobject.attribute.ForeignKeyAttribute;
import org.nuclos.api.businessobject.facade.Stateful;
import org.nuclos.api.context.JobContext;
import org.nuclos.api.context.RuleContext;
import org.nuclos.api.exception.BusinessException;
import org.nuclos.api.provider.QueryProvider;
import org.nuclos.api.provider.BusinessObjectProvider;
import org.nuclet.sepa.wrapper.AbstractPaymentReferenceWrapper;
import org.nuclet.sepa.wrapper.PaymentReferenceWrapper;
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// import org.nuclet.businesstemplate.ClientBillingPosition;
import de.bffs.Forderung;
/**
* Facade for Business Objects of type "PaymentReference"
*
* @version 1.0
* @date 21.03.2014
* @nuclet org.nuclet.SEPA
* @nucletversion 1.0.0
* @sincenucletversion 1.0.0
* @since 21.03.2014
*
* @author frank.lehmann@nuclos.de
*
*/
public class PaymentReferenceFacade<T extends BusinessObject & Modifiable> extends AbstractPaymentReferenceFacade<Forderung>
{
private static final PaymentReferenceFacade instance = new PaymentReferenceFacade();
/**
* Liefert die Singleton-Instanz dieser Klasse
*
*/
public static PaymentReferenceFacade getInstance()
{
return instance;
}
/**
* Wrap the actual payment reference objects inside an <code>AbstractPaymentReferenceWrapper</code>
*
* @return the actual payment reference objects, wrapped inside an <code>AbstractPaymentReferenceWrapper</code>
*
*/
public AbstractPaymentReferenceWrapper getPaymentReferenceWrapper(final Modifiable boPaymentReference)
{
// @replace!
//
// return new PaymentReferenceWrapper(boPaymentReference);
return new PaymentReferenceWrapper(boPaymentReference);
}
/**
* Get the class of the actual payment reference objects, i.e. the class wrapped by <code>PaymentReferenceWrapper</code>
*
* @return the class of the actual payment reference objects, i.e. the class wrapped by <code>PaymentReferenceWrapper</code>
*
*/
public Class<Forderung> getWrappedClass()
{
// @replace!
//
// return ClientBillingPosition.class;
return Forderung.class;
}
protected ForeignKeyAttribute<Long> getSEPAPaymentInformationAttribute()
{
// @replace!
//
// return ClientBillingPosition.SEPAPaymentInformation;
return Forderung.SepaZahlungsinfo;
}
}