From 92ffc76addba9edb70c56c4475f836a23802f999 Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Wed, 10 Jun 2015 22:54:16 +0200 Subject: [PATCH] #4 Demonstrate the usage of MapStruct for bean mappings --- oasp4j-bom/pom.xml | 6 ++++ oasp4j-samples/oasp4j-sample-core/pom.xml | 36 ++++++++++++++++++- .../general/common/api/to/AbstractEto.java | 11 ++++++ .../logic/impl/TablemanagementImpl.java | 26 ++++++++++---- .../logic/mapper/TableMapper.java | 18 ++++++++++ 5 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java diff --git a/oasp4j-bom/pom.xml b/oasp4j-bom/pom.xml index cfe0503bb..ee46a6644 100644 --- a/oasp4j-bom/pom.xml +++ b/oasp4j-bom/pom.xml @@ -194,6 +194,12 @@ validation-api 1.1.0.Final + + + org.mapstruct + mapstruct + 1.0.0.CR1 + diff --git a/oasp4j-samples/oasp4j-sample-core/pom.xml b/oasp4j-samples/oasp4j-sample-core/pom.xml index 93e5c7334..53091a1c6 100644 --- a/oasp4j-samples/oasp4j-sample-core/pom.xml +++ b/oasp4j-samples/oasp4j-sample-core/pom.xml @@ -134,6 +134,11 @@ hibernate-validator + + org.mapstruct + mapstruct + + org.apache.cxf @@ -196,7 +201,36 @@ config/env/* - + + + org.bsc.maven + maven-processor-plugin + 2.2.4 + + + ${project.build.directory}/generated-sources + + + org.mapstruct.ap.MappingProcessor + + + + + process + generate-sources + + process + + + + + + org.mapstruct + mapstruct-processor + 1.0.0.CR1 + + + diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java index 295c09214..e518a4eb6 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/general/common/api/to/AbstractEto.java @@ -20,4 +20,15 @@ public AbstractEto() { super(); } + @Override + public void setId(Long id) { + + super.setId(id); + } + + @Override + public Long getId() { + + return super.getId(); + } } diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/TablemanagementImpl.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/TablemanagementImpl.java index 027b79697..61a589b7f 100644 --- a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/TablemanagementImpl.java +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/impl/TablemanagementImpl.java @@ -14,6 +14,7 @@ import io.oasp.gastronomy.restaurant.tablemanagement.logic.api.Tablemanagement; import io.oasp.gastronomy.restaurant.tablemanagement.logic.api.to.TableEto; import io.oasp.gastronomy.restaurant.tablemanagement.logic.api.to.TableSearchCriteriaTo; +import io.oasp.gastronomy.restaurant.tablemanagement.logic.mapper.TableMapper; import io.oasp.module.jpa.common.api.to.PaginatedListTo; import java.util.List; @@ -45,6 +46,8 @@ public class TablemanagementImpl extends AbstractComponentFacade implements Tabl private Staffmanagement staffmanagement; + private TableMapper tableMapper; + /** * The constructor. */ @@ -58,7 +61,7 @@ public TablemanagementImpl() { public TableEto findTable(Long id) { LOG.debug("Get table with id '" + id + "' from database."); - return getBeanMapper().map(getTableDao().findOne(id), TableEto.class); + return getTableMapper().toTableEto(getTableDao().findOne(id)); } @Override @@ -67,7 +70,7 @@ public List findAllTables() { LOG.debug("Get all restaurant tables from database."); List tables = getTableDao().findAll(); - return getBeanMapper().mapList(tables, TableEto.class); + return getTableMapper().toTableEtos(tables); } @Override @@ -77,7 +80,7 @@ public List findFreeTables() { LOG.debug("Get all free restaurant tables from database."); List tables = getTableDao().getFreeTables(); - return getBeanMapper().mapList(tables, TableEto.class); + return getTableMapper().toTableEtos(tables); } @Override @@ -87,7 +90,7 @@ public PaginatedListTo findTableEtos(TableSearchCriteriaTo criteria) { criteria.limitMaximumPageSize(MAXIMUM_HIT_LIMIT); PaginatedListTo tables = getTableDao().findTables(criteria); - return mapPaginatedEntityList(tables, TableEto.class); + return new PaginatedListTo<>(getTableMapper().toTableEtos(tables.getResult()), tables.getPagination()); } @Override @@ -111,7 +114,7 @@ public TableEto saveTable(@Valid TableEto table) { Long tableId = table.getId(); - TableEntity tableEntity = getBeanMapper().map(table, TableEntity.class); + TableEntity tableEntity = getTableMapper().toTableEntity(table); // initialize if (tableEntity.getState() == null) { tableEntity.setState(TableState.FREE); @@ -127,7 +130,7 @@ public TableEto saveTable(@Valid TableEto table) { getTableDao().save(tableEntity); LOG.debug("Table with id '{}' has been created.", tableEntity.getId()); - return getBeanMapper().map(tableEntity, TableEto.class); + return getTableMapper().toTableEto(tableEntity); } @Override @@ -178,5 +181,16 @@ public void setStaffmanagement(Staffmanagement staffmanagement) { this.staffmanagement = staffmanagement; } + + public TableMapper getTableMapper() { + + return tableMapper; + } + + @Inject + public void setTableMapper(TableMapper tableMapper) { + + this.tableMapper = tableMapper; + } } diff --git a/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java new file mode 100644 index 000000000..25f17524a --- /dev/null +++ b/oasp4j-samples/oasp4j-sample-core/src/main/java/io/oasp/gastronomy/restaurant/tablemanagement/logic/mapper/TableMapper.java @@ -0,0 +1,18 @@ +package io.oasp.gastronomy.restaurant.tablemanagement.logic.mapper; + +import io.oasp.gastronomy.restaurant.tablemanagement.dataaccess.api.TableEntity; +import io.oasp.gastronomy.restaurant.tablemanagement.logic.api.to.TableEto; + +import java.util.List; + +import org.mapstruct.Mapper; + +@Mapper(componentModel = "jsr330") +public interface TableMapper { + + TableEto toTableEto(TableEntity table); + + TableEntity toTableEntity(TableEto table); + + List toTableEtos(List tables); +}