SI-2877 Fix bei Verdichtung von Adressen (Refactoring)
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 6ca64f8..78e3522 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
@@ -70,24 +70,16 @@
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Function;
-import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
-import static org.eclipse.openk.gridfailureinformation.constants.Constants.FREETEXT_ADDRESS_TYPE;
-
 @Log4j2
 @Service
 public class FailureInformationService {
@@ -588,13 +580,8 @@
 
         resetCondensedFailureInformationAdress(condensedFailureInformation);
 
-        setCityForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
-        setDistrictForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
-        setPostcodeForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
-        setStreetForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
-        setHousenumberForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
-        setCondensedFailureInformationCoordinates(listFailureInfos, condensedFailureInformation);
-        setCondensedFailureInformationAddresstype(listFailureInfos, condensedFailureInformation);
+        setAddressForCondensedFailureInformation(listFailureInfos, condensedFailureInformation);
+
     }
 
     private void resetCondensedFailureInformationAdress(TblFailureInformation condensedFailureInformation) {
@@ -608,8 +595,8 @@
         condensedFailureInformation.setAddressType(null);
     }
 
-    private void setCityForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
-                                                       TblFailureInformation condensedFailureInformation) {
+    private void setAddressForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
+                                                          TblFailureInformation condensedFailureInformation) {
         Optional<TblFailureInformation> tblInfTocheck =
                 listFailureInfos.stream().filter(f -> (f.getCity() != null)).findFirst();
         if (tblInfTocheck.isPresent()) {
@@ -617,61 +604,22 @@
                     listFailureInfos.stream().filter(p -> tblInfTocheck.get().getCity().equals(p.getCity())).count();
             if (count == listFailureInfos.size()) {
                 condensedFailureInformation.setCity(tblInfTocheck.get().getCity());
-            }
-        }
-    }
-
-    private void setDistrictForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
-                                                       TblFailureInformation condensedFailureInformation) {
-        Optional<TblFailureInformation> tblInfTocheck =
-                listFailureInfos.stream().filter(f -> (f.getDistrict() != null)).findFirst();
-        if (tblInfTocheck.isPresent()) {
-            long count =
-                    listFailureInfos.stream().filter(p -> tblInfTocheck.get().getDistrict().equals(p.getDistrict())).count();
-            if (count == listFailureInfos.size()) {
                 condensedFailureInformation.setDistrict(tblInfTocheck.get().getDistrict());
-            }
-        }
-    }
-
-    private void setPostcodeForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
-                                                           TblFailureInformation condensedFailureInformation) {
-        Optional<TblFailureInformation> tblInfTocheck =
-                listFailureInfos.stream().filter(f -> (f.getPostcode() != null)).findFirst();
-        if (tblInfTocheck.isPresent()) {
-            long count =
-                    listFailureInfos.stream().filter(p -> tblInfTocheck.get().getPostcode().equals(p.getPostcode())).count();
-            if (count == listFailureInfos.size()) {
                 condensedFailureInformation.setPostcode(tblInfTocheck.get().getPostcode());
-            }
-        }
-    }
-
-    private void setStreetForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
-                                                           TblFailureInformation condensedFailureInformation) {
-        Optional<TblFailureInformation> tblInfTocheck =
-                listFailureInfos.stream().filter(f -> (f.getStreet() != null)).findFirst();
-        if (tblInfTocheck.isPresent()) {
-            long count =
-                    listFailureInfos.stream().filter(p -> tblInfTocheck.get().getStreet().equals(p.getStreet())).count();
-            if (count == listFailureInfos.size()) {
                 condensedFailureInformation.setStreet(tblInfTocheck.get().getStreet());
+                condensedFailureInformation.setHousenumber(tblInfTocheck.get().getHousenumber());
+                condensedFailureInformation.setLongitude(tblInfTocheck.get().getLongitude());
+                condensedFailureInformation.setLatitude(tblInfTocheck.get().getLatitude());
+                condensedFailureInformation.setAddressType(tblInfTocheck.get().getAddressType());
             }
         }
+        else {
+            // There is not info in the list having at least a city
+            // ... so try at least to merge the coordinates
+            setCondensedFailureInformationCoordinates( listFailureInfos, condensedFailureInformation);
+        }
     }
 
-    private void setHousenumberForCondensedFailureInformation(List<TblFailureInformation> listFailureInfos,
-                                                           TblFailureInformation condensedFailureInformation) {
-        Optional<TblFailureInformation> tblInfTocheck =
-                listFailureInfos.stream().filter(f -> (f.getHousenumber() != null)).findFirst();
-        if (tblInfTocheck.isPresent()) {
-            long count =
-                    listFailureInfos.stream().filter(p -> tblInfTocheck.get().getHousenumber().equals(p.getHousenumber())).count();
-            if (count == listFailureInfos.size()) {
-                condensedFailureInformation.setHousenumber(tblInfTocheck.get().getHousenumber());
-            }
-        }
-    }
 
     //set first found coordinates if there is no consense at all
     private void setCondensedFailureInformationCoordinates(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation) {
@@ -684,14 +632,6 @@
         }
     }
 
-    private void setCondensedFailureInformationAddresstype(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation) {
-        Optional<TblFailureInformation> firstFailureInformationFiltered = listFailureInfos
-                .stream().filter(f -> (FREETEXT_ADDRESS_TYPE.equals(f.getAddressType()))).findFirst();
-
-        if (firstFailureInformationFiltered.isPresent()) {
-            condensedFailureInformation.setAddressType(FREETEXT_ADDRESS_TYPE);
-        }
-    }
 
     private void setExpectedReason(List<TblFailureInformation> listFailureInfos, TblFailureInformation condensedFailureInformation){
         RefExpectedReason firstExpReason = listFailureInfos.get(0).getRefExpectedReason();
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 2cb9487..d51a329 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
@@ -822,12 +822,11 @@
         assertNull(savedCondensedFailureInfoDto.getDistrict());
         assertNull(savedCondensedFailureInfoDto.getCity());
         assertNull(savedCondensedFailureInfoDto.getPostcode());
-        assertNull(savedCondensedFailureInfoDto.getCity());
         assertNull(savedCondensedFailureInfoDto.getFreetextCity());
         assertNull(savedCondensedFailureInfoDto.getFreetextDistrict());
         assertNull(savedCondensedFailureInfoDto.getFreetextPostcode());
-        assertNotNull(savedCondensedFailureInfoDto.getLatitude());
-        assertNotNull(savedCondensedFailureInfoDto.getLongitude());
+        assertNull(savedCondensedFailureInfoDto.getLatitude());
+        assertNull(savedCondensedFailureInfoDto.getLongitude());
         assertEquals(tblFailureInformation1.getFailureBegin(), savedCondensedFailureInfoDto.getFailureBegin());
         assertEquals(tblFailureInformation3.getFailureEndPlanned(), savedCondensedFailureInfoDto.getFailureEndPlanned());
         assertEquals(true, savedCondensedFailureInfoDto.getCondensed());