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 Währungsbusinessobjekt (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 die Methode getWrappedClass() und getNuclosStateAttribute() implementiert werden:
- getWrappedClass() sollte die Java-Klasse des verwendeten Referenzobjektes (bspw. org.nuclet.businessobject.ClientBilling) zurückgeben
- getNuclosStateAttribute() sollte dasjenige Attribut des verwendeten Referenzobjektes zurückliefern, dass den Nuclos-Status repräsentiert
Ein Beispiel dazu ist jeweils in einem Kommentarblock angegeben, dieses Beispiel ist an das tatsächlich genutzte Währungsbusinessobjekt (bzw. dessen BusinessObject-Klasse) anzupassen.
Die Beschreibung zur Anpassung der beiden Methoden getSourceStates() und getDestinationStates() finden Sie im nächsten Abschnitt (4.7.3).
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;
}
}