SI-3095 Als Betreiber moechte ich, dass Meldungen, die über die Schnittstelle SARIS importiert werden ohne weitere manuelle Taetigkeit oder Freigabe ueber den Kanal eigene Webseite veroeffentlicht werden.
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 0162baa..f937246 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
@@ -47,6 +47,10 @@ public static final String FREETEXT_ADDRESS_TYPE="freetext"; + public static final String LOCATION_TYPE_ADDRESS="address"; + public static final String LOCATION_TYPE_MAP="map"; + public static final String LOCATION_TYPE_STATION="station"; + private Constants() { // empty Constructor for the sake of SONAR }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java index 534688b..51e798b 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java
@@ -17,6 +17,7 @@ import lombok.extern.log4j.Log4j2; import org.apache.commons.lang.StringUtils; import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState; +import org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks.ProcessHelper; import org.eclipse.openk.gridfailureinformation.constants.Constants; import org.eclipse.openk.gridfailureinformation.exceptions.InternalServerErrorException; import org.eclipse.openk.gridfailureinformation.mapper.FailureInformationMapper; @@ -68,6 +69,9 @@ @Autowired ImportDataValidator importDataValidator; + @Autowired + ProcessHelper processHelper; + public boolean validateAndImport(ImportDataDto importDataDto) { ForeignFailureDataDto foreignFailureDataDto = importDataValidator.readSafeForeignFailureInfo(importDataDto); @@ -104,6 +108,12 @@ FailureInformationDto retVal = failureInformationService.insertFailureInfo(failureInformationDto, gfiProcessState); log.info("External failure information [MetaId: " + importDataDto.getMetaId() + "] from " + importDataDto.getSource() + " imported (inserted)."); + + if (foreignFailureDataDto.isAutopublish()) { + failureInformationService.insertPublicationChannelForFailureInfo(retVal.getUuid(), Constants.PUBLICATION_CHANNEL_OWNDMZ); + log.info("External failure information [MetaId: " + importDataDto.getMetaId() + "] from " + + importDataDto.getSource() + "is prepared for autopublish to channel: " + Constants.PUBLICATION_CHANNEL_OWNDMZ); + } return retVal; } else { @@ -128,6 +138,7 @@ ); } else { if (foreignFailureDataDto.isAutopublish()) { + processHelper.resetPublishedStateForChannels(updatedDto); log.info("Autopublish for external failure information [" + importDataDto.getMetaId() + "] from " + importDataDto.getSource() + " is true, current status remains unchanged."); } } @@ -171,6 +182,7 @@ failureInformationDto.setHousenumber(foreignFailureDataDto.getHousenumber()); setCoordinates(foreignFailureDataDto, failureInformationDto); + setLoationType(failureInformationDto); failureInformationDto.setStationIds(new LinkedList<>()); if( foreignStationId != null && !foreignStationId.isEmpty()) { @@ -191,6 +203,17 @@ failureInformationDto.setObjectReferenceExternalSystem(importDataDto.getAssembledRefId()); } + private void setLoationType(FailureInformationDto failureInformationDto) { + failureInformationDto.setFaultLocationArea(Constants.LOCATION_TYPE_ADDRESS); + if (failureInformationDto.getLatitude() != null && failureInformationDto.getLongitude() != null + && StringUtils.isBlank(failureInformationDto.getStreet())) { + failureInformationDto.setFaultLocationArea(Constants.LOCATION_TYPE_MAP); + failureInformationDto.setFreetextCity(failureInformationDto.getCity()); + failureInformationDto.setFreetextDistrict(failureInformationDto.getDistrict()); + failureInformationDto.setFreetextPostcode(failureInformationDto.getPostcode()); + } + } + private void setCoordinates(ForeignFailureDataDto foreignFailureDataDto, FailureInformationDto failureInformationDto) { BigDecimal latitude = foreignFailureDataDto.getLatitude(); BigDecimal longitude = foreignFailureDataDto.getLongitude();