blob: ffcecce876205784989ef019ded21b0a8a961d6f [file] [log] [blame]
/*
*******************************************************************************
* 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
*******************************************************************************
*/
package org.eclipse.openk.gridfailureinformation.mapper;
import com.google.common.collect.Lists;
import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroupMember;
import org.eclipse.openk.gridfailureinformation.viewmodel.DistributionGroupMemberDto;
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.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DistributionGroupMemberMapper {
@Mappings({
@Mapping(source = "tblDistributionGroup.uuid", target = "distributionGroupUuid"),
@Mapping(source = "tblDistributionGroup.name", target = "distributionGroup")
})
DistributionGroupMemberDto toDistributionGroupMemberDto(TblDistributionGroupMember tblDistributionGroupMember);
@AfterMapping
default void mapPostcodesToList(TblDistributionGroupMember srcTbl, @MappingTarget DistributionGroupMemberDto targetDto) {
List<String> result =
Lists.newArrayList(
Optional.ofNullable(srcTbl.getPostcodes()).orElse("")
.split(","));
targetDto.setPostcodeList(result.stream()
.sorted( String::compareTo )
.collect(Collectors.toList())
);
}
@Mappings({
@Mapping(source = "distributionGroupUuid", target = "tblDistributionGroup.uuid"),
@Mapping(source = "distributionGroup", target = "tblDistributionGroup.name")
})
TblDistributionGroupMember toTblDistributionGroupMember(DistributionGroupMemberDto distributionGroupMemberDto);
@AfterMapping
default void mapPostcodesFromList(DistributionGroupMemberDto srcDto, @MappingTarget TblDistributionGroupMember targetTbl) {
StringBuilder sb = new StringBuilder();
Optional.ofNullable(srcDto.getPostcodeList()).orElse( new ArrayList<String>()).stream()
.sorted(String::compareTo)
.forEach(x -> sb.append("," + x));
targetTbl.setPostcodes(
sb.toString().replaceFirst(",", "" )
);
}
}