Konfigurations- und Erweiterungsmöglichkeiten

Modul partner-select-ui

Das Modul partner-select-ui stellt konfigurierbare Dialoge bereit, mit denen ein Partner ausgewählt oder angelegt werden kann. Die Auswahl oder die Erfassung eines Versicherungsnehmers sind beispielhafte Einsatzmöglichkeiten.

Zur Anzeige und Bearbeitung eines Partners sollte die UI eines Partnersystems (z.B. IBP) verwendet werden, oder alternativ das Modul partner-view-ui.

Anzeigen eines Standard-Dialogs zur Suche eines Partners

Es wird eine leere Implementierung von PartnerUI benötigt. Auf dieser kann dann einfach eine der beiden showSelectPartnerDialog() Methoden aufgerufen werden.

public class MyDefaultPartnerUI implements PartnerUI {
    // Use default implementation
}
        defaultPartnerUI.showSelectPartnerDialog("Partner Auswahl", new DefaultPartnerCache(partnerRepository),
                consumer,
                config);

Konfiguration des Standard-Dialogs zur Suche eines Partners

Um den Dialog zur Suche eines Partners zu konfigurieren, kann über ein EnumSet eine Kombination an Enums aus PartnerDialogConfig an de.faktorzehn.partnerinterface.ui.PartnerUI.showSelectPartnerDialog(String, PartnerCache, Consumer<Partner>, Function<Partner, MessageList>, PartnerDialogConfig) übergeben werden.

Table 1. Mögliche Konfigurationen der EnumSets

Konfiguration

Suche nach NaturalPerson

Suche nach LegalEntity

Erstellung von LegalEntity

Erstellung von NaturalPerson

SEARCH,NATURAL_PERSON

ja

nein

nein

nein

SEARCH,CREATE,NATURAL_PERSON

ja

nein

nein

ja

SEARCH,LEGAL_ENTITY

nein

ja

nein

nein

SEARCH,CREATE,LEGAL_ENTITY

nein

ja

ja

nein

SEARCH,NATURAL_PERSON,LEGAL_ENTITY

ja

ja

nein

nein

SEARCH,CREATE,NATURAL_PERSON,LEGAL_ENTITY

ja

ja

ja

ja

Customizing des Dialoges zur Suche eines Partners

Um den Dialog zur Suche eines Partners zu verändern, genügt es de.faktorzehn.partnerinterface.ui.PartnerUI.showSelectPartnerDialog(String, PartnerCache, Consumer<Partner>, Function<Partner, MessageList>, PartnerDialogConfig) in der Implementierung von PartnerUI zu überschreiben und eine eigene Implementierung von SearchPartnerLayoutConfig und/oder CreatePartnerLayoutConfig bei der Erstellung des SelectPartnerDialog zu übergeben. Hierfür können natürlich auch Ableitungen der Standardimplementierungen DefaultPartnerSearchConfig und DefaultPartnerTableRowPmo verwendet werden.

Damit auch das korrekte PMO für die Spalten der Tabelle verwendet wird, muss der Rückgabewert von de.faktorzehn.partnerinterface.ui.DefaultPartnerSearchConfig.createSearchResultRowPmo(Partner) auf die konkrete Implementierung gesetzt sein!

Konfiguration der Suche

Die Suche kann über das Interface SearchPartnerLayoutConfig im Wesentlichen in zwei Punkten verändert werden:

  • Die Eingabe der Suchparameter

  • Die Anzeige der Ergebnisse in der Tabelle

Das Interface SearchPartnerLayoutConfig bietet für diese beiden Aspekte Methoden an. Die Methode createSearchParameterPmo(Supplier<PartnerSearchParameters>, PartnerRepository) erzeugt das PMO für die Suchparameter, die Methode createSearchResultRowPmo(Partner) wird für jeden gefundenen Partner aufgerufen und definiert die Spalten in der Tabelle und die default Methode createSearchParameters(), die standardmäßig ein neues Objekt vom Typ PartnerSearchParameters zurückgibt.

Annotationen werden nicht vererbt! Daher müssen in einer Ableitung von DefaultPartnerTableRowPmo die Annotationen auf den überschriebenen Methoden wiederholt werden, wenn diese weiterhin gewünscht sind!
Die Labels bzw. Spaltennamen der Tabelle werden zur Übersetzung aus Property Dateien geladen. Wenn eine Subklasse verwendet wird, müssen entsprechend neue Property Dateien mit dem Namen der Subklasse erstellt werden.

Hier ein Beispiel in dem:

  • in der Spalte zur Partnernummer ein Prefix C hinzugefügt wird

  • die beiden Spalten Geschlecht und Geburtsdatum ausgeblendet werden

  • zu den Suchergebnissen noch "Custom Actions" hinzugefügt werden

  • und das Label für die Spalte zur Partnernummer verändert wird

public class MyCustomizedPartnerUI implements PartnerUI {

    @Override
    public OkCancelDialog showSelectPartnerDialog(String caption,
            PartnerCache cache,
            Consumer<Partner> showPartner,
            Function<Partner, MessageList> partnerValidator,
            EnumSet<PartnerDialogConfig> config) {
        return new SelectPartnerDialog(new MyCustomizedPartnerSearchConfig(), new DefaultCreatePartnerLayoutConfig(),
                cache,
                showPartner, p -> MessageConverter.convert(partnerValidator.apply(p)),
                config).open();
    }

}
public class MyCustomizedPartnerSearchConfig extends DefaultPartnerSearchConfig {

    @Override
    public MyCustomizedPartnerTableRowPmo createSearchResultRowPmo(Partner partner) {
        return new MyCustomizedPartnerTableRowPmo(partner);
    }

}
public class MyCustomizedPartnerTableRowPmo extends DefaultPartnerTableRowPmo {

    public MyCustomizedPartnerTableRowPmo(Partner partner) {
        super(partner);
    }

    @UITableColumn(flexGrow = 1)
    @UILabel(position = 10)
    @Override
    public String getNumber() {
        return "C" + super.getNumber();
    }

    @Override
    public String getDateOfBirth() {
        return "";
    }

    @Override
    public String getGender() {
        return "";
    }

    @UITableColumn(flexGrow = 0)
    @UISearchResultAction
    public List<MenuItemDefinition> getActions() {
        return Arrays.asList(new MenuItemDefinition("Show Partner Name", null,
                () -> Notification.show(getPartnerName()), "show-partner-name"));
    }

}
...
MyCustomizedPartnerTableRowPmo_number_label = #
...

Anpassung der Partnerneuanlage

Zum Erstellen eines Partners im Auswahldialog bietet das Interface CreatePartnerLayoutConfig entsprechende Methoden für natürliche und juristische Personen. Die Methoden geben jeweils ein PMO zurück das wiederum mit @UINestedComponent weitere PMOs enthält. Die Klassen CreateNaturalPersonPmo (natürliche Person) und CreateLegalEntityPmo (juristische Person) können als Basis verwendet werden.

Anzeigen eines Standard-Dialogs zur Suche eines Vermittlers

Es wird eine leere Implementierung von BrokerUI benötigt. Auf diese kann dann einfach die Methode showSelectBrokerDialog() aufgerufen werden.

public class MyDefaultBrokerUI implements BrokerUI {
    // Use default implementation
}
        brokerUI.showSelectBrokerDialog("Vermittlerauswahl", brokerRepository, Consumers.nopConsumer(),
                brokerValidator)

Customizing des Dialoges zur Suche eines Vermittlers

Das Customizing des Dialogs zur Suche eines Vermittlers funktioniert analog zum Customizing des Dialogs für Partner mit DefaultBrokerSearchConfig.