SI-171 Veröffentlichte Meldungen in die DMZ pushen
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/api/SitCacheApi.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/api/SitCacheApi.java new file mode 100644 index 0000000..0dc8d46 --- /dev/null +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/api/SitCacheApi.java
@@ -0,0 +1,32 @@ +/* + ******************************************************************************* + * Copyright (c) 2019 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + ******************************************************************************* +*/ +package org.eclipse.openk.gridfailureinformation.api; + + +import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient(name = "${services.sitCache.name}") +public interface SitCacheApi { + + @PostMapping("/public-sit") + public void postPublicFailureInfos( + @RequestBody List<FailureInformationDto> failureInfoToPublish); + +}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java index a365849..1d9872b 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java
@@ -40,6 +40,7 @@ public static final String W = "W"; public static final String G = "G"; public static final String S = "S"; + public static final String CHANNEL_NOT_EXISTING = "channel.not.existing"; private Constants() { // empty Constructor for the sake of SONAR
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java index a4eb66c..67d965a 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.log4j.Log4j2; +import org.eclipse.openk.gridfailureinformation.api.SitCacheApi; import org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks.ProcessHelper; import org.eclipse.openk.gridfailureinformation.config.ResourceConfig; import org.eclipse.openk.gridfailureinformation.config.rabbitMq.RabbitMqChannel; @@ -77,7 +78,10 @@ private ResourceConfig resourceConfig; @Autowired - AuthNAuthService authNAuthService; + private AuthNAuthService authNAuthService; + + @Autowired + private SitCacheApi sitCacheApi; private static final String SUBJECT_DATE_PATTERN_APPLIED = "EEEE', den' dd.MM.yy 'um' HH:mm:ss"; protected Map<String,String> contentReplaceMap; @@ -93,7 +97,7 @@ RabbitMqChannel rChannel = getAvailableRabbitMqChannel(targetChannel); if(getAvailableRabbitMqChannel(targetChannel) == null){ - log.warn("channel.not.existing"); + log.warn(Constants.CHANNEL_NOT_EXISTING); continue; } @@ -117,11 +121,10 @@ return false; } - for (TblDistributionGroup distributionGroup : distributionGroups) { - prepareMessage(existingTblFailureInfo, distributionGroup, rChannel); - } + distributionGroups.forEach( x -> prepareMessage(existingTblFailureInfo, x, rChannel)); - } else { + } + else { //Veröffentlichung/Sende nur einmal (Bsp. Störungsauskunft.de) RabbitMqMessageDto rabbitMqMessageDto = new RabbitMqMessageDto(); FailureInformationDto failureInformationDto = failureInformationService.enrichFailureInfo(failureInformationMapper.toFailureInformationDto(existingTblFailureInfo)); @@ -132,7 +135,6 @@ // mark channel as published markChannelAsPublished(targetChannel, existingTblFailureInfo); - } } @@ -147,8 +149,8 @@ RabbitMqChannel rChannel = getAvailableRabbitMqChannel(targetChannel); if(getAvailableRabbitMqChannel(targetChannel) == null){ - log.warn("channel.not.existing"); - throw new NotFoundException("channel.not.existing"); + log.warn(Constants.CHANNEL_NOT_EXISTING); + throw new NotFoundException(Constants.CHANNEL_NOT_EXISTING); } rabbitMqConfig.checkExchangeAndQueueOnRabbitMq(rChannel.getExportQueue(), rChannel.getExportKey()); @@ -170,7 +172,7 @@ return true; } - public boolean exportFailureInformationsToDMZ(){ + public void exportFailureInformationsToDMZ(){ // Holen der in die DMZ zu exportierenden FailureInfos List<TblFailureInformation> tblFailureInfosVeroeffentlicht = failureInformationRepository @@ -182,14 +184,12 @@ // wohin damit? Frontend-Service, an den die Störungsinformationen geposted werden fehlt noch try{ - // Aufruf Frontend-Service - return true; + sitCacheApi.postPublicFailureInfos(failureInfoDtossVeroeffentlicht); } catch(Exception e){ - return false; - } - - } + log.error("error.exporting.published.failure.infos", e); + } + } private boolean isChannelAlreadyPublished(String targetChannel, TblFailureInformation existingTblFailureInfo) {
diff --git a/gfsBackendService/src/main/resources/application.yml b/gfsBackendService/src/main/resources/application.yml index f05dd3c..5ff8f0e 100644 --- a/gfsBackendService/src/main/resources/application.yml +++ b/gfsBackendService/src/main/resources/application.yml
@@ -77,6 +77,8 @@ mobile: Mobil useModuleNameForFilter: false moduleName: Störungsinformationstool + sitCache: + name: sitCacheService portalFeLoginURL: http://entopkon:8880/portalFE/#/login portalFeModulename: SIT DEV @@ -88,6 +90,10 @@ ribbon: listOfServers: http://entdockergss:9155 +sitCacheService: + ribbon: + listOfServers: http://entdockergss:3003 + feign: client: config: @@ -212,6 +218,10 @@ cors: corsEnabled: true + +export-to-dmz: + enabled: false + --- spring: @@ -314,6 +324,8 @@ name: contactService communicationType: mobile: Mobil + sitCache: + name: sitCacheService authNAuthService: ribbon: @@ -323,6 +335,10 @@ ribbon: listOfServers: http://localhost:9155 +sitCacheService: + ribbon: + listOfServers: http://localhost:3003 + cors: corsEnabled: true
diff --git a/gfsBackendService/src/main/resources/application_localdev.yml b/gfsBackendService/src/main/resources/application_localdev.yml index c6ce471..1cc1a10 100644 --- a/gfsBackendService/src/main/resources/application_localdev.yml +++ b/gfsBackendService/src/main/resources/application_localdev.yml
@@ -109,7 +109,7 @@ distribution-text: Bitte anpassen export-to-dmz: - enabled: true + enabled: false cron: 0 */1 * ? * * ---
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/config/TestConfiguration.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/config/TestConfiguration.java index 14cb60e..b208ff8 100644 --- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/config/TestConfiguration.java +++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/config/TestConfiguration.java
@@ -18,6 +18,7 @@ import org.eclipse.openk.gridfailureinformation.GridFailureInformationApplication; import org.eclipse.openk.gridfailureinformation.api.AuthNAuthApi; import org.eclipse.openk.gridfailureinformation.api.ContactApi; +import org.eclipse.openk.gridfailureinformation.api.SitCacheApi; import org.eclipse.openk.gridfailureinformation.bpmn.base.ProcessException; import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiGrid; import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessEnvironment; @@ -30,7 +31,6 @@ import org.eclipse.openk.gridfailureinformation.util.ImportDataValidator; import org.mockito.Mockito; import org.springframework.amqp.core.DirectExchange; -import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -39,7 +39,6 @@ import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; @@ -119,6 +118,9 @@ ContactApi contactApi() { return Mockito.mock(ContactApi.class); } @Bean + SitCacheApi sitCacheApi() { return Mockito.mock(SitCacheApi.class); } + + @Bean VersionMapper versionMapper() { return new VersionMapperImpl(); } @Bean