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");