From 55ea01d4bdd65664ea943bf68bda30a5792795a3 Mon Sep 17 00:00:00 2001 From: jesus-dayo Date: Wed, 17 Aug 2016 18:02:45 +0800 Subject: [PATCH 1/3] modified nested mapping section --- mapstruct/bin/pom.xml | 49 ++++++++++ mapstruct/pom.xml | 11 +++ .../java/org/baeldung/dto/DivisionDTO.java | 33 +++++++ .../java/org/baeldung/dto/EmployeeDTO.java | 51 +++++----- .../java/org/baeldung/dto/SimpleSource.java | 32 +++---- .../java/org/baeldung/entity/Division.java | 42 ++++----- .../java/org/baeldung/entity/Employee.java | 42 ++++----- .../baeldung/entity/SimpleDestination.java | 30 +++--- .../org/baeldung/mapper/EmployeeMapper.java | 27 +++--- .../mapper/SimpleSourceDestinationMapper.java | 5 +- .../SimpleSourceDestinationSpringMapper.java | 7 +- .../src/main/resources/applicationContext.xml | 15 +++ .../baeldung/mapper/EmployeeMapperTest.java | 94 +++++++++++-------- .../SimpleSourceDestinationMapperTest.java | 58 ++++++------ ...mpleSourceDestinationSpringMapperTest.java | 45 +++++++++ 15 files changed, 350 insertions(+), 191 deletions(-) create mode 100644 mapstruct/bin/pom.xml create mode 100644 mapstruct/src/main/java/org/baeldung/dto/DivisionDTO.java create mode 100644 mapstruct/src/main/resources/applicationContext.xml create mode 100644 mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java diff --git a/mapstruct/bin/pom.xml b/mapstruct/bin/pom.xml new file mode 100644 index 0000000000..8a28ae9511 --- /dev/null +++ b/mapstruct/bin/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + mapstruct + mapstruct + com.baeldung + 1.0 + jar + + + 1.0.0.Final + + + + org.mapstruct + mapstruct-jdk8 + ${org.mapstruct.version} + + + junit + junit + 4.12 + test + + + + mapstruct + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} + + + + + + + diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 8a28ae9511..4159ef35c9 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -24,6 +24,17 @@ 4.12 test + + org.springframework + spring-context + 4.3.2.RELEASE + + + org.springframework + spring-test + 4.3.2.RELEASE + test + mapstruct diff --git a/mapstruct/src/main/java/org/baeldung/dto/DivisionDTO.java b/mapstruct/src/main/java/org/baeldung/dto/DivisionDTO.java new file mode 100644 index 0000000000..01a5792176 --- /dev/null +++ b/mapstruct/src/main/java/org/baeldung/dto/DivisionDTO.java @@ -0,0 +1,33 @@ +package org.baeldung.dto; + +public class DivisionDTO { + + public DivisionDTO() { + } + + public DivisionDTO(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + private int id; + private String name; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java index 67b9ffc024..0fbc0dd109 100644 --- a/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java +++ b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java @@ -2,41 +2,32 @@ package org.baeldung.dto; public class EmployeeDTO { - private int employeeId; - private String employeeName; - private int divisionId; - private String divisionName; + private int employeeId; + private String employeeName; + private DivisionDTO division; - public int getEmployeeId() { - return employeeId; - } + public int getEmployeeId() { + return employeeId; + } - public void setEmployeeId(int employeeId) { - this.employeeId = employeeId; - } + public void setEmployeeId(int employeeId) { + this.employeeId = employeeId; + } - public String getEmployeeName() { - return employeeName; - } + public String getEmployeeName() { + return employeeName; + } - public void setEmployeeName(String employeeName) { - this.employeeName = employeeName; - } + public void setEmployeeName(String employeeName) { + this.employeeName = employeeName; + } - public int getDivisionId() { - return divisionId; - } + public DivisionDTO getDivision() { + return division; + } - public void setDivisionId(int divisionId) { - this.divisionId = divisionId; - } - - public String getDivisionName() { - return divisionName; - } - - public void setDivisionName(String divisionName) { - this.divisionName = divisionName; - } + public void setDivision(DivisionDTO division) { + this.division = division; + } } diff --git a/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java b/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java index fc0c75dea3..4c169461c8 100644 --- a/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java +++ b/mapstruct/src/main/java/org/baeldung/dto/SimpleSource.java @@ -2,23 +2,23 @@ package org.baeldung.dto; public class SimpleSource { - private String name; - private String description; - - public String getName() { - return name; - } + private String name; + private String description; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public String getDescription() { - return description; - } + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } - public void setDescription(String description) { - this.description = description; - } - } diff --git a/mapstruct/src/main/java/org/baeldung/entity/Division.java b/mapstruct/src/main/java/org/baeldung/entity/Division.java index 04f1ab2c23..83b0916eb4 100644 --- a/mapstruct/src/main/java/org/baeldung/entity/Division.java +++ b/mapstruct/src/main/java/org/baeldung/entity/Division.java @@ -2,32 +2,32 @@ package org.baeldung.entity; public class Division { - public Division() { - } + public Division() { + } - public Division(int id, String name) { - super(); - this.id = id; - this.name = name; - } + public Division(int id, String name) { + super(); + this.id = id; + this.name = name; + } - private int id; - private String name; + private int id; + private String name; - public int getId() { - return id; - } + public int getId() { + return id; + } - public void setId(int id) { - this.id = id; - } + public void setId(int id) { + this.id = id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } } diff --git a/mapstruct/src/main/java/org/baeldung/entity/Employee.java b/mapstruct/src/main/java/org/baeldung/entity/Employee.java index 55599a17f9..e9a6b85461 100644 --- a/mapstruct/src/main/java/org/baeldung/entity/Employee.java +++ b/mapstruct/src/main/java/org/baeldung/entity/Employee.java @@ -2,32 +2,32 @@ package org.baeldung.entity; public class Employee { - private int id; - private String name; - private Division division; + private int id; + private String name; + private Division division; - public int getId() { - return id; - } + public int getId() { + return id; + } - public void setId(int id) { - this.id = id; - } + public void setId(int id) { + this.id = id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public Division getDivision() { - return division; - } + public Division getDivision() { + return division; + } - public void setDivision(Division division) { - this.division = division; - } + public void setDivision(Division division) { + this.division = division; + } } diff --git a/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java b/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java index 901257c11b..9fdbd7f054 100644 --- a/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java +++ b/mapstruct/src/main/java/org/baeldung/entity/SimpleDestination.java @@ -2,23 +2,23 @@ package org.baeldung.entity; public class SimpleDestination { - private String name; - private String description; - - public String getName() { - return name; - } + private String name; + private String description; - public void setName(String name) { - this.name = name; - } + public String getName() { + return name; + } - public String getDescription() { - return description; - } + public void setName(String name) { + this.name = name; + } - public void setDescription(String description) { - this.description = description; - } + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } } diff --git a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java index 28faffec45..f20b68cf83 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java @@ -1,6 +1,8 @@ package org.baeldung.mapper; +import org.baeldung.dto.DivisionDTO; import org.baeldung.dto.EmployeeDTO; +import org.baeldung.entity.Division; import org.baeldung.entity.Employee; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -9,19 +11,14 @@ import org.mapstruct.Mappings; @Mapper public interface EmployeeMapper { - @Mappings({ - @Mapping(target="divisionId",source="entity.division.id"), - @Mapping(target="divisionName",source="entity.division.name"), - @Mapping(target="employeeId",source="entity.id"), - @Mapping(target="employeeName",source="entity.name") - }) - EmployeeDTO employeeToEmployeeDTO(Employee entity); - - @Mappings({ - @Mapping(target="id",source="dto.employeeId"), - @Mapping(target="name",source="dto.employeeName"), - @Mapping(target="division",expression="java(new org.baeldung.entity.Division(dto.getDivisionId(),dto.getDivisionName()))") - }) - Employee employeeDTOtoEmployee(EmployeeDTO dto); - + @Mappings({ @Mapping(target = "employeeId", source = "entity.id"), @Mapping(target = "employeeName", source = "entity.name") }) + EmployeeDTO employeeToEmployeeDTO(Employee entity); + + @Mappings({ @Mapping(target = "id", source = "dto.employeeId"), @Mapping(target = "name", source = "dto.employeeName") }) + Employee employeeDTOtoEmployee(EmployeeDTO dto); + + DivisionDTO divisionToDivisionDTO(Division entity); + + Division divisionDTOtoDivision(DivisionDTO dto); + } diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java index f3210288d2..de6ce11bd2 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java @@ -7,7 +7,8 @@ import org.mapstruct.Mapper; @Mapper public interface SimpleSourceDestinationMapper { - SimpleDestination sourceToDestination(SimpleSource source); + SimpleDestination sourceToDestination(SimpleSource source); + SimpleSource destinationToSource(SimpleDestination destination); - + } diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java index 2077eabf51..19e769629d 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java @@ -4,10 +4,11 @@ import org.baeldung.dto.SimpleSource; import org.baeldung.entity.SimpleDestination; import org.mapstruct.Mapper; -@Mapper(componentModel="spring") +@Mapper(componentModel = "spring") public interface SimpleSourceDestinationSpringMapper { - SimpleDestination sourceToDestination(SimpleSource source); + SimpleDestination sourceToDestination(SimpleSource source); + SimpleSource destinationToSource(SimpleDestination destination); - + } diff --git a/mapstruct/src/main/resources/applicationContext.xml b/mapstruct/src/main/resources/applicationContext.xml new file mode 100644 index 0000000000..1e6649139c --- /dev/null +++ b/mapstruct/src/main/resources/applicationContext.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java index 0433013f2e..318d5ca9ce 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java @@ -1,7 +1,8 @@ package org.baeldung.mapper; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import org.baeldung.dto.DivisionDTO; import org.baeldung.dto.EmployeeDTO; import org.baeldung.entity.Division; import org.baeldung.entity.Employee; @@ -9,40 +10,59 @@ import org.junit.Test; import org.mapstruct.factory.Mappers; public class EmployeeMapperTest { - - @Test - public void givenEmployeeDTOtoEmployee_whenMaps_thenCorrect(){ - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - - EmployeeDTO dto = new EmployeeDTO(); - dto.setDivisionId(1); - dto.setDivisionName("IT Division"); - dto.setEmployeeId(1); - dto.setEmployeeName("John"); - - Employee entity = mapper.employeeDTOtoEmployee(dto); - - assertEquals(dto.getDivisionId(), entity.getDivision().getId()); - assertEquals(dto.getDivisionName(), entity.getDivision().getName()); - assertEquals(dto.getEmployeeId(),entity.getId()); - assertEquals(dto.getEmployeeName(),entity.getName()); - } - - @Test - public void givenEmployeetoEmployeeDTO_whenMaps_thenCorrect(){ - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - - Employee entity = new Employee(); - entity.setDivision(new Division(1,"IT Division")); - entity.setId(1); - entity.setName("John"); - - EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity); - - assertEquals(dto.getDivisionId(), entity.getDivision().getId()); - assertEquals(dto.getDivisionName(), entity.getDivision().getName()); - assertEquals(dto.getEmployeeId(),entity.getId()); - assertEquals(dto.getEmployeeName(),entity.getName()); - } - + + @Test + public void givenEmployeeDTOwithDiffNametoEmployee_whenMaps_thenCorrect() { + EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); + + EmployeeDTO dto = new EmployeeDTO(); + dto.setEmployeeId(1); + dto.setEmployeeName("John"); + + Employee entity = mapper.employeeDTOtoEmployee(dto); + + assertEquals(dto.getEmployeeId(), entity.getId()); + assertEquals(dto.getEmployeeName(), entity.getName()); + } + + @Test + public void givenEmployeewithDiffNametoEmployeeDTO_whenMaps_thenCorrect() { + EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); + + Employee entity = new Employee(); + entity.setId(1); + entity.setName("John"); + + EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity); + + assertEquals(dto.getEmployeeId(), entity.getId()); + assertEquals(dto.getEmployeeName(), entity.getName()); + } + + @Test + public void givenEmployeeDTOwithNestedMappingToEmployee_whenMaps_thenCorrect() { + EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); + + EmployeeDTO dto = new EmployeeDTO(); + dto.setDivision(new DivisionDTO(1, "Division1")); + + Employee entity = mapper.employeeDTOtoEmployee(dto); + + assertEquals(dto.getDivision().getId(), entity.getDivision().getId()); + assertEquals(dto.getDivision().getName(), entity.getDivision().getName()); + } + + @Test + public void givenEmployeeWithNestedMappingToEmployeeDTO_whenMaps_thenCorrect() { + EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); + + Employee entity = new Employee(); + entity.setDivision(new Division(1, "Division1")); + + EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity); + + assertEquals(dto.getDivision().getId(), entity.getDivision().getId()); + assertEquals(dto.getDivision().getName(), entity.getDivision().getName()); + } + } diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java index a7e3b05dc6..f4114e9ce5 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java @@ -9,36 +9,32 @@ import org.mapstruct.factory.Mappers; public class SimpleSourceDestinationMapperTest { - @Test - public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { - SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers - .getMapper(SimpleSourceDestinationMapper.class); - - SimpleSource simpleSource = new SimpleSource(); - simpleSource.setName("SourceName"); - simpleSource.setDescription("SourceDescription"); - - SimpleDestination destination = - simpleSourceDestinationMapper.sourceToDestination(simpleSource); - - assertEquals(simpleSource.getName(), destination.getName()); - assertEquals(simpleSource.getDescription(), destination.getDescription()); - } - - @Test - public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() { - SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers - .getMapper(SimpleSourceDestinationMapper.class); - - SimpleDestination destination = new SimpleDestination(); - destination.setName("DestinationName"); - destination.setDescription("DestinationDescription"); - - SimpleSource source = - simpleSourceDestinationMapper.destinationToSource(destination); - - assertEquals(destination.getName(), source.getName()); - assertEquals(destination.getDescription(), source.getDescription()); - } + @Test + public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { + SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers.getMapper(SimpleSourceDestinationMapper.class); + + SimpleSource simpleSource = new SimpleSource(); + simpleSource.setName("SourceName"); + simpleSource.setDescription("SourceDescription"); + + SimpleDestination destination = simpleSourceDestinationMapper.sourceToDestination(simpleSource); + + assertEquals(simpleSource.getName(), destination.getName()); + assertEquals(simpleSource.getDescription(), destination.getDescription()); + } + + @Test + public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() { + SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers.getMapper(SimpleSourceDestinationMapper.class); + + SimpleDestination destination = new SimpleDestination(); + destination.setName("DestinationName"); + destination.setDescription("DestinationDescription"); + + SimpleSource source = simpleSourceDestinationMapper.destinationToSource(destination); + + assertEquals(destination.getName(), source.getName()); + assertEquals(destination.getDescription(), source.getDescription()); + } } diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java new file mode 100644 index 0000000000..6d39c4c41c --- /dev/null +++ b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java @@ -0,0 +1,45 @@ +package org.baeldung.mapper; + +import static org.junit.Assert.assertEquals; + +import org.baeldung.dto.SimpleSource; +import org.baeldung.entity.SimpleDestination; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath:/applicationContext.xml") +public class SimpleSourceDestinationSpringMapperTest { + + @Autowired + private SimpleSourceDestinationSpringMapper simpleSourceDestinationSpringMapper; + + @Test + public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { + + SimpleSource simpleSource = new SimpleSource(); + simpleSource.setName("SourceName"); + simpleSource.setDescription("SourceDescription"); + + SimpleDestination destination = simpleSourceDestinationSpringMapper.sourceToDestination(simpleSource); + + assertEquals(simpleSource.getName(), destination.getName()); + assertEquals(simpleSource.getDescription(), destination.getDescription()); + } + + @Test + public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() { + SimpleDestination destination = new SimpleDestination(); + destination.setName("DestinationName"); + destination.setDescription("DestinationDescription"); + + SimpleSource source = simpleSourceDestinationSpringMapper.destinationToSource(destination); + + assertEquals(destination.getName(), source.getName()); + assertEquals(destination.getDescription(), source.getDescription()); + } + +} From f0947ae8fb2a122e3c55e6fbde9242ddb692a0dc Mon Sep 17 00:00:00 2001 From: jesus-dayo Date: Fri, 19 Aug 2016 10:25:27 +0800 Subject: [PATCH 2/3] added code for mapstruct tutorial --- .../java/org/baeldung/dto/EmployeeDTO.java | 9 +++ .../java/org/baeldung/entity/Employee.java | 11 +++ .../org/baeldung/mapper/EmployeeMapper.java | 14 +++- .../mapper/SimpleSourceDestinationMapper.java | 2 +- .../SimpleSourceDestinationSpringMapper.java | 14 ---- .../baeldung/mapper/EmployeeMapperTest.java | 73 +++++++++++++++++-- .../SimpleSourceDestinationMapperTest.java | 16 ++-- ...mpleSourceDestinationSpringMapperTest.java | 45 ------------ 8 files changed, 108 insertions(+), 76 deletions(-) delete mode 100644 mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java delete mode 100644 mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java diff --git a/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java index 0fbc0dd109..24d6950cab 100644 --- a/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java +++ b/mapstruct/src/main/java/org/baeldung/dto/EmployeeDTO.java @@ -5,6 +5,7 @@ public class EmployeeDTO { private int employeeId; private String employeeName; private DivisionDTO division; + private String employeeStartDt; public int getEmployeeId() { return employeeId; @@ -30,4 +31,12 @@ public class EmployeeDTO { this.division = division; } + public String getEmployeeStartDt() { + return employeeStartDt; + } + + public void setEmployeeStartDt(String employeeStartDt) { + this.employeeStartDt = employeeStartDt; + } + } diff --git a/mapstruct/src/main/java/org/baeldung/entity/Employee.java b/mapstruct/src/main/java/org/baeldung/entity/Employee.java index e9a6b85461..8c441813b6 100644 --- a/mapstruct/src/main/java/org/baeldung/entity/Employee.java +++ b/mapstruct/src/main/java/org/baeldung/entity/Employee.java @@ -1,10 +1,13 @@ package org.baeldung.entity; +import java.util.Date; + public class Employee { private int id; private String name; private Division division; + private Date startDt; public int getId() { return id; @@ -30,4 +33,12 @@ public class Employee { this.division = division; } + public Date getStartDt() { + return startDt; + } + + public void setStartDt(Date startDt) { + this.startDt = startDt; + } + } diff --git a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java index f20b68cf83..ba1b68f5d9 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java @@ -1,5 +1,7 @@ package org.baeldung.mapper; +import java.util.List; + import org.baeldung.dto.DivisionDTO; import org.baeldung.dto.EmployeeDTO; import org.baeldung.entity.Division; @@ -11,14 +13,22 @@ import org.mapstruct.Mappings; @Mapper public interface EmployeeMapper { - @Mappings({ @Mapping(target = "employeeId", source = "entity.id"), @Mapping(target = "employeeName", source = "entity.name") }) + @Mappings({ @Mapping(target = "employeeId", source = "entity.id"), + @Mapping(target = "employeeName", source = "entity.name"), + @Mapping(target = "employeeStartDt",source = "entity.startDt", dateFormat = "dd-MM-yyyy HH:mm:ss")}) EmployeeDTO employeeToEmployeeDTO(Employee entity); - @Mappings({ @Mapping(target = "id", source = "dto.employeeId"), @Mapping(target = "name", source = "dto.employeeName") }) + @Mappings({ @Mapping(target = "id", source = "dto.employeeId"), + @Mapping(target = "name", source = "dto.employeeName"), + @Mapping(target = "startDt",source = "dto.employeeStartDt", dateFormat = "dd-MM-yyyy HH:mm:ss")}) Employee employeeDTOtoEmployee(EmployeeDTO dto); DivisionDTO divisionToDivisionDTO(Division entity); Division divisionDTOtoDivision(DivisionDTO dto); + List convertEmployeeDTOListToEmployeeList(List list); + + List convertEmployeeListToEmployeeDTOList(List list); + } diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java index de6ce11bd2..3e872e68a3 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationMapper.java @@ -4,7 +4,7 @@ import org.baeldung.dto.SimpleSource; import org.baeldung.entity.SimpleDestination; import org.mapstruct.Mapper; -@Mapper +@Mapper(componentModel = "spring") public interface SimpleSourceDestinationMapper { SimpleDestination sourceToDestination(SimpleSource source); diff --git a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java deleted file mode 100644 index 19e769629d..0000000000 --- a/mapstruct/src/main/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.baeldung.mapper; - -import org.baeldung.dto.SimpleSource; -import org.baeldung.entity.SimpleDestination; -import org.mapstruct.Mapper; - -@Mapper(componentModel = "spring") -public interface SimpleSourceDestinationSpringMapper { - - SimpleDestination sourceToDestination(SimpleSource source); - - SimpleSource destinationToSource(SimpleDestination destination); - -} diff --git a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java index 318d5ca9ce..9111a2c198 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java @@ -2,6 +2,12 @@ package org.baeldung.mapper; import static org.junit.Assert.assertEquals; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + import org.baeldung.dto.DivisionDTO; import org.baeldung.dto.EmployeeDTO; import org.baeldung.entity.Division; @@ -11,10 +17,12 @@ import org.mapstruct.factory.Mappers; public class EmployeeMapperTest { + EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); + + private static final String DATE_FORMAT = "dd-MM-yyyy HH:mm:ss"; + @Test public void givenEmployeeDTOwithDiffNametoEmployee_whenMaps_thenCorrect() { - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - EmployeeDTO dto = new EmployeeDTO(); dto.setEmployeeId(1); dto.setEmployeeName("John"); @@ -27,8 +35,6 @@ public class EmployeeMapperTest { @Test public void givenEmployeewithDiffNametoEmployeeDTO_whenMaps_thenCorrect() { - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - Employee entity = new Employee(); entity.setId(1); entity.setName("John"); @@ -41,8 +47,6 @@ public class EmployeeMapperTest { @Test public void givenEmployeeDTOwithNestedMappingToEmployee_whenMaps_thenCorrect() { - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - EmployeeDTO dto = new EmployeeDTO(); dto.setDivision(new DivisionDTO(1, "Division1")); @@ -54,8 +58,6 @@ public class EmployeeMapperTest { @Test public void givenEmployeeWithNestedMappingToEmployeeDTO_whenMaps_thenCorrect() { - EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - Employee entity = new Employee(); entity.setDivision(new Division(1, "Division1")); @@ -65,4 +67,59 @@ public class EmployeeMapperTest { assertEquals(dto.getDivision().getName(), entity.getDivision().getName()); } + @Test + public void givenEmployeeListToEmployeeDTOList_whenMaps_thenCorrect() { + List employeeList = new ArrayList<>(); + Employee emp = new Employee(); + emp.setId(1); + emp.setName("EmpName"); + emp.setDivision(new Division(1, "Division1")); + employeeList.add(emp); + + List employeeDtoList = mapper.convertEmployeeListToEmployeeDTOList(employeeList); + EmployeeDTO employeeDTO = employeeDtoList.get(0); + assertEquals(employeeDTO.getEmployeeId(), emp.getId()); + assertEquals(employeeDTO.getEmployeeName(), emp.getName()); + assertEquals(employeeDTO.getDivision().getId(), emp.getDivision().getId()); + assertEquals(employeeDTO.getDivision().getName(), emp.getDivision().getName()); + } + + @Test + public void givenEmployeeDTOListToEmployeeList_whenMaps_thenCorrect() { + List employeeDTOList = new ArrayList<>(); + EmployeeDTO empDTO = new EmployeeDTO(); + empDTO.setEmployeeId(1); + empDTO.setEmployeeName("EmpName"); + empDTO.setDivision(new DivisionDTO(1, "Division1")); + employeeDTOList.add(empDTO); + + List employeeList = mapper.convertEmployeeDTOListToEmployeeList(employeeDTOList); + Employee employee = employeeList.get(0); + assertEquals(employee.getId(), empDTO.getEmployeeId()); + assertEquals(employee.getName(), empDTO.getEmployeeName()); + assertEquals(employee.getDivision().getId(), empDTO.getDivision().getId()); + assertEquals(employee.getDivision().getName(), empDTO.getDivision().getName()); + } + + @Test + public void givenEmployeeWithStartDateMappingToEmployeeDTO_whenMaps_thenCorrect() throws ParseException { + Employee entity = new Employee(); + entity.setStartDt(new Date()); + + EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity); + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT); + assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), + entity.getStartDt().toString()); + } + + @Test + public void givenEmployeeDTOWithStartDateMappingToEmployee_whenMaps_thenCorrect() throws ParseException { + EmployeeDTO dto = new EmployeeDTO(); + dto.setEmployeeStartDt("01-04-2016 01:00:00"); + + Employee entity = mapper.employeeDTOtoEmployee(dto); + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT); + assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), + entity.getStartDt().toString()); + } } diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java index f4114e9ce5..0cc072788b 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java @@ -1,18 +1,24 @@ package org.baeldung.mapper; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.baeldung.dto.SimpleSource; import org.baeldung.entity.SimpleDestination; import org.junit.Test; -import org.mapstruct.factory.Mappers; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath:applicationContext.xml") public class SimpleSourceDestinationMapperTest { + @Autowired + SimpleSourceDestinationMapper simpleSourceDestinationMapper; + @Test public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { - SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers.getMapper(SimpleSourceDestinationMapper.class); - SimpleSource simpleSource = new SimpleSource(); simpleSource.setName("SourceName"); simpleSource.setDescription("SourceDescription"); @@ -25,8 +31,6 @@ public class SimpleSourceDestinationMapperTest { @Test public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() { - SimpleSourceDestinationMapper simpleSourceDestinationMapper = Mappers.getMapper(SimpleSourceDestinationMapper.class); - SimpleDestination destination = new SimpleDestination(); destination.setName("DestinationName"); destination.setDescription("DestinationDescription"); diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java deleted file mode 100644 index 6d39c4c41c..0000000000 --- a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationSpringMapperTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.baeldung.mapper; - -import static org.junit.Assert.assertEquals; - -import org.baeldung.dto.SimpleSource; -import org.baeldung.entity.SimpleDestination; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("classpath:/applicationContext.xml") -public class SimpleSourceDestinationSpringMapperTest { - - @Autowired - private SimpleSourceDestinationSpringMapper simpleSourceDestinationSpringMapper; - - @Test - public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { - - SimpleSource simpleSource = new SimpleSource(); - simpleSource.setName("SourceName"); - simpleSource.setDescription("SourceDescription"); - - SimpleDestination destination = simpleSourceDestinationSpringMapper.sourceToDestination(simpleSource); - - assertEquals(simpleSource.getName(), destination.getName()); - assertEquals(simpleSource.getDescription(), destination.getDescription()); - } - - @Test - public void givenSimpleDestinationToSourceDestination_whenMaps_thenCorrect() { - SimpleDestination destination = new SimpleDestination(); - destination.setName("DestinationName"); - destination.setDescription("DestinationDescription"); - - SimpleSource source = simpleSourceDestinationSpringMapper.destinationToSource(destination); - - assertEquals(destination.getName(), source.getName()); - assertEquals(destination.getDescription(), source.getDescription()); - } - -} From e9925d390ca8501f15181d58c543ee7c8975e9cd Mon Sep 17 00:00:00 2001 From: jesus-dayo Date: Fri, 19 Aug 2016 10:28:02 +0800 Subject: [PATCH 3/3] formatted the source code --- .../main/java/org/baeldung/mapper/EmployeeMapper.java | 8 ++------ .../java/org/baeldung/mapper/EmployeeMapperTest.java | 10 ++++------ .../mapper/SimpleSourceDestinationMapperTest.java | 2 +- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java index ba1b68f5d9..013c332e6e 100644 --- a/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java +++ b/mapstruct/src/main/java/org/baeldung/mapper/EmployeeMapper.java @@ -13,14 +13,10 @@ import org.mapstruct.Mappings; @Mapper public interface EmployeeMapper { - @Mappings({ @Mapping(target = "employeeId", source = "entity.id"), - @Mapping(target = "employeeName", source = "entity.name"), - @Mapping(target = "employeeStartDt",source = "entity.startDt", dateFormat = "dd-MM-yyyy HH:mm:ss")}) + @Mappings({ @Mapping(target = "employeeId", source = "entity.id"), @Mapping(target = "employeeName", source = "entity.name"), @Mapping(target = "employeeStartDt", source = "entity.startDt", dateFormat = "dd-MM-yyyy HH:mm:ss") }) EmployeeDTO employeeToEmployeeDTO(Employee entity); - @Mappings({ @Mapping(target = "id", source = "dto.employeeId"), - @Mapping(target = "name", source = "dto.employeeName"), - @Mapping(target = "startDt",source = "dto.employeeStartDt", dateFormat = "dd-MM-yyyy HH:mm:ss")}) + @Mappings({ @Mapping(target = "id", source = "dto.employeeId"), @Mapping(target = "name", source = "dto.employeeName"), @Mapping(target = "startDt", source = "dto.employeeStartDt", dateFormat = "dd-MM-yyyy HH:mm:ss") }) Employee employeeDTOtoEmployee(EmployeeDTO dto); DivisionDTO divisionToDivisionDTO(Division entity); diff --git a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java index 9111a2c198..c5998f89ef 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/EmployeeMapperTest.java @@ -18,7 +18,7 @@ import org.mapstruct.factory.Mappers; public class EmployeeMapperTest { EmployeeMapper mapper = Mappers.getMapper(EmployeeMapper.class); - + private static final String DATE_FORMAT = "dd-MM-yyyy HH:mm:ss"; @Test @@ -108,10 +108,9 @@ public class EmployeeMapperTest { EmployeeDTO dto = mapper.employeeToEmployeeDTO(entity); SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT); - assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), - entity.getStartDt().toString()); + assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), entity.getStartDt().toString()); } - + @Test public void givenEmployeeDTOWithStartDateMappingToEmployee_whenMaps_thenCorrect() throws ParseException { EmployeeDTO dto = new EmployeeDTO(); @@ -119,7 +118,6 @@ public class EmployeeMapperTest { Employee entity = mapper.employeeDTOtoEmployee(dto); SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT); - assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), - entity.getStartDt().toString()); + assertEquals(format.parse(dto.getEmployeeStartDt()).toString(), entity.getStartDt().toString()); } } diff --git a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java index 0cc072788b..226603b16a 100644 --- a/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java +++ b/mapstruct/src/test/java/org/baeldung/mapper/SimpleSourceDestinationMapperTest.java @@ -16,7 +16,7 @@ public class SimpleSourceDestinationMapperTest { @Autowired SimpleSourceDestinationMapper simpleSourceDestinationMapper; - + @Test public void givenSimpleSourceToSimpleDestination_whenMaps_thenCorrect() { SimpleSource simpleSource = new SimpleSource();