SI-1962 Adressdaten einer Verdichtung werden nicht angezeigt, da PLZ fehlt oder Daten nicht einfach textlich angezeigt werden, wie sie sind.
diff --git a/gfsBackendService/sonar-project.properties b/gfsBackendService/sonar-project.properties index ea5875c..58afd24 100644 --- a/gfsBackendService/sonar-project.properties +++ b/gfsBackendService/sonar-project.properties
@@ -14,6 +14,4 @@ sonar.tests=src/test #sonar.test.inclusions=**/*.spec.ts sonar.test.exclusions=**/model/**,**/viewmodel/**, **/RabbitMqConfig.java -#sonar.ts.tslintconfigpath=tslint.json - -sonar.typescript.lcov.reportPaths=coverage/lcov.info \ No newline at end of file +#sonar.ts.tslintconfigpath=tslint.json \ No newline at end of file
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 e67bc70..7ee0f7f 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
@@ -496,9 +496,7 @@ setEarliestStartdate(listSubordinatedFailureInfos, condensedFailureInformation); setLatestEnddate(listSubordinatedFailureInfos, condensedFailureInformation); setExpectedReason(listSubordinatedFailureInfos, condensedFailureInformation); - setCity(listSubordinatedFailureInfos, condensedFailureInformation); - setStreet(listSubordinatedFailureInfos, condensedFailureInformation); - setDistrict(listSubordinatedFailureInfos, condensedFailureInformation); + setAddress(listSubordinatedFailureInfos, condensedFailureInformation); setRadius(listSubordinatedFailureInfos, condensedFailureInformation); @@ -573,58 +571,44 @@ } - private void setStreet(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){ + private void setAddress(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){ - String firstStreet = listFailureInfos.get(0).getStreet(); - - List<TblFailureInformation> filteredList = listFailureInfos + Optional<TblFailureInformation> firstCompleteFailureInformation = listFailureInfos .stream() - .filter(f -> f.getStreet()!=null) - .filter(f -> f.getStreet().equals(firstStreet)) - .collect(Collectors.toList()); + .filter(f -> f.getPostcode() != null && f.getStreet() != null && f.getHousenumber() != null) + .findFirst(); - if (listFailureInfos.size() == filteredList.size()) { - condensedFailureInformation.setStreet(firstStreet); - } - else{ - condensedFailureInformation.setStreet(null); + if (!firstCompleteFailureInformation.isPresent()) { + setCondensedFailureInformationAddress(condensedFailureInformation, null); + } else { + String address = concatAddress(firstCompleteFailureInformation.get()); + + List<TblFailureInformation> filteredList = listFailureInfos + .stream() + .filter(f -> f.getPostcode() != null && f.getStreet() != null && f.getHousenumber() != null) + .filter(f -> concatAddress(f).equals(address)) + .collect(Collectors.toList()); + + if (listFailureInfos.size() == filteredList.size()) { + setCondensedFailureInformationAddress(condensedFailureInformation, firstCompleteFailureInformation.get()); + } + else{ + setCondensedFailureInformationAddress(condensedFailureInformation, null); + } } } - private void setDistrict(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){ - - String firstDistrict = listFailureInfos.get(0).getDistrict(); - - List<TblFailureInformation> filteredList = listFailureInfos - .stream() - .filter(f -> f.getDistrict()!= null) - .filter(f -> f.getDistrict().equals(firstDistrict)) - .collect(Collectors.toList()); - - if (listFailureInfos.size() == filteredList.size()) { - condensedFailureInformation.setDistrict(firstDistrict); - } - else{ - condensedFailureInformation.setDistrict(null); - } + private void setCondensedFailureInformationAddress(TblFailureInformation condensedFailureInformation, TblFailureInformation failureInformation) { + condensedFailureInformation.setPostcode(failureInformation != null ? failureInformation.getPostcode() : null); + condensedFailureInformation.setStreet(failureInformation != null ? failureInformation.getStreet() : null); + condensedFailureInformation.setHousenumber(failureInformation != null ? failureInformation.getHousenumber() : null); + condensedFailureInformation.setCity(failureInformation != null ? failureInformation.getCity() : null); + condensedFailureInformation.setDistrict(failureInformation != null ? failureInformation.getDistrict() : null); } - private void setCity(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){ - - String firstCity = listFailureInfos.get(0).getCity(); - - List<TblFailureInformation> filteredList = listFailureInfos - .stream() - .filter(f -> f.getCity() != null) - .filter(f -> f.getCity().equals(firstCity)) - .collect(Collectors.toList()); - - if (listFailureInfos.size() == filteredList.size()) { - condensedFailureInformation.setCity(firstCity); - } - else{ - condensedFailureInformation.setCity(null); - } + private String concatAddress(TblFailureInformation failureInformation) { + if (failureInformation == null) return null; + return failureInformation.getPostcode() + failureInformation.getStreet() + failureInformation.getHousenumber(); } private void setExpectedReason(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){
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 18cac8d..ba01353 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
@@ -70,9 +70,7 @@ import java.util.Optional; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.anyLong; @@ -672,7 +670,7 @@ } @Test - public void shouldCondenseFailureInformations_equalFailureInfos() { + public void shouldCondenseFailureInformations_equalFailureInfos_completeAddress() { List uuidList = MockDataHelper.mockUuidList(); @@ -705,6 +703,8 @@ assertEquals(tblFailureInformation1.getStreet(), savedCondensedFailureInfoDto.getStreet()); assertEquals(tblFailureInformation1.getDistrict(), savedCondensedFailureInfoDto.getDistrict()); assertEquals(tblFailureInformation1.getCity(), savedCondensedFailureInfoDto.getCity()); + assertEquals(tblFailureInformation1.getPostcode(), savedCondensedFailureInfoDto.getPostcode()); + assertEquals(tblFailureInformation1.getHousenumber(), savedCondensedFailureInfoDto.getHousenumber()); assertEquals(tblFailureInformation1.getRefExpectedReason().getUuid(), savedCondensedFailureInfoDto.getExpectedReasonId()); assertEquals(tblFailureInformation1.getFailureEndPlanned(), savedCondensedFailureInfoDto.getFailureEndPlanned()); assertEquals(tblFailureInformation1.getFailureBegin(), savedCondensedFailureInfoDto.getFailureBegin()); @@ -714,13 +714,56 @@ } @Test - public void shouldCondenseFailureInformations_differentFailureInfos() { + public void shouldCondenseFailureInformations_setAddressNull_equalFailureInfos_notCompleteAddress() { List uuidList = MockDataHelper.mockUuidList(); - //different failureInfos + TblFailureInformation tblFailureInformation1 = MockDataHelper.mockTblFailureInformationWithoutAddress(); + TblFailureInformation tblFailureInformation2 = MockDataHelper.mockTblFailureInformationWithoutAddress(); + TblFailureInformation tblFailureInformation3 = MockDataHelper.mockTblFailureInformationWithoutAddress(); + + List<TblFailureInformation> listFailureInfos = new ArrayList(); + listFailureInfos.add(tblFailureInformation1); + listFailureInfos.add(tblFailureInformation2); + listFailureInfos.add(tblFailureInformation3); + + RefStatus refStatus = MockDataHelper.mockRefStatusCreated(); + + when(failureInformationRepository.findByUuidIn(any(List.class))).thenReturn(listFailureInfos); + when(statusRepository.findById(anyLong())).thenReturn(Optional.of(refStatus)); + when(statusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refStatus)); + + when(failureInformationRepository.save(any(TblFailureInformation.class))) + .then((Answer<TblFailureInformation>) invocation -> { + Object[] args = invocation.getArguments(); + return (TblFailureInformation) args[0]; + }); + + FailureInformationDto savedCondensedFailureInfoDto = failureInformationService.condenseFailureInfos(uuidList, Optional.empty()); + + assertNotNull(savedCondensedFailureInfoDto.getUuid()); + assertEquals(1L, savedCondensedFailureInfoDto.getVersionNumber()); + //TODO: status (2x) und radius überprüfen + assertNull(savedCondensedFailureInfoDto.getStreet()); + assertNull(savedCondensedFailureInfoDto.getDistrict()); + assertNull(savedCondensedFailureInfoDto.getCity()); + assertNull(savedCondensedFailureInfoDto.getPostcode()); + assertNull(savedCondensedFailureInfoDto.getHousenumber()); + assertEquals(tblFailureInformation1.getRefExpectedReason().getUuid(), savedCondensedFailureInfoDto.getExpectedReasonId()); + assertEquals(tblFailureInformation1.getFailureEndPlanned(), savedCondensedFailureInfoDto.getFailureEndPlanned()); + assertEquals(tblFailureInformation1.getFailureBegin(), savedCondensedFailureInfoDto.getFailureBegin()); + assertEquals(true, savedCondensedFailureInfoDto.getCondensed()); + assertEquals(null, savedCondensedFailureInfoDto.getFailureInformationCondensedId()); + + } + + @Test + public void shouldCondenseFailureInformations_setAddressNull_differentFailureInfos_differentPostcodeStreetHousenumber() { + + List uuidList = MockDataHelper.mockUuidList(); + + //different failureInfos and different postcode, street and house number TblFailureInformation tblFailureInformation1 = MockDataHelper.mockTblFailureInformation(); - TblFailureInformation tblFailureInformation2 = MockDataHelper.mockTblFailureInformation(); TblFailureInformation tblFailureInformation3 = MockDataHelper.mockTblFailureInformation2(); TblStation tblStation = MockDataHelper.mockTblStation(); @@ -741,7 +784,6 @@ List<TblFailureInformation> listFailureInfos = new ArrayList(); listFailureInfos.add(tblFailureInformation1); - listFailureInfos.add(tblFailureInformation2); listFailureInfos.add(tblFailureInformation3); //different status @@ -764,9 +806,72 @@ assertNotNull(savedCondensedFailureInfoDto.getUuid()); assertEquals(1L, savedCondensedFailureInfoDto.getVersionNumber()); //TODO: status (2x) und radius überprüfen - assertEquals(null, savedCondensedFailureInfoDto.getStreet()); - assertEquals(null, savedCondensedFailureInfoDto.getDistrict()); - assertEquals(null, savedCondensedFailureInfoDto.getCity()); + assertNull(savedCondensedFailureInfoDto.getStreet()); + assertNull(savedCondensedFailureInfoDto.getDistrict()); + assertNull(savedCondensedFailureInfoDto.getCity()); + assertNull(savedCondensedFailureInfoDto.getPostcode()); + assertNull(savedCondensedFailureInfoDto.getCity()); + assertEquals(tblFailureInformation1.getFailureBegin(), savedCondensedFailureInfoDto.getFailureBegin()); + assertEquals(tblFailureInformation3.getFailureEndPlanned(), savedCondensedFailureInfoDto.getFailureEndPlanned()); + assertEquals(true, savedCondensedFailureInfoDto.getCondensed()); + assertEquals(null, savedCondensedFailureInfoDto.getFailureInformationCondensedId()); + + } + + @Test + public void shouldCondenseFailureInformations_setAddressRight_differentFailureInfos_samePostcodeStreetHousenumber() { + + List uuidList = MockDataHelper.mockUuidList(); + + //different failureInfos but same postcode, street and house number + TblFailureInformation tblFailureInformation1 = MockDataHelper.mockTblFailureInformation(); + TblFailureInformation tblFailureInformation3 = MockDataHelper.mockTblFailureInformation3(); + + TblStation tblStation = MockDataHelper.mockTblStation(); + List<TblAddress> addressList = MockDataHelper.mockTblAddressList(); + + SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy"); + try { + java.util.Date date1 = dateformat.parse("01/01/2020"); + java.util.Date date2 = dateformat.parse("24/12/2024"); + + // set first startdate and last enddate + tblFailureInformation1.setFailureBegin(date1); + tblFailureInformation3.setFailureEndPlanned(date2); + }catch(Exception e){ + log.error("Error in FailureInformationServiceTest: SimpleDateFormat.parse"); + } + + + List<TblFailureInformation> listFailureInfos = new ArrayList(); + listFailureInfos.add(tblFailureInformation1); + listFailureInfos.add(tblFailureInformation3); + + //different status + RefStatus refStatus = MockDataHelper.mockRefStatusCreated(); + RefStatus refStatus2 = MockDataHelper.mockRefStatus2(); + + when(statusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refStatus)); + when(failureInformationRepository.findByUuidIn(any(List.class))).thenReturn(listFailureInfos); + when(statusRepository.findById(anyLong())).thenReturn(Optional.of(refStatus)).thenReturn(Optional.of(refStatus2)); + when(failureInformationRepository.save(any(TblFailureInformation.class))) + .then((Answer<TblFailureInformation>) invocation -> { + Object[] args = invocation.getArguments(); + return (TblFailureInformation) args[0]; + }); + when(stationRepository.findByStationId(anyString())).thenReturn(Optional.of(tblStation)); + when(addressRepository.findByStationId(anyString())).thenReturn(addressList); + + FailureInformationDto savedCondensedFailureInfoDto = failureInformationService.condenseFailureInfos(uuidList, Optional.empty()); + + assertNotNull(savedCondensedFailureInfoDto.getUuid()); + assertEquals(1L, savedCondensedFailureInfoDto.getVersionNumber()); + //TODO: status (2x) und radius überprüfen + assertEquals(tblFailureInformation1.getStreet(), savedCondensedFailureInfoDto.getStreet()); + assertEquals(tblFailureInformation1.getDistrict(), savedCondensedFailureInfoDto.getDistrict()); + assertEquals(tblFailureInformation1.getCity(), savedCondensedFailureInfoDto.getCity()); + assertEquals(tblFailureInformation1.getPostcode(), savedCondensedFailureInfoDto.getPostcode()); + assertEquals(tblFailureInformation1.getHousenumber(), savedCondensedFailureInfoDto.getHousenumber()); assertEquals(tblFailureInformation1.getFailureBegin(), savedCondensedFailureInfoDto.getFailureBegin()); assertEquals(tblFailureInformation3.getFailureEndPlanned(), savedCondensedFailureInfoDto.getFailureEndPlanned()); assertEquals(true, savedCondensedFailureInfoDto.getCondensed());
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 208286f..e64c652 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
@@ -107,6 +107,9 @@ dto.setStreet("Budenweg"); dto.setDistrict("West"); dto.setCity("Waldau"); + dto.setStreet("Dieselstr."); + dto.setHousenumber("54"); + dto.setPostcode("71111"); dto.setStationId("224488-123bcd"); dto.setStationDescription("Trafo 25"); @@ -173,6 +176,9 @@ obj.setStreet("Budenweg"); obj.setDistrict("West"); obj.setCity("Waldau"); + obj.setStreet("Dieselstr."); + obj.setHousenumber("54"); + obj.setPostcode("71111"); obj.setStationId("224488-123bcd"); obj.setStationDescription("Trafo 25"); @@ -226,6 +232,114 @@ obj.setStreet("Hügelpfad"); obj.setDistrict("Süd"); obj.setCity("Schlumpfhausen"); + obj.setStreet("Benzinstr."); + obj.setHousenumber("1"); + obj.setPostcode("81111"); + + obj.setStationId("44444-123bcd"); + obj.setStationDescription("Trafo 11"); + obj.setStationCoords("101,2222"); + obj.setLongitude(BigDecimal.valueOf(12.646280)); + obj.setLatitude(BigDecimal.valueOf(51.115618)); + + obj.setRefRadius(mockRefRadius()); + + obj.setPublicationStatus("neu"); + obj.setPublicationFreetext("Korrodiertes Kabel"); + obj.setRefExpectedReason(mockRefExpectedReason()); + + obj.setCreateDate(new java.util.Date(Date.valueOf("2021-05-11").getTime())); + obj.setCreateUser("roggensackl"); + obj.setModDate(new java.util.Date(Date.valueOf("2020-05-12").getTime())); + obj.setModUser("müllers"); + + obj.setRefStatusIntern(mockRefStatus2()); + obj.setRefFailureClassification(mockRefFailureClassification()); + obj.setRefBranch(mockRefBranch()); + + obj.setRefStatusIntern(mockRefStatusCreated()); + obj.setStations(mockTblStationList().stream().collect(Collectors.toList())); + return obj; + } + + public static TblFailureInformation mockTblFailureInformation3() { + TblFailureInformation obj = new TblFailureInformation(); + obj.setId(22L); + obj.setUuid(UUID.randomUUID()); + obj.setVersionNumber(4L); + obj.setResponsibility("Vatter Mousa"); + obj.setVoltageLevel(Constants.VOLTAGE_LEVEL_NS); + obj.setPressureLevel(Constants.PRESSURE_LEVEL_MD); + + SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy"); + try { + java.util.Date date1 = dateformat.parse("04/12/2022"); + java.util.Date date2 = dateformat.parse("05/12/2022"); + java.util.Date date3 = dateformat.parse("06/12/2022"); + + obj.setFailureBegin(date1); + obj.setFailureEndPlanned(date2); + obj.setFailureEndResupplied(date3); + } + catch(Exception e){ + log.warn("Fehler beim Erstellen von Daten mit DateFormat"); + } + + obj.setStreet("Budenweg"); + obj.setDistrict("West"); + obj.setCity("Waldau"); + obj.setStreet("Dieselstr."); + obj.setHousenumber("54"); + obj.setPostcode("71111"); + + obj.setStationId("224488-123bcd"); + obj.setStationDescription("Trafo 25"); + obj.setStationCoords("121,8855"); + obj.setLongitude(BigDecimal.valueOf(8.646280)); + obj.setLatitude(BigDecimal.valueOf(50.115618)); + + obj.setRefRadius(mockRefRadius()); + + obj.setPublicationStatus("veröffentlicht"); + obj.setPublicationFreetext("Kabel aus Steckdose gerissen"); + obj.setRefExpectedReason(mockRefExpectedReason()); + + obj.setCreateDate(new java.util.Date(Date.valueOf("2020-05-08").getTime())); + obj.setCreateUser("weizenkeimk"); + obj.setModDate(new java.util.Date(Date.valueOf("2020-05-23").getTime())); + obj.setModUser("schlonzh"); + + obj.setRefStatusIntern(mockRefStatusCreated()); + obj.setRefFailureClassification(mockRefFailureClassification()); + obj.setRefBranch(mockRefBranch()); + + obj.setStations(mockTblStationList().stream().collect(Collectors.toList())); + + return obj; + } + + public static TblFailureInformation mockTblFailureInformationWithoutAddress() { + TblFailureInformation obj = new TblFailureInformation(); + obj.setId(42L); + obj.setUuid(UUID.randomUUID()); + obj.setVersionNumber(2L); + obj.setResponsibility("Schlumpfine"); + obj.setVoltageLevel(Constants.VOLTAGE_LEVEL_HS); + obj.setPressureLevel(Constants.PRESSURE_LEVEL_MD); + + SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy"); + try { + java.util.Date date1 = dateformat.parse("12/08/2022"); + java.util.Date date2 = dateformat.parse("02/09/2022"); + java.util.Date date3 = dateformat.parse("02/09/2022"); + + obj.setFailureBegin(date1); + obj.setFailureEndPlanned(date2); + obj.setFailureEndResupplied(date3); + } + catch(Exception e){ + log.warn("Fehler beim Erstellen von Daten mit DateFormat"); + } obj.setStationId("44444-123bcd"); obj.setStationDescription("Trafo 11");