<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.faktorzehn.ios</groupId>
<artifactId>ios-expert-unfall</artifactId>
<version>25.7.0-SNAPSHOT</version>
</parent>
<artifactId>ios-expert-unfall-web</artifactId>
<name>Faktor-IOS-Expert Unfall-Web</name>
<packaging>jar</packaging>
<properties>
<checkstyle.header.file>${project.basedir}/../../checkstyle.java.header</checkstyle.header.file>
</properties>
<dependencies>
<dependency>
<groupId>de.faktorzehn.ios</groupId>
<artifactId>ios-expert-unfall-business</artifactId>
</dependency>
<dependency>
<groupId>de.faktorzehn.ios</groupId>
<artifactId>ios-basis-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.source}</target>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.linkki-framework.tooling</groupId>
<artifactId>linkki-apt</artifactId>
<version>${linkki.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
Sparte anlegen
Modul Web
Wenn für IOS eine linkki-Oberfläche eingerichtet werden soll, kann ein We-Modul erstellt werden, dass auf den Web-Modulen des Standards aufbaut.
Modul Web anlegen
Im Modul web
sind alle Implementierungen für die Oberfläche enthalten und hat Abhängigkeiten zum Modul business
und zum web
Modul von IOS-Basis.
Sparte konfigurieren
UvLobUIConfig
Im Modul web
muss unter anderem die Klasse UvLobUIConfig
erstellt werden.
/**
* Ableitung von {@link VbLobUIConfig} für die Sparte Unfall.
*/
@Component
public class UvLobUIConfig extends VbLobUIConfig {
private final UvLobConfig lobConfig;
private final ApplicationInfo applicationInfo;
@Autowired
public UvLobUIConfig(ApplicationInfo applicationInfo, UvLobConfig lobConfig, @Lazy PartnerUI partnerUI) {
super(partnerUI);
this.applicationInfo = requireNonNull(applicationInfo, "ApplicationInfo darf nicht null sein");
this.lobConfig = requireNonNull(lobConfig, "lobConfig darf nicht null sein");
}
@Override
public String getLobId() {
return getLobConfig().getLobId();
}
@Override
public UvLobConfig getLobConfig() {
return lobConfig;
}
@Override
public UvOfferViewConfig getOfferViewConfig() {
return new UvOfferViewConfig(this);
}
@Override
public UvStartNewOfferViewConfig getStartNewOfferViewConfig() {
return new UvStartNewOfferViewConfig(applicationInfo, this);
}
...
}
Seitenkonfiguration anlegen
Über die Klasse UvAngebotTaskConfigFactory
wird der Ablauf des Angebotsprozesses vorkonfiguriert.
public class UvAngebotTaskConfigFactory {
public TaskConfig createTaskConfig() {
return new TaskConfigBuilder()//
.stepConfig(new UvVersichertePersonStepConfig())
.stepConfig(new UvVersSchutzStepConfig())
.stepConfig(new UvVorversicherungStepConfig()) //
.stepConfig(new UvAngebotStepConfig()) //
.stepConfig(new UvAbschlussStepConfig()) //
.finishConfiguration(new UvAngebotFinishTaskConfig())//
.build();
}
}
Das Anbinden der Seite für den Angebotsprozess wird in drei Schritten angebunden.
Zuerst wird in der Klasse UvOfferViewConfig
die Anwendung des Layouts definiert. Der Standard bietet hier das SidebarLayout
Layout an:
/**
* Konfiguration der Sparte Unfall für die Bearbeitung eines Angebots.
*/
public class UvOfferViewConfig extends VbOfferViewConfig {
public UvOfferViewConfig(UvLobUIConfig lobUiConfig) {
super(lobUiConfig);
}
@Override
public OfferUIEditing createOfferUIEditing(Offer offer, User user) {
return new UvOfferUIEditing(getLobUiConfig(), createEditing(offer, user));
}
@Override
protected EditOfferComponentFactory getEditOfferComponentFactory() {
return new UvEditOfferSidebarSheets();
}
protected OfferEditing createEditing(Offer offer, User user) {
return new VbOfferEditing(offer, getLobConfig(), user);
}
}
Danach wird in der Layoutklasse UvEditOfferSidebarSheets
die Teilkomponente des Layouts (in diesem Fall ein SidebarSheet
) hinzugefügt:
/**
* Unfall-Erweiterung, die für den Edit-Offer-View-Inhalt ein {@link SidebarLayout} erstellt und
* diesem {@link LinkkiTabSheet SidebarSheets} hinzufügt.
*/
public class UvEditOfferSidebarSheets extends VbEditOfferSidebarSheets {
// (Haupt)EditSheet
@Override
protected SidebarSheet createEditSheet(OfferUIEditing uiEditing) {
return new UvEditOfferViewSidebarSheet(uiEditing).createSheet(createEditSheetHeader(uiEditing));
}
}
Als letztes wird in der Klasse UvEditOfferViewSidebarSheet
die Seite des Abgebotsprozesses initialisiert und angelegt.
/**
* Konfiguration der Sparte Unfall für die Bearbeitung eines Angebots
*/
public class UvEditOfferViewSidebarSheet extends VbEditOfferViewSidebarSheet {
public UvEditOfferViewSidebarSheet(OfferUIEditing uiEditing) {
super(uiEditing);
}
@Override
protected UvOfferUIEditing getUIEditing() {
return (UvOfferUIEditing)super.getUIEditing();
}
@Override
protected Component createEditViewContent() {
TaskConfig config = new UvAngebotTaskConfigFactory().createTaskConfig();
TaskContext context = new UvAngebotTaskContext(getLocale(), getUIEditing());
return TaskComponentFactory.createTaskComponentBasedOnTabSheet(config, context).getComponent();
}