SI-3095 Schnittstelle SARIS
Stoerungsauskunft.de angepasst
diff --git a/SARIS-Interface/src/main/java/org/eclipse/openk/gridfailureinformation/sarisinterface/service/ImportService.java b/SARIS-Interface/src/main/java/org/eclipse/openk/gridfailureinformation/sarisinterface/service/ImportService.java
index 923a154..1adad7f 100644
--- a/SARIS-Interface/src/main/java/org/eclipse/openk/gridfailureinformation/sarisinterface/service/ImportService.java
+++ b/SARIS-Interface/src/main/java/org/eclipse/openk/gridfailureinformation/sarisinterface/service/ImportService.java
@@ -83,7 +83,7 @@
                 pushForeignFailure(createForeignFailureMessageDto(geplanteVU));
                 ForeignFailureMessageDto foreignFailureMessageDto = createForeignFailureMessageDto(geplanteVU);
                 messageDtoList.add(foreignFailureMessageDto);
-                log.info("foreignFailureMessageDto.getMetaId() " + foreignFailureMessageDto.getMetaId());
+                log.trace("foreignFailureMessageDto" + foreignFailureMessageDto);
             }
             log.debug(messageDtoList);
         }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
index 5f01d7b..4a75c96 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
@@ -708,7 +708,7 @@
                 failureInformationStationRepository.findUuidByFkTblFailureInformation(failureInformationDto.getUuid());
 
         if(stationUuids.isEmpty()) {
-            log.debug("No station ids found for failureInfo: " + failureInformationDto.getUuid().toString());
+            log.trace("No station ids found for failureInfo: " + failureInformationDto.getUuid().toString());
             return;
         }
 
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/api/StoerungsauskunftApi.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/api/StoerungsauskunftApi.java
index 8fc8b14..bb22ef3 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/api/StoerungsauskunftApi.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/api/StoerungsauskunftApi.java
@@ -29,8 +29,10 @@
 @FeignClient(name="Stoerauskunft.de", url= "${stoerungsauskunft.apiUrl}")
 public interface StoerungsauskunftApi {
 
+    //Example call: "https://stage-api-operator.stoerungsauskunft.de/api/v1.0/outage?additiveMode=false"
     @PostMapping(value= "/outage")
-    feign.Response postOutage(@RequestBody List<StoerungsauskunftOutage> outage);
+    feign.Response postOutage(@RequestBody List<StoerungsauskunftOutage> outage,
+                              @RequestParam("additiveMode") boolean additiveMode);
 
     @GetMapping(value= "/reports")
     List<StoerungsauskunftUserNotification> getUserNotification(@RequestParam(value="sectorType") Integer sectorType);
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/ForeignFailureDataDto.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/ForeignFailureDataDto.java
index b6d4e1e..b00cd70 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/ForeignFailureDataDto.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/dtos/ForeignFailureDataDto.java
@@ -30,6 +30,14 @@
 @Data
 public class ForeignFailureDataDto implements Serializable {
 
+    private boolean isAutopublish;
+
+    private boolean isOnceOnlyImport;
+
+    private boolean isExcludeEquals;
+
+    private boolean isExcludeAlreadyEdited;
+
     @NotNull
     private boolean isPlanned;
 
diff --git a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportService.java b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportService.java
index 9b352ba..fcbbfdf 100644
--- a/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportService.java
+++ b/stoerungsauskunftInterface/src/main/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportService.java
@@ -23,6 +23,7 @@
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.exceptions.InternalServerErrorException;
 import org.eclipse.openk.gridfailureinformation.stoerauskunftinterface.mapper.StoerungsauskunftMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.messaging.MessageChannel;
@@ -50,6 +51,18 @@
     @Autowired
     StoerungsauskunftMapper stoerungsauskunftMapper;
 
+    @Value("${gridFailureInformation.autopublish:false}")
+    private boolean autopublish;
+    @Value("${gridFailureInformation.onceOnlyImport:false}")
+    private boolean onceOnlyImport;
+    @Value("${gridFailureInformation.excludeEquals:true}")
+    private boolean excludeEquals;
+    @Value("${gridFailureInformation.excludeAlreadyEdited:true}")
+    private boolean excludeAlreadyEdited;
+
+    @Value("${stoerungsauskunft.additiveMode:false}")
+    private boolean additiveMode;
+
     public void importUserNotifications() {
 
         List<StoerungsauskunftUserNotification> userNotificationList =
@@ -73,6 +86,10 @@
         ForeignFailureDataDto foreignFailureDataDto = stoerungsauskunftMapper.toForeignFailureDataDto(userNotification);
         foreignFailureDataDto.setBranch(Constants.BRANCH_ELECTRICITY);
         foreignFailureDataDto.setPlanned(false);
+        foreignFailureDataDto.setAutopublish(autopublish);
+        foreignFailureDataDto.setOnceOnlyImport(onceOnlyImport);
+        foreignFailureDataDto.setExcludeEquals(excludeEquals);
+        foreignFailureDataDto.setExcludeAlreadyEdited(excludeAlreadyEdited);
         return foreignFailureDataDto;
     }
 
@@ -106,7 +123,7 @@
         List<StoerungsauskunftOutage> stoerungsauskunftOutageExportList = new ArrayList<>();
         stoerungsauskunftOutageExportList.add(stoerungsauskunftOutageExport);
 
-        Response response = stoerungsauskunftApi.postOutage(stoerungsauskunftOutageExportList);
+        Response response = stoerungsauskunftApi.postOutage(stoerungsauskunftOutageExportList, additiveMode);
         if (response.status() >= 400) {
             log.error("Error while trying to post message to stoerungsauskunft.de with metaId: " + failureInformationDto.getUuid());
             throw new InternalServerErrorException("could.not.post.message.to.external.service");
diff --git a/stoerungsauskunftInterface/src/main/resources/application.yml b/stoerungsauskunftInterface/src/main/resources/application.yml
index 81acbd2..1c97053 100644
--- a/stoerungsauskunftInterface/src/main/resources/application.yml
+++ b/stoerungsauskunftInterface/src/main/resources/application.yml
@@ -46,12 +46,19 @@
 
 stoerungsauskunft:
   apiUrl: https://stage-api-operator.stoerungsauskunft.de/api/v1.0/
+  additiveMode: false
   user: ${GFI_STOERUNGSAUSKUNFT_USERNAME}
   password: ${GFI_STOERUNGSAUSKUNFT_PASSWORD}
   scheduling-import:
     enabled: false
     cron: 0 */15 * ? * *
 
+gridFailureInformation:
+  autopublish: false
+  onceOnlyImport: false
+  excludeEquals: true
+  excludeAlreadyEdited: true
+
 security.endpoint:
   user: ${GFI_MANUAL_ENDPOINTS_USERNAME}
   password: ${GFI_MANUAL_ENDPOINTS_PASSWORD}
diff --git a/stoerungsauskunftInterface/src/main/resources/application_localdev.yml b/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
index 3128479..00e5fca 100644
--- a/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
+++ b/stoerungsauskunftInterface/src/main/resources/application_localdev.yml
@@ -71,6 +71,12 @@
     enabled: false
     cron: 0 */15 * ? * *
 
+gridFailureInformation:
+  autopublish: false
+  onceOnlyImport: false
+  excludeEquals: true
+  excludeAlreadyEdited: false
+
 security.endpoint:
   user: ${GFI_MANUAL_ENDPOINTS_USERNAME}
   password: ${GFI_MANUAL_ENDPOINTS_PASSWORD}
diff --git a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
index 8d938dd..babf06c 100644
--- a/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
+++ b/stoerungsauskunftInterface/src/test/java/org/eclipse/openk/gridfailureinformation/stoerauskunftinterface/service/ImportExportServiceTest.java
@@ -82,9 +82,9 @@
         Request request = mock(Request.class);
         Response mockResponse = Response.builder().status(200).request(request).body("Test", StandardCharsets.UTF_8).build();
 
-        when(stoerungsauskunftApi.postOutage(any())).thenReturn(mockResponse);
+        when(stoerungsauskunftApi.postOutage(any(), anyBoolean())).thenReturn(mockResponse);
         importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto);
-        verify(stoerungsauskunftApi, times(1)).postOutage(anyList());
+        verify(stoerungsauskunftApi, times(1)).postOutage(anyList(), anyBoolean());
     }
 
     @Test
@@ -97,9 +97,9 @@
         Request request = mock(Request.class);
         Response mockResponse = Response.builder().status(200).request(request).body("Test", StandardCharsets.UTF_8).build();
 
-        when(stoerungsauskunftApi.postOutage(any())).thenReturn(mockResponse);
+        when(stoerungsauskunftApi.postOutage(any(), anyBoolean())).thenReturn(mockResponse);
         importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto);
-        verify(stoerungsauskunftApi, times(1)).postOutage(anyList());
+        verify(stoerungsauskunftApi, times(1)).postOutage(anyList(), anyBoolean());
     }
 
     @Test
@@ -112,9 +112,9 @@
         Request request = mock(Request.class);
         Response mockResponse = Response.builder().status(200).request(request).body("Test", StandardCharsets.UTF_8).build();
 
-        when(stoerungsauskunftApi.postOutage(any())).thenReturn(mockResponse);
+        when(stoerungsauskunftApi.postOutage(any(), anyBoolean())).thenReturn(mockResponse);
         importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto);
-        verify(stoerungsauskunftApi, times(1)).postOutage(anyList());
+        verify(stoerungsauskunftApi, times(1)).postOutage(anyList(), anyBoolean());
     }
 
     @Test
@@ -124,7 +124,7 @@
         Request request = mock(Request.class);
         Response mockResponse = Response.builder().status(400).request(request).body("Test", StandardCharsets.UTF_8).build();
 
-        when(stoerungsauskunftApi.postOutage(any())).thenReturn(mockResponse);
+        when(stoerungsauskunftApi.postOutage(any(), anyBoolean())).thenReturn(mockResponse);
         assertThrows(InternalServerErrorException.class, () -> importExportService.exportStoerungsauskunftOutage(rabbitMqMessageDto));
 
     }