Skip to content
Snippets Groups Projects
Commit 3087e1db authored by OZGCloud's avatar OZGCloud
Browse files

OZG-1929 OZG-2156 initial structure

parent 584cc58e
Branches
Tags
No related merge requests found
Showing
with 481 additions and 0 deletions
......@@ -22,6 +22,7 @@
<module>intelliform-adapter</module>
<module>router</module>
<module>forwarder</module>
<module>semantik-adapter</module>
</modules>
<properties>
......@@ -51,6 +52,11 @@
<artifactId>router</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>semantik-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>de.itvsh.ozg.pluto</groupId>
<artifactId>pluto-interface</artifactId>
......
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>parent</artifactId>
<version>0.19.0-SNAPSHOT</version>
</parent>
<artifactId>semantik-adapter</artifactId>
<name>Semantik Adapter</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>router</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>common</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService;
import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter;
import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter;
import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
@Service
public class SemantikAdapter {
@Autowired
private EngineBasedSemantikAdapter engineBasedAdapter;
@Autowired
private FormBasedSemantikAdapter formBasedAdapter;
@Autowired
private VorgangRemoteService vorgangRemoteService;
@Autowired
private VorgangServiceBlockingStub vorgangServiceStub;
public void processFormData(FormData formData) {
parseByEngineAdapter(formData);
parseByFormAdapter(formData);
vorgangRemoteService.createVorgang(formData, vorgangServiceStub);
}
private FormData parseByEngineAdapter(FormData formData) {
return engineBasedAdapter.parseFormData(formData);
}
private FormData parseByFormAdapter(FormData formData) {
return formBasedAdapter.parseFormData(formData);
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class AfmAttachmentsMapper implements EngineBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter {
@Autowired
private List<EngineBasedMapper> mappers;
@Override
public FormData parseFormData(FormData formData) {
var processedFormData = formData;
for (int i = 0; i < mappers.size(); i++) {
var mapper = mappers.get(i);
processedFormData = mapper.parseFormData(processedFormData);
}
return processedFormData;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class AfmHeaderMapper implements EngineBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
interface EngineBasedMapper {
FormData parseFormData(FormData formData);
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
public interface EngineBasedSemantikAdapter {
FormData parseFormData(FormData formData);
}
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class FormSolutionsAntragstellerMapper implements EngineBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class FormSolutionsAttachmentsMapper implements EngineBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter {
@Autowired
private List<EngineBasedMapper> mappers;
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class FormSolutionsZustaendigeStelleMapper implements EngineBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import de.itvsh.kop.common.datatype.StringBasedValue;
class AnliegenId extends StringBasedValue {
private static final long serialVersionUID = 1L;
AnliegenId(String anliegenId) {
super(anliegenId);
}
public static AnliegenId from(String anliegenId) {
return new AnliegenId(anliegenId);
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.List;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class EaAntragstellerFormBasedMapper implements FormBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
@Override
public List<AnliegenId> getResponsibleAnliegenIds() {
return null;// TODO mit den entsprechenden AnliegenIds befüllen
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.List;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Component
class EaZustaendigeStelleFormBasedMapper implements FormBasedMapper {
@Override
public FormData parseFormData(FormData formData) {
return null;
}
@Override
public List<AnliegenId> getResponsibleAnliegenIds() {
return null;// TODO mit den entsprechenden AnliegenIds befüllen
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.List;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
interface FormBasedMapper {
FormData parseFormData(FormData formData);
List<AnliegenId> getResponsibleAnliegenIds();
}
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
@Service
public class FormBasedSemantikAdapter {
@Autowired
private List<FormBasedMapper> mappers;
public FormData parseFormData(FormData formData) {
var formDataAnliegenId = getAnliegenId(formData);
var processedFormData = formData;
for (int i = 0; i < mappers.size(); i++) {
var mapper = mappers.get(i);
if (isResponsible(mapper, formDataAnliegenId)) {
processedFormData = mapper.parseFormData(processedFormData);
}
}
return processedFormData;
}
AnliegenId getAnliegenId(FormData formData) {
return null;// TODO AnliegenId aus FormData holen
}
private boolean isResponsible(FormBasedMapper mapper, AnliegenId anliegenId) {
return mapper.getResponsibleAnliegenIds().contains(anliegenId);
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService;
import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter;
import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter;
class SemantikAdapterTest {
@InjectMocks
private SemantikAdapter adapter;
@Mock
private EngineBasedSemantikAdapter engineAdapter;
@Mock
private FormBasedSemantikAdapter formAdapter;
@Mock
private VorgangRemoteService vorgangRemoteService;
@Nested
class TestProcessFormData {
@Mock
private FormData formData;
private FormData engineAdapterResponse = FormData.builder().build();
@BeforeEach
void mockEngineAdapter() {
when(engineAdapter.parseFormData(any())).thenReturn(engineAdapterResponse);
}
@Test
void shouldCallEngineAdapter() {
adapter.processFormData(formData);
verify(engineAdapter).parseFormData(formData);
}
@Test
void shouldCallFormAdapter() {
adapter.processFormData(formData);
verify(formAdapter).parseFormData(formData);
}
@Test
void shouldCallVorgangRemoteService() {
adapter.processFormData(formData);
verify(vorgangRemoteService).createVorgang(any(FormData.class), any());
}
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
class AfmEngineBasedAdapterTest {
@InjectMocks
private AfmEngineBasedAdapter adapter;
@Spy
private List<EngineBasedMapper> mappers;
@Mock
private EngineBasedMapper mapper;
@Nested
class TestParseFromData {
private FormData formData = FormData.builder().build();
@BeforeEach
void mockEngineBasedMapper() {
when(mappers.size()).thenReturn(1);
when(mappers.get(anyInt())).thenReturn(mapper);
}
@Test
void shouldCallMappers() {
adapter.parseFormData(formData);
verify(mapper).parseFormData(formData);
}
}
}
\ No newline at end of file
package de.itvsh.kop.eingangsadapter.semantik.formbased;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
class FormBasedSemantikAdapterTest {
@Spy
@InjectMocks
private FormBasedSemantikAdapter adapter;
@Spy
private List<FormBasedMapper> mappers;
@Mock
private FormBasedMapper mapper;
@Nested
class TestParseFromData {
private FormData formData = FormData.builder().build();
private AnliegenId anliegenId = AnliegenId.from(UUID.randomUUID().toString());
@BeforeEach
void mockEngineBasedMapper() {
when(mappers.size()).thenReturn(1);
when(mappers.get(anyInt())).thenReturn(mapper);
doReturn(anliegenId).when(adapter).getAnliegenId(any(FormData.class));
}
@Test
void shouldCallMappersOnMatchingAnliegenId() {
when(mapper.getResponsibleAnliegenIds()).thenReturn(List.of(anliegenId));
adapter.parseFormData(formData);
verify(mapper).parseFormData(formData);
}
@Test
void shouldNotCallMappersOnNonMatchingAnliegenId() {
when(mapper.getResponsibleAnliegenIds()).thenReturn(Collections.emptyList());
adapter.parseFormData(formData);
verifyNoMoreInteractions(mapper);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment