SI-1321 Freetext adresses
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java index 400a2bb..c67d851 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java
@@ -44,6 +44,8 @@ public static final String PUBLICATION_CHANNEL_MAIL = "Mail"; + public static final String FREETEXT_ADDRESS_TYPE="freetext"; + private Constants() { // empty Constructor for the sake of SONAR }
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 78dd7e6..dd3ba86 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,14 +14,21 @@ */ package org.eclipse.openk.gridfailureinformation.mapper; +import org.eclipse.openk.gridfailureinformation.constants.Constants; import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation; import org.eclipse.openk.gridfailureinformation.model.TblStation; import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto; import org.eclipse.openk.gridfailureinformation.viewmodel.ForeignFailureDataDto; -import org.mapstruct.*; +import org.mapstruct.AfterMapping; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.Mappings; +import org.mapstruct.ReportingPolicy; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) @@ -69,4 +76,33 @@ failureInformationDto.setStationIds( stations != null ? stations.stream().map(TblStation::getUuid).collect(Collectors.toList()) : new LinkedList<>()); } + @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); + } + } + + @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); + } + } + }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java index 08d3a24..5b7c41c 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/TblFailureInformation.java
@@ -21,7 +21,17 @@ 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.OneToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Transient; import java.math.BigDecimal; import java.util.Date; import java.util.LinkedList; @@ -65,6 +75,7 @@ private String publicationFreetext; private Boolean condensed; private Integer condensedCount; + private String addressType; @CreatedDate @Column(name = "create_date")
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java index c950581..b63b7c5 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/FailureInformationDto.java
@@ -54,6 +54,9 @@ private String stationId; private String stationDescription; private String stationCoords; + private String freetextPostcode; + private String freetextCity; + private String freetextDistrict; private BigDecimal longitude; private BigDecimal latitude; private String objectReferenceExternalSystem;
diff --git a/gfsBackendService/src/main/resources/db/migration/V0_56__freetextAdressenSemantik.sql b/gfsBackendService/src/main/resources/db/migration/V0_56__freetextAdressenSemantik.sql new file mode 100644 index 0000000..6a319c7 --- /dev/null +++ b/gfsBackendService/src/main/resources/db/migration/V0_56__freetextAdressenSemantik.sql
@@ -0,0 +1,143 @@ +----------------------------------------------------------------------------------- +-- ******************************************************************************* +-- * Copyright (c) 2019 Contributors to the Eclipse Foundation +-- * +-- * See the NOTICE file(s) distributed with this work for additional +-- * information regarding copyright ownership. +-- * +-- * This program and the accompanying materials are made available under the +-- * terms of the Eclipse Public License v. 2.0 which is available at +-- * http://www.eclipse.org/legal/epl-2.0. +-- * +-- * SPDX-License-Identifier: EPL-2.0 +-- ******************************************************************************* +----------------------------------------------------------------------------------- +ALTER TABLE public.TBL_FAILURE_INFORMATION ADD COLUMN address_type varchar(10); +ALTER TABLE public.HTBL_FAILURE_INFORMATION ADD COLUMN address_type varchar(10); + +-- ---------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- +-- TRIGGER +-- ---------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- + + +-- PUBLIC.TBL_FAILURE_INFORMATION INSERT TRIGGER -- +-- <GENERATED CODE!> +CREATE OR REPLACE FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_INSERT_TRG() + RETURNS trigger AS +$BODY$ + BEGIN + INSERT INTO HTBL_FAILURE_INFORMATION ( + ID,UUID,VERSION_NUMBER,FK_REF_FAILURE_CLASSIFICATION,TITLE,DESCRIPTION,RESPONSIBILITY,FK_REF_STATUS_INTERN, FK_REF_BRANCH,VOLTAGE_LEVEL,PRESSURE_LEVEL,FAILURE_BEGIN,FAILURE_END_PLANNED,FAILURE_END_RESUPPLIED,INTERNAL_REMARK,POSTCODE,CITY,DISTRICT,STREET,HOUSENUMBER,STATION_ID,STATION_DESCRIPTION,STATION_COORDS,FK_REF_RADIUS,LONGITUDE,LATITUDE,FK_TBL_FAILURE_INFORMATION_CONDENSED,CONDENSED,CONDENSED_COUNT,OBJECT_REFERENCE_EXTERNAL_SYSTEM,PUBLICATION_STATUS,PUBLICATION_FREETEXT,FK_REF_EXPECTED_REASON, ADDRESS_TYPE, CREATE_DATE,CREATE_USER,MOD_DATE,MOD_USER, + + HACTION, + HDATE, + HUSER + ) + VALUES ( + + NEW.ID,NEW.UUID,NEW.VERSION_NUMBER,NEW.FK_REF_FAILURE_CLASSIFICATION,NEW.TITLE,NEW.DESCRIPTION,NEW.RESPONSIBILITY,NEW.FK_REF_STATUS_INTERN, NEW.FK_REF_BRANCH,NEW.VOLTAGE_LEVEL,NEW.PRESSURE_LEVEL,NEW.FAILURE_BEGIN,NEW.FAILURE_END_PLANNED,NEW.FAILURE_END_RESUPPLIED,NEW.INTERNAL_REMARK,NEW.POSTCODE,NEW.CITY,NEW.DISTRICT,NEW.STREET,NEW.HOUSENUMBER,NEW.STATION_ID,NEW.STATION_DESCRIPTION,NEW.STATION_COORDS,NEW.FK_REF_RADIUS,NEW.LONGITUDE,NEW.LATITUDE,NEW.FK_TBL_FAILURE_INFORMATION_CONDENSED,NEW.CONDENSED,NEW.CONDENSED_COUNT,NEW.OBJECT_REFERENCE_EXTERNAL_SYSTEM,NEW.PUBLICATION_STATUS,NEW.PUBLICATION_FREETEXT,NEW.FK_REF_EXPECTED_REASON, NEW.ADDRESS_TYPE, NEW.CREATE_DATE,NEW.CREATE_USER,NEW.MOD_DATE,NEW.MOD_USER, + + 1, + current_timestamp, + NEW.CREATE_USER ); + + RETURN NEW; + END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_INSERT_TRG() + OWNER TO gfi_service; + + +DROP TRIGGER IF EXISTS TBL_FAILURE_INFORMATION_INSERT_TRG ON PUBLIC.TBL_FAILURE_INFORMATION; + +CREATE TRIGGER TBL_FAILURE_INFORMATION_INSERT_TRG + BEFORE INSERT + ON PUBLIC.TBL_FAILURE_INFORMATION + FOR EACH ROW + EXECUTE PROCEDURE PUBLIC.TBL_FAILURE_INFORMATION_INSERT_TRG(); + + + +-- PUBLIC.TBL_FAILURE_INFORMATION UPDATE TRIGGER -- +-- <GENERATED CODE!> + +CREATE OR REPLACE FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_UPDATE_TRG() + RETURNS trigger AS +$BODY$ + BEGIN + INSERT INTO HTBL_FAILURE_INFORMATION ( + ID,UUID,VERSION_NUMBER,FK_REF_FAILURE_CLASSIFICATION,TITLE,DESCRIPTION,RESPONSIBILITY,FK_REF_STATUS_INTERN,FK_REF_BRANCH,VOLTAGE_LEVEL,PRESSURE_LEVEL,FAILURE_BEGIN,FAILURE_END_PLANNED,FAILURE_END_RESUPPLIED,INTERNAL_REMARK,POSTCODE,CITY,DISTRICT,STREET,HOUSENUMBER,STATION_ID,STATION_DESCRIPTION,STATION_COORDS,FK_REF_RADIUS,LONGITUDE,LATITUDE,FK_TBL_FAILURE_INFORMATION_CONDENSED,CONDENSED,CONDENSED_COUNT,OBJECT_REFERENCE_EXTERNAL_SYSTEM,PUBLICATION_STATUS,PUBLICATION_FREETEXT,FK_REF_EXPECTED_REASON,ADDRESS_TYPE,CREATE_DATE,CREATE_USER,MOD_DATE,MOD_USER, + + HACTION, + HDATE, + HUSER + ) + VALUES ( + NEW.ID,NEW.UUID,NEW.VERSION_NUMBER,NEW.FK_REF_FAILURE_CLASSIFICATION,NEW.TITLE,NEW.DESCRIPTION,NEW.RESPONSIBILITY,NEW.FK_REF_STATUS_INTERN,NEW.FK_REF_BRANCH,NEW.VOLTAGE_LEVEL,NEW.PRESSURE_LEVEL,NEW.FAILURE_BEGIN,NEW.FAILURE_END_PLANNED,NEW.FAILURE_END_RESUPPLIED,NEW.INTERNAL_REMARK,NEW.POSTCODE,NEW.CITY,NEW.DISTRICT,NEW.STREET,NEW.HOUSENUMBER,NEW.STATION_ID,NEW.STATION_DESCRIPTION,NEW.STATION_COORDS,NEW.FK_REF_RADIUS,NEW.LONGITUDE,NEW.LATITUDE,NEW.FK_TBL_FAILURE_INFORMATION_CONDENSED,NEW.CONDENSED,NEW.CONDENSED_COUNT,NEW.OBJECT_REFERENCE_EXTERNAL_SYSTEM,NEW.PUBLICATION_STATUS,NEW.PUBLICATION_FREETEXT,NEW.FK_REF_EXPECTED_REASON,NEW.ADDRESS_TYPE, NEW.CREATE_DATE,NEW.CREATE_USER,NEW.MOD_DATE,NEW.MOD_USER, + 2, + current_timestamp, + NEW.MOD_USER + ); + + RETURN NEW; + END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_UPDATE_TRG() + OWNER TO gfi_service; + +DROP TRIGGER IF EXISTS TBL_FAILURE_INFORMATION_UPDATE_TRG ON PUBLIC.TBL_FAILURE_INFORMATION; + +CREATE TRIGGER TBL_FAILURE_INFORMATION_UPDATE_TRG + BEFORE UPDATE + ON PUBLIC.TBL_FAILURE_INFORMATION + FOR EACH ROW + EXECUTE PROCEDURE PUBLIC.TBL_FAILURE_INFORMATION_UPDATE_TRG(); + + + +-- PUBLIC.TBL_FAILURE_INFORMATION DELETE TRIGGER -- +-- <GENERATED CODE!> + +CREATE OR REPLACE FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_DELETE_TRG() + RETURNS trigger AS +$BODY$ + BEGIN + IF TG_OP = 'DELETE' THEN + INSERT INTO HTBL_FAILURE_INFORMATION ( + + ID,UUID,VERSION_NUMBER,FK_REF_FAILURE_CLASSIFICATION,TITLE,DESCRIPTION,RESPONSIBILITY,FK_REF_STATUS_INTERN,FK_REF_BRANCH,VOLTAGE_LEVEL,PRESSURE_LEVEL,FAILURE_BEGIN,FAILURE_END_PLANNED,FAILURE_END_RESUPPLIED,INTERNAL_REMARK,POSTCODE,CITY,DISTRICT,STREET,HOUSENUMBER,STATION_ID,STATION_DESCRIPTION,STATION_COORDS,FK_REF_RADIUS,LONGITUDE,LATITUDE,FK_TBL_FAILURE_INFORMATION_CONDENSED,CONDENSED,CONDENSED_COUNT,OBJECT_REFERENCE_EXTERNAL_SYSTEM,PUBLICATION_STATUS,PUBLICATION_FREETEXT,FK_REF_EXPECTED_REASON,ADDRESS_TYPE,CREATE_DATE,CREATE_USER,MOD_DATE,MOD_USER, + + HACTION, + HDATE, + HUSER + ) + VALUES ( + OLD.ID,OLD.UUID,OLD.VERSION_NUMBER,OLD.FK_REF_FAILURE_CLASSIFICATION,OLD.TITLE,OLD.DESCRIPTION,OLD.RESPONSIBILITY,OLD.FK_REF_STATUS_INTERN,OLD.FK_REF_BRANCH,OLD.VOLTAGE_LEVEL,OLD.PRESSURE_LEVEL,OLD.FAILURE_BEGIN,OLD.FAILURE_END_PLANNED,OLD.FAILURE_END_RESUPPLIED,OLD.INTERNAL_REMARK,OLD.POSTCODE,OLD.CITY,OLD.DISTRICT,OLD.STREET,OLD.HOUSENUMBER,OLD.STATION_ID,OLD.STATION_DESCRIPTION,OLD.STATION_COORDS,OLD.FK_REF_RADIUS,OLD.LONGITUDE,OLD.LATITUDE,OLD.FK_TBL_FAILURE_INFORMATION_CONDENSED,OLD.CONDENSED,OLD.CONDENSED_COUNT,OLD.OBJECT_REFERENCE_EXTERNAL_SYSTEM,OLD.PUBLICATION_STATUS,OLD.PUBLICATION_FREETEXT,OLD.FK_REF_EXPECTED_REASON,OLD.ADDRESS_TYPE, OLD.CREATE_DATE,OLD.CREATE_USER,OLD.MOD_DATE,OLD.MOD_USER, + + 3, + current_timestamp, + OLD.MOD_USER ); + END IF; + + RETURN OLD; + END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION PUBLIC.TBL_FAILURE_INFORMATION_DELETE_TRG() + OWNER TO gfi_service; + +DROP TRIGGER IF EXISTS TBL_FAILURE_INFORMATION_DELETE_TRG ON PUBLIC.TBL_FAILURE_INFORMATION; + +CREATE TRIGGER TBL_FAILURE_INFORMATION_DELETE_TRG + BEFORE DELETE + ON PUBLIC.TBL_FAILURE_INFORMATION + FOR EACH ROW + EXECUTE PROCEDURE PUBLIC.TBL_FAILURE_INFORMATION_DELETE_TRG(); +