Merge branch 'SI-753_Mehrere_Stationen' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into DEVELOP
diff --git a/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/repository/StationRepository.java b/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/repository/StationRepository.java
index f4d1ad8..030d2db 100644
--- a/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/repository/StationRepository.java
+++ b/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/repository/StationRepository.java
@@ -27,5 +27,5 @@
List<TblStation> findAll();
- Optional<TblStation> findByG3efid(Long g3efid);
+ Optional<TblStation> findByStationId(String stationId);
}
diff --git a/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationService.java b/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationService.java
index 8e937cd..7464a76 100644
--- a/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationService.java
+++ b/addressImport/src/main/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationService.java
@@ -46,11 +46,18 @@
public StationDto updateOrInsertStationByG3efid(StationDto stationDto) {
try {
- Optional<TblStation> optTblStation = stationRepository.findByG3efid(stationDto.getG3efid());
+ Optional<TblStation> optTblStation = stationRepository.findByStationId(stationDto.getStationId());
if (optTblStation.isPresent() ) {
TblStation tblStationToSave = optTblStation.get();
+ tblStationToSave.setSdox1(stationDto.getSdox1());
+ tblStationToSave.setSdoy1(stationDto.getSdoy1());
+ tblStationToSave.setG3efid(stationDto.getG3efid());
+ tblStationToSave.setStationName(stationDto.getStationName());
+ tblStationToSave.setLatitude(stationDto.getLatitude());
+ tblStationToSave.setLongitude(stationDto.getLongitude());
+
TblStation savedStation = stationRepository.save(tblStationToSave);
return stationMapper.toStationDto(savedStation);
} else {
diff --git a/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationServiceTest.java b/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationServiceTest.java
index 414bab9..f5855c9 100644
--- a/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationServiceTest.java
+++ b/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/service/StationServiceTest.java
@@ -59,7 +59,7 @@
StationDto stationDto = MockDataHelper.mockStationDto(1);
stationDto.setUuid(null);
- when(stationRepository.findByG3efid(any(Long.class))).thenReturn(Optional.empty());
+ when(stationRepository.findByStationId(any(String.class))).thenReturn(Optional.empty());
when(stationRepository.save(any(TblStation.class)))
.then((Answer<TblStation>) invocation -> {
Object[] args = invocation.getArguments();
@@ -79,7 +79,7 @@
TblStation tblStation = stationMapper.toTableStation(stationDto);
- when(stationRepository.findByG3efid(any(Long.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByStationId(any(String.class))).thenReturn(Optional.of(tblStation));
when(stationRepository.save(any(TblStation.class)))
.then((Answer<TblStation>) invocation -> {
Object[] args = invocation.getArguments();
@@ -97,7 +97,7 @@
StationDto stationDto = MockDataHelper.mockStationDto(1);
TblStation tblStation = stationMapper.toTableStation(stationDto);
- when(stationRepository.findByG3efid(any(Long.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByStationId(any(String.class))).thenReturn(Optional.of(tblStation));
when(stationRepository.save(any(TblStation.class)))
.thenThrow(new IllegalArgumentException());
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
index ae2714f..be1ad8f 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
@@ -24,6 +24,7 @@
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@@ -80,9 +81,9 @@
}
@AfterMapping
default void populateStationIds(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
- List<TblStation> sourceList = source.getStations();
+ Set<TblStation> stations = source.getStations();
- failureInformationDto.setStationIds( sourceList != null ? sourceList.stream().map(TblStation::getUuid).collect(Collectors.toList()) : new LinkedList<>());
+ failureInformationDto.setStationIds( stations != null ? stations.stream().map(TblStation::getUuid).collect(Collectors.toList()) : new LinkedList<>());
}
@AfterMapping
default void populatePublicationChannels(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
index 1d4e91f..3ae1c6b 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
@@ -120,13 +120,13 @@
)
private List<TblDistributionGroup> distributionGroups = new LinkedList<>();
- @ManyToMany
+ @ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "tblFailureInformationStation",
joinColumns = {@JoinColumn(name = "fkTblFailureInformation")},
inverseJoinColumns = {@JoinColumn(name = "stationStationId", referencedColumnName="stationId") }
)
- private List<TblStation> stations = new LinkedList<>();
+ private Set<TblStation> stations = new HashSet<>();
@OneToOne(mappedBy = "tblFailureInformation")
private TblFailureInformationReminderMailSent failureInformationReminderMailSent;
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/StationRepository.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/StationRepository.java
index f00a4c9..990acf7 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/StationRepository.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/StationRepository.java
@@ -17,8 +17,6 @@
import org.eclipse.openk.gridfailureinformation.model.TblStation;
import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -32,9 +30,6 @@
Optional<TblStation> findByUuid(UUID uuid);
- @Query("select s from TblStation s where s.stationId = :stationid and s.stationName = :stationname")
- List<TblStation> findStationsByIdAndName(@Param("stationid") String stationid, @Param("stationname") String stationname);
-
Optional<TblStation> findByStationId(String stationId);
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 f3262f1..c279114 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
@@ -354,6 +354,8 @@
protected void updatePublicationChannels(FailureInformationDto sourceDto, TblFailureInformation destTblFailureInformation ){
+ if( sourceDto.getStationIds() != null ) {
+ Set<TblStation> stationList = new HashSet<>();
// Löschen zugeordneter Kanäle mit published = false
TblFailureInformation existingTblFailureInformation = failureInformationRepository.findByUuid(sourceDto.getUuid())
.orElseThrow(() -> new NotFoundException(Constants.FAILURE_INFO_UUID_NOT_EXISTING));
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationStationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationStationService.java
index cf6b66f..f72c773 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationStationService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationStationService.java
@@ -33,6 +33,7 @@
import javax.transaction.Transactional;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -75,7 +76,7 @@
TblStation station = stationRepository.findByUuid(groupDto.getUuid())
.orElseThrow(() -> new NotFoundException("station.uuid.not.existing"));
- List<TblStation> stations = failureInformation.getStations();
+ Set<TblStation> stations = failureInformation.getStations();
if (!stations.isEmpty()) {
for (TblStation group : stations) {
if (group.getUuid().equals(groupDto.getUuid())) {
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 095edf5..79d56b1 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
@@ -5,14 +5,14 @@
import org.eclipse.openk.gridfailureinformation.exceptions.InternalServerErrorException;
import org.eclipse.openk.gridfailureinformation.mapper.FailureInformationMapper;
import org.eclipse.openk.gridfailureinformation.util.ImportDataValidator;
-import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
-import org.eclipse.openk.gridfailureinformation.viewmodel.ForeignFailureDataDto;
-import org.eclipse.openk.gridfailureinformation.viewmodel.ImportDataDto;
-import org.eclipse.openk.gridfailureinformation.viewmodel.RadiusDto;
+import org.eclipse.openk.gridfailureinformation.viewmodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Optional;
import java.util.UUID;
@@ -34,6 +34,9 @@
StatusService statusService;
@Autowired
+ StationService stationService;
+
+ @Autowired
FailureInformationMapper failureInformationMapper;
@Autowired
@@ -52,7 +55,7 @@
}
-
+ @Transactional
private FailureInformationDto doImport(ImportDataDto importDataDto, ForeignFailureDataDto foreignFailureDataDto) {
FailureInformationDto existingDto = failureInformationService.findByObjectReferenceExternalSystem(importDataDto.getAssembledRefId());
@@ -117,7 +120,13 @@
failureInformationDto.setPostcode(foreignFailureDataDto.getPostcode());
failureInformationDto.setPressureLevel(foreignFailureDataDto.getPressureLevel());
failureInformationDto.setStationDescription(foreignFailureDataDto.getStationDescription());
- failureInformationDto.setStationId(foreignFailureDataDto.getStationId());
+ String foreignStationId = foreignFailureDataDto.getStationId();
+ failureInformationDto.setStationId(foreignStationId);
+ failureInformationDto.setStationIds(new LinkedList<>());
+ if( foreignStationId != null && !foreignStationId.isEmpty()) {
+ importStation(failureInformationDto.getStationIds(), foreignStationId);
+ }
+
failureInformationDto.setStreet(foreignFailureDataDto.getStreet());
failureInformationDto.setVoltageLevel(foreignFailureDataDto.getVoltageLevel());
@@ -134,6 +143,16 @@
failureInformationDto.setObjectReferenceExternalSystem(importDataDto.getAssembledRefId());
}
+ private void importStation(List<UUID> targetList, String stationIdToImport) {
+ StationDto selectedStation = stationService.getStationsById( stationIdToImport );
+ if( selectedStation != null ) {
+ targetList.add(selectedStation.getUuid());
+ }
+ if( !stationIdToImport.isEmpty() && targetList.isEmpty() ) {
+ log.warn("Import message delivered a stationId("+stationIdToImport+") that could not be resolved!");
+ }
+ }
+
private void importRadius(long foreignRadius, FailureInformationDto failureInformationDto) {
Optional<RadiusDto> bestFitHigh = radiusService.getRadii().stream()
.filter( r -> r.getRadius() >= foreignRadius )
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/StationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/StationService.java
index 03d2cf8..db229af 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/StationService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/StationService.java
@@ -15,12 +15,14 @@
package org.eclipse.openk.gridfailureinformation.service;
import org.eclipse.openk.gridfailureinformation.mapper.StationMapper;
+import org.eclipse.openk.gridfailureinformation.model.TblStation;
import org.eclipse.openk.gridfailureinformation.repository.StationRepository;
import org.eclipse.openk.gridfailureinformation.viewmodel.StationDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
@Service
@@ -39,10 +41,12 @@
}
- public List<StationDto> getStationsByIdAndName(String stationId, String stationName) {
- return stationRepository.findStationsByIdAndName(stationId, stationName).stream()
- .map(stationMapper::toStationDto)
- .collect(Collectors.toList());
+ public StationDto getStationsById(String stationId) {
+ Optional<TblStation> tblStation = stationRepository.findByStationId(stationId);
+ if( tblStation.isPresent()) {
+ return stationMapper.toStationDto(tblStation.get());
+ }
+ return null;
}
}
diff --git a/gfsBackendService/src/main/resources/application_localdev.yml b/gfsBackendService/src/main/resources/application_localdev.yml
index 9400b00..e686c93 100644
--- a/gfsBackendService/src/main/resources/application_localdev.yml
+++ b/gfsBackendService/src/main/resources/application_localdev.yml
@@ -23,9 +23,9 @@
port: 5672
username: ${GFI_RABBITMQ_USERNAME}
password: ${GFI_RABBITMQ_PASSWORD}
- import_exchange: importExchangeLocalDev
- failure_import_queue: failureImportQueueLocalDev
- failure_import_routingkey: importExchangeLocalDev.failureImportKeyLocalDev
+ import_exchange: importExchangeLocalDev_fd
+ failure_import_queue: failureImportQueueLocalDev_fd
+ failure_import_routingkey: importExchangeLocalDev.failureImportKeyLocalDev_fd
export_exchange: exportExchangeLocalDev
channels:
- name: MAIL
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/StationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/StationServiceTest.java
index 56f4dc5..242a4e2 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/StationServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/StationServiceTest.java
@@ -27,6 +27,7 @@
import org.springframework.test.context.ContextConfiguration;
import java.util.List;
+import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
@@ -58,13 +59,10 @@
@Test
public void shouldFindASingleBranchByIdAndName() {
TblStation mockTblStation = MockDataHelper.mockTblStation();
- List<TblStation> mockTblStationList = MockDataHelper.mockTblStationList();
- when(stationRepository.findStationsByIdAndName(any(String.class), any(String.class))).thenReturn(mockTblStationList);
- List<StationDto> stationDtoList = stationService.getStationsByIdAndName("xyz", "abc");
+ when(stationRepository.findByStationId(any(String.class))).thenReturn(Optional.of(mockTblStation));
+ StationDto stationDto = stationService.getStationsById("xyz");
- assertEquals(stationDtoList.size(), mockTblStationList.size());
- assertEquals(2, stationDtoList.size());
- assertEquals(stationDtoList.get(1).getUuid(), mockTblStationList.get(1).getUuid());
+ assertEquals(stationDto.getUuid(), mockTblStation.getUuid());
}
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
index da03d99..a207f20 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
@@ -29,6 +29,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
+import java.util.stream.Collectors;
import static org.eclipse.openk.gridfailureinformation.constants.Constants.INTERNAL_SHORT;
@@ -152,7 +153,7 @@
obj.setRefStatusIntern(mockRefStatus());
obj.setDistributionGroups(mockDistributionGroupList());
- obj.setStations(mockTblStationList());
+ obj.setStations(mockTblStationList().stream().collect(Collectors.toSet()));
return obj;
}
@@ -200,7 +201,7 @@
obj.setRefStatusIntern(mockRefStatus());
obj.setDistributionGroups(mockDistributionGroupList());
- obj.setStations(mockTblStationList());
+ obj.setStations(mockTblStationList().stream().collect(Collectors.toSet()));
return obj;
}
@@ -974,7 +975,7 @@
public static List<TblStation> mockTblStationList(){
- List<TblStation> stationList = new ArrayList();
+ List<TblStation> stationList = new LinkedList();
stationList.add(mockTblStation());
stationList.add(mockTblStation2());
return stationList;