Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into DEVELOP
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 47543f1..7bdd411 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
@@ -14,7 +14,7 @@
  */
 package org.eclipse.openk.gridfailureinformation.mapper;
 
-import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.mapper.tools.AddressSplitterMerger;
 import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
 import org.eclipse.openk.gridfailureinformation.model.TblStation;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
@@ -28,7 +28,6 @@
 
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@@ -78,33 +77,13 @@
 
     @AfterMapping
     default void splitFreetextAddress(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
-        if( Constants.FREETEXT_ADDRESS_TYPE.equalsIgnoreCase(source.getAddressType())) {
-            failureInformationDto.setFreetextCity(source.getCity());
-            failureInformationDto.setFreetextDistrict(source.getDistrict());
-            failureInformationDto.setFreetextPostcode(source.getPostcode());
-            failureInformationDto.setCity(null);
-            failureInformationDto.setDistrict(null);
-            failureInformationDto.setPostcode(null);
-            failureInformationDto.setStreet(null);
-            failureInformationDto.setHousenumber(null);
-        }
+        AddressSplitterMerger.splitFreetextAddress(source.getAddressType(), source.getCity(), source.getDistrict(),
+                source.getPostcode(), failureInformationDto);
     }
 
     @AfterMapping
     default void splitFreetextAddress(FailureInformationDto source, @MappingTarget TblFailureInformation destTbl){
-        StringBuilder sb = new StringBuilder();
-        sb.append(Optional.ofNullable(source.getFreetextCity()).orElse(""));
-        sb.append(Optional.ofNullable(source.getFreetextDistrict()).orElse(""));
-        sb.append(Optional.ofNullable(source.getFreetextPostcode()).orElse(""));
-        if( !sb.toString().trim().isEmpty()) { // freetextAddress is present
-            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
-            destTbl.setCity(source.getFreetextCity());
-            destTbl.setDistrict(source.getFreetextDistrict());
-            destTbl.setPostcode(source.getFreetextPostcode());
-        }
-        else {
-            destTbl.setAddressType(null);
-        }
+        AddressSplitterMerger.mergeFreetextAddress(source, destTbl);
     }
 
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
index 38d9b41..243e176 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
@@ -14,10 +14,13 @@
  */
 package org.eclipse.openk.gridfailureinformation.mapper;
 
+import org.eclipse.openk.gridfailureinformation.mapper.tools.AddressSplitterMerger;
 import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.mapstruct.AfterMapping;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.mapstruct.MappingTarget;
 import org.mapstruct.Mappings;
 import org.mapstruct.ReportingPolicy;
 
@@ -28,7 +31,6 @@
             @Mapping(source = "refFailureClassification.classification", target = "failureClassification"),
             @Mapping(source = "refStatusIntern.uuid", target = "statusInternId"),
             @Mapping(source = "refStatusIntern.status", target = "statusIntern"),
-            //@Mapping(source = "refStatusExtern.status", target = "statusExtern"),
             @Mapping(source = "refBranch.uuid", target = "branchId"),
             @Mapping(source = "refBranch.name", target = "branch"),
             @Mapping(source = "refBranch.colorCode", target = "branchColorCode"),
@@ -44,7 +46,6 @@
             @Mapping(target = "refFailureClassification.classification", source = "failureClassification"),
             @Mapping(target = "refStatusIntern.uuid", source = "statusInternId"),
             @Mapping(target = "refStatusIntern.status", source = "statusIntern"),
-            //@Mapping(target = "refStatusExtern.status", source = "statusExtern"),
             @Mapping(target = "refBranch.uuid", source = "branchId"),
             @Mapping(target = "refBranch.name", source = "branch"),
             @Mapping(target = "refBranch.colorCode", source = "branchColorCode"),
@@ -56,4 +57,14 @@
     HtblFailureInformation toHtblFailureInformation(FailureInformationDto failureInformationDto);
 
 
+    @AfterMapping
+    default void splitFreetextAddress(HtblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
+        AddressSplitterMerger.splitFreetextAddress(source.getAddressType(), source.getCity(),
+                source.getDistrict(), source.getPostcode(), failureInformationDto);
+    }
+
+    @AfterMapping
+    default void splitFreetextAddress(FailureInformationDto source, @MappingTarget HtblFailureInformation destTbl){
+        AddressSplitterMerger.mergeFreetextAddress(source, destTbl);
+    }
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java
new file mode 100644
index 0000000..ca367d8
--- /dev/null
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java
@@ -0,0 +1,60 @@
+package org.eclipse.openk.gridfailureinformation.mapper.tools;
+
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation;
+import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+
+import java.util.Optional;
+
+public class AddressSplitterMerger {
+    private AddressSplitterMerger() {}
+
+    public static void splitFreetextAddress(String srcAddressType, String srcCity, String srcDistrict, String srcPostcode,
+                                            FailureInformationDto failureInformationDto){
+        if( Constants.FREETEXT_ADDRESS_TYPE.equalsIgnoreCase(srcAddressType)) {
+            failureInformationDto.setFreetextCity(srcCity);
+            failureInformationDto.setFreetextDistrict(srcDistrict);
+            failureInformationDto.setFreetextPostcode(srcPostcode);
+            failureInformationDto.setCity(null);
+            failureInformationDto.setDistrict(null);
+            failureInformationDto.setPostcode(null);
+            failureInformationDto.setStreet(null);
+            failureInformationDto.setHousenumber(null);
+        }
+    }
+
+    public static void mergeFreetextAddress(FailureInformationDto source, TblFailureInformation destTbl){
+
+        if( isFreetextPresent(source) ) { // freetextAddress is present
+            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
+            destTbl.setCity(source.getFreetextCity());
+            destTbl.setDistrict(source.getFreetextDistrict());
+            destTbl.setPostcode(source.getFreetextPostcode());
+        }
+        else {
+            destTbl.setAddressType(null);
+        }
+    }
+
+    public static void mergeFreetextAddress(FailureInformationDto source, HtblFailureInformation destTbl){
+
+        if( isFreetextPresent(source) ) { // freetextAddress is present
+            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
+            destTbl.setCity(source.getFreetextCity());
+            destTbl.setDistrict(source.getFreetextDistrict());
+            destTbl.setPostcode(source.getFreetextPostcode());
+        }
+        else {
+            destTbl.setAddressType(null);
+        }
+    }
+
+    private static boolean isFreetextPresent(FailureInformationDto source) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Optional.ofNullable(source.getFreetextCity()).orElse(""));
+        sb.append(Optional.ofNullable(source.getFreetextDistrict()).orElse(""));
+        sb.append(Optional.ofNullable(source.getFreetextPostcode()).orElse(""));
+        return !sb.toString().trim().isEmpty();
+    }
+}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
index dbbc3fd..9bc57c7 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
@@ -21,7 +21,15 @@
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.UUID;
@@ -64,6 +72,7 @@
     private String publicationStatus;
     private String publicationFreetext;
     private Boolean condensed;
+    private String addressType;
 
     @CreatedDate
     @Column(name = "create_date")