From d93e68d4df3ec75dc23fb1648cd8fdf5c9409cef Mon Sep 17 00:00:00 2001 From: "anilkivilcim.eray" Date: Sun, 1 Sep 2019 20:46:52 +0300 Subject: [PATCH] BAEL-3097 new example added --- ...TO.java => UserBodyImperialValuesDTO.java} | 5 +- .../{UrlObject.java => UserBodyValues.java} | 5 +- ...emover.java => PoundToKilogramMapper.java} | 2 +- .../java/com/baeldung/mapper/UrlMapper.java | 39 --------------- .../baeldung/mapper/UserBodyValuesMapper.java | 28 +++++++++++ .../baeldung/mapper/UrlMapperUnitTest.java | 30 ------------ .../mapper/UserBodyValuesMapperUnitTest.java | 47 +++++++++++++++++++ 7 files changed, 82 insertions(+), 74 deletions(-) rename mapstruct/src/main/java/com/baeldung/dto/{UrlDTO.java => UserBodyImperialValuesDTO.java} (50%) rename mapstruct/src/main/java/com/baeldung/entity/{UrlObject.java => UserBodyValues.java} (50%) rename mapstruct/src/main/java/com/baeldung/mapper/{ProtocolRemover.java => PoundToKilogramMapper.java} (87%) delete mode 100644 mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java create mode 100644 mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java delete mode 100644 mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java create mode 100644 mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java diff --git a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java similarity index 50% rename from mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java rename to mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java index e0d7fd58e9..9817b76bc8 100644 --- a/mapstruct/src/main/java/com/baeldung/dto/UrlDTO.java +++ b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java @@ -5,6 +5,7 @@ import lombok.Setter; @Getter @Setter -public class UrlDTO { - private String address; +public class UserBodyImperialValuesDTO { + private int inch; + private int pound; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java similarity index 50% rename from mapstruct/src/main/java/com/baeldung/entity/UrlObject.java rename to mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java index 9d1f4668c2..b23463cb93 100644 --- a/mapstruct/src/main/java/com/baeldung/entity/UrlObject.java +++ b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java @@ -5,6 +5,7 @@ import lombok.Setter; @Getter @Setter -public class UrlObject { - private String address; +public class UserBodyValues { + private double kilogram; + private double centimeter; } \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java similarity index 87% rename from mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java rename to mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java index 4c22ffd9ee..e75022a5e8 100644 --- a/mapstruct/src/main/java/com/baeldung/mapper/ProtocolRemover.java +++ b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java @@ -10,4 +10,4 @@ import java.lang.annotation.Target; @Qualifier @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) -public @interface ProtocolRemover {} +public @interface PoundToKilogramMapper {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java deleted file mode 100644 index 22083fabb2..0000000000 --- a/mapstruct/src/main/java/com/baeldung/mapper/UrlMapper.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.mapper; - -import com.baeldung.dto.UrlDTO; -import com.baeldung.entity.UrlObject; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.Named; -import org.mapstruct.factory.Mappers; - -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; - -@Mapper -public interface UrlMapper { - - UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class); - - - @Mapping(source = "address", target = "address", qualifiedByName = "protocolRemover") - public UrlObject urlObjectNamedMapper(UrlDTO urlDTO); - - @Mapping(source = "address", target = "address", qualifiedBy = ProtocolRemover.class) - public UrlObject urlObjectAnnotatedMapper(UrlDTO urlDTO); - - @Named("protocolRemover") - public static String protocolRemoverWithCustomMethod(String address) throws URISyntaxException { - URI uri = new URI(address); - - return uri.getHost() + uri.getPath(); - } - - @ProtocolRemover - public static String protocolRemoverMethod(String address) throws URISyntaxException { - URI uri = new URI(address); - - return uri.getHost() + uri.getPath(); - } -} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java new file mode 100644 index 0000000000..4c992f91e1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java @@ -0,0 +1,28 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface UserBodyValuesMapper { + + UserBodyValuesMapper INSTANCE = Mappers.getMapper(UserBodyValuesMapper.class); + + @Mapping(source = "pound", target = "kilogram", qualifiedBy = PoundToKilogramMapper.class) + @Mapping(source = "inch", target = "centimeter", qualifiedByName = "inchToCentimeter") + public UserBodyValues userBodyValuesMapper(UserBodyImperialValuesDTO dto); + + @Named("inchToCentimeter") + public static double inchToCentimeter(int inch) { + return inch * 2.54; + } + + @PoundToKilogramMapper + public static double poundToKilogram(int pound) { + return pound * 0.4535; + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java deleted file mode 100644 index 567d0aefbc..0000000000 --- a/mapstruct/src/test/java/com/baeldung/mapper/UrlMapperUnitTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.mapper; - -import com.baeldung.dto.UrlDTO; -import com.baeldung.entity.UrlObject; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class UrlMapperUnitTest { - - @Test - public void givenDomain_whenCallNamedMapper_thenReturnDomainWithoutProtocol() { - UrlDTO dto = new UrlDTO(); - dto.setAddress("http://www.baeldung.com/mapstruct"); - - UrlObject urlObject = UrlMapper.INSTANCE.urlObjectNamedMapper(dto); - - assertEquals(urlObject.getAddress(), "www.baeldung.com/mapstruct"); - } - - @Test - public void givenAddress_whenCallAnnotatedMapper_thenReturnDomainWithoutProtocol() { - UrlDTO dto = new UrlDTO(); - dto.setAddress("http://www.baeldung.com/customMappers"); - - UrlObject urlObject = UrlMapper.INSTANCE.urlObjectAnnotatedMapper(dto); - - assertEquals(urlObject.getAddress(), "www.baeldung.com/customMappers"); - } -} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java new file mode 100644 index 0000000000..a875d6faf7 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + + +public class UserBodyValuesMapperUnitTest { + + @Test + public void givenUserBodyImperialValuesDTOToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + assertEquals(45.35, obj.getKilogram(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithInchToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithPoundToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(45.35, obj.getKilogram(), 0); + } +} \ No newline at end of file