Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into SI-1967-Fix-Zuordnen-doppelter-Stationen
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 cca3561..229ce91 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
@@ -214,15 +214,21 @@
private void storeStations( TblFailureInformation tblToStore, List<UUID> stationIds ) {
List<TblStation> stationList = resolveStationIds(stationIds);
+ Set<TblStation> stationSet = new HashSet<>(stationList);
+ if(stationList.size() > stationSet.size()){
+ throw new OperationDeniedException(OperationType.INSERT, "double.assignment.of.stations");
+ }
List<TblFailureInformationStation> tblFailureStations
= failureInformationStationRepository.findByFkTblFailureInformation(tblToStore.getId());
failureInformationStationRepository.deleteAll(tblFailureStations);
- stationList.forEach(x-> {
+
+ stationSet.forEach(x-> {
TblFailureInformationStation newRecord = new TblFailureInformationStation();
newRecord.setStationStationId(x.getStationId());
newRecord.setFkTblFailureInformation(tblToStore.getId());
failureInformationStationRepository.save(newRecord);
});
+
}
private FailureInformationDto processGrid(FailureInformationDto failureInfoDto, GfiProcessState forcedState) {
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 66b1955..19bff4e 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
@@ -90,7 +90,7 @@
Optional<TblFailureInformationStation> fiStation = failureInformationStationRepository.findByFkTblFailureInformationAndStationStationId(failureInformation.getId(), station.getStationId());
if (fiStation.isPresent()) {
- throw new OperationDeniedException(OperationType.INSERT, "assignment.already.existing");
+ throw new OperationDeniedException(OperationType.INSERT, "double.assignment.of.stations");
}
TblFailureInformationStation assignmentToSave = new TblFailureInformationStation();
diff --git a/gfsBackendService/src/main/resources/application_localdev.yml b/gfsBackendService/src/main/resources/application_localdev.yml
index 75a0f69..6e0498d 100644
--- a/gfsBackendService/src/main/resources/application_localdev.yml
+++ b/gfsBackendService/src/main/resources/application_localdev.yml
@@ -14,6 +14,7 @@
spring:
datasource:
url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevelop
+ #url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevServer
username: ${GFI_DB_USERNAME}
password: ${GFI_DB_PASSWORD}
max-active: 5
diff --git a/gfsBackendService/src/main/resources/messages.properties b/gfsBackendService/src/main/resources/messages.properties
index ad05c7b..2c82171 100644
--- a/gfsBackendService/src/main/resources/messages.properties
+++ b/gfsBackendService/src/main/resources/messages.properties
@@ -16,5 +16,7 @@
channel.not.existing=der \u00fcbergebene Kanal existiert nicht.
channel.already.existing=der \u00fcbergebene Kanal existiert bereits für diese Störungsinformation.
delete.not.allowed=es dürfen nur Störungsmeldungen im Status 'neu' oder 'geplant' gelöscht werden.
+double.assignment.of.stations=Eine Störmeldung darf eine Station nur einmal enthalten.
+
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
index 2512edb..a63d6eb 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
@@ -27,6 +27,7 @@
import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationPublicationChannelDto;
import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.stubbing.Answer;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,8 +46,7 @@
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
//import java.sql.Date;
@Log4j2
@@ -148,6 +148,13 @@
@Test
public void shouldStoreFailureInformation() {
FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
+ List<UUID> stationList = new ArrayList<>();
+ stationList.add(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003"));
+
+ fiDto.setStationIds(stationList);
+
TblFailureInformation fiTbl = MockDataHelper.mockTblFailureInformation();
RefFailureClassification refFailureClassification = MockDataHelper.mockRefFailureClassification();
RefStatus refStatus = MockDataHelper.mockRefStatusCreated();
@@ -155,8 +162,12 @@
RefRadius refRadius = MockDataHelper.mockRefRadius();
RefExpectedReason refExpectedReason = MockDataHelper.mockRefExpectedReason();
List<HtblFailureInformation> hFailureList = MockDataHelper.mockHistTblFailureInformationList();
+
TblStation tblStation = MockDataHelper.mockTblStation();
- TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
+ TblStation tblStation2 = MockDataHelper.mockTblStation2();
+ TblStation tblStation3 = MockDataHelper.mockTblStation3();
+
+ //TblDistributionGroup tblDistributionGroup = Mock.mockTblD
when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(fiTbl));
when(branchRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refBranch));
@@ -165,8 +176,9 @@
when(radiusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refRadius));
when(expectedReasonRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refExpectedReason));
when(histFailureInformationRepository.findByUuid(any(UUID.class))).thenReturn(hFailureList);
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
- when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation2));
+ when(stationRepository.findByUuid(eq(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation3));
when(failureInformationRepository.save(any(TblFailureInformation.class)))
.then((Answer<TblFailureInformation>) invocation -> {
@@ -211,6 +223,9 @@
refStatus.setId(GfiProcessState.PLANNED.getStatusValue());
TblStation tblStation = MockDataHelper.mockTblStation();
+ TblStation tblStation2 = MockDataHelper.mockTblStation2();
+ TblStation tblStation3 = MockDataHelper.mockTblStation3();
+
List<TblAddress> addressList = MockDataHelper.mockTblAddressList();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
@@ -224,6 +239,13 @@
fiDto.setRadiusId(null);
fiDto.setExpectedReasonId(null);
+ List<UUID> stationList = new ArrayList<>();
+ stationList.add(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003"));
+
+ fiDto.setStationIds(stationList);
+
TblFailureInformation fiTbl = MockDataHelper.mockTblFailureInformation();
fiTbl.setId(777L);
fiTbl.setRefBranch(null);
@@ -236,7 +258,9 @@
when(statusRepository.findByUuid(any( UUID.class ))).thenReturn(Optional.of(refStatus));
when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(fiTbl));
when(stationRepository.findByStationId(anyString())).thenReturn(Optional.of(tblStation));
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation2));
+ when(stationRepository.findByUuid(eq(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation3));
when(addressRepository.findByStationId(anyString())).thenReturn(addressList);
when(failureInformationRepository.save(any(TblFailureInformation.class)))
@@ -438,7 +462,8 @@
when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(refStatus));
when(radiusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refRadius));
when(stationRepository.findByStationId(anyString())).thenReturn(Optional.of(tblStation));
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+ //when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+
when(addressRepository.findByStationId(anyString())).thenReturn(addressList);
//ExpectedReason cannot be found
@@ -454,14 +479,21 @@
@Test
public void shouldStoreNewFailureInformation() {
- FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
TblFailureInformation fiTbl = MockDataHelper.mockTblFailureInformation();
+ FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
+ List<UUID> stationList = new ArrayList<>();
+ stationList.add(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003"));
+ fiDto.setStationIds(stationList);
RefFailureClassification refFailureClassification = MockDataHelper.mockRefFailureClassification();
RefStatus refStatus = MockDataHelper.mockRefStatusCreated();
RefBranch refBranch = MockDataHelper.mockRefBranch();
RefRadius refRadius = MockDataHelper.mockRefRadius();
RefExpectedReason refExpectedReason = MockDataHelper.mockRefExpectedReason();
TblStation tblStation = MockDataHelper.mockTblStation();
+ TblStation tblStation2 = MockDataHelper.mockTblStation2();
+ TblStation tblStation3 = MockDataHelper.mockTblStation3();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
List<TblFailureInformationPublicationChannel> publicationChannelList = MockDataHelper.mockTblFailureInformationPublicationChannelList();
@@ -472,7 +504,9 @@
when(statusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refStatus));
when(radiusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refRadius));
when(expectedReasonRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refExpectedReason));
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation2));
+ when(stationRepository.findByUuid(eq(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation3));
when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
when(failureInformationPublicationChannelRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(publicationChannelList);
@@ -520,6 +554,11 @@
@Test
public void shouldInsertNewFailureInformation() {
FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
+ List<UUID> stationList = new ArrayList<>();
+ stationList.add(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003"));
+ fiDto.setStationIds(stationList);
TblFailureInformation fiTbl = MockDataHelper.mockTblFailureInformation();
RefFailureClassification refFailureClassification = MockDataHelper.mockRefFailureClassification();
RefStatus refStatus = MockDataHelper.mockRefStatusCreated();
@@ -527,6 +566,8 @@
RefRadius refRadius = MockDataHelper.mockRefRadius();
RefExpectedReason refExpectedReason = MockDataHelper.mockRefExpectedReason();
TblStation tblStation = MockDataHelper.mockTblStation();
+ TblStation tblStation2 = MockDataHelper.mockTblStation2();
+ TblStation tblStation3 = MockDataHelper.mockTblStation3();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
List<TblFailureInformationPublicationChannel> publicationChannelList = MockDataHelper.mockTblFailureInformationPublicationChannelList();
@@ -537,7 +578,9 @@
when(statusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refStatus));
when(radiusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refRadius));
when(expectedReasonRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refExpectedReason));
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation2));
+ when(stationRepository.findByUuid(eq(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation3));
when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
when(failureInformationPublicationChannelRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(publicationChannelList);
@@ -872,6 +915,11 @@
RefStatus statusQualified = MockDataHelper.mockRefStatusQUALIFIED();
FailureInformationDto dto = MockDataHelper.mockFailureInformationDto();
+ List<UUID> stationList = new ArrayList<>();
+ stationList.add(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003"));
+ stationList.add(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003"));
+ dto.setStationIds(stationList);
dto.setVoltageLevel(Constants.VOLTAGE_LEVEL_HS);
dto.setStatusExtern(null);
TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation();
@@ -883,6 +931,8 @@
RefExpectedReason refExpectedReason = MockDataHelper.mockRefExpectedReason();
TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
TblStation tblStation = MockDataHelper.mockTblStation();
+ TblStation tblStation2 = MockDataHelper.mockTblStation2();
+ TblStation tblStation3 = MockDataHelper.mockTblStation3();
List<TblFailureInformationPublicationChannel> pubChannelList = MockDataHelper.mockTblFailureInformationPublicationChannelList();
dto.setStatusInternId(statusQualified.getUuid());
@@ -897,7 +947,9 @@
when(radiusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refRadius));
when(expectedReasonRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refExpectedReason));
when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
- when(stationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb2aa-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation));
+ when(stationRepository.findByUuid(eq(UUID.fromString("8a5fb5ca-d26d-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation2));
+ when(stationRepository.findByUuid(eq(UUID.fromString("a1375ec8-d26e-11ea-87d0-0242ac130003")))).thenReturn(Optional.of(tblStation3));
when(failureInformationPublicationChannelRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(pubChannelList);
when(failureInformationRepository.save(any(TblFailureInformation.class))).thenReturn(tblFailureInformation);
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 71ffe74..7c36ac3 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
@@ -959,6 +959,22 @@
return tblStation;
}
+ public static TblStation mockTblStation3(){
+
+ TblStation tblStation = new TblStation();
+ tblStation.setId(323232L);
+ tblStation.setUuid(UUID.randomUUID());
+ tblStation.setSdox1(new BigDecimal(44.111));
+ tblStation.setSdoy1(new BigDecimal(9.777));
+ tblStation.setG3efid(3456L);
+ tblStation.setStationId("464646");
+ tblStation.setStationName("Mittlere Strasse 58");
+ tblStation.setLongitude(new BigDecimal(48.987444));
+ tblStation.setLatitude(new BigDecimal(12.121212));
+
+ return tblStation;
+ }
+
public static List<TblStation> mockTblStationList(){
List<TblStation> stationList = new LinkedList();