diff --git a/bean-mapper-test/pom.xml b/bean-mapper-test/pom.xml index 22ed446..fcd5bd3 100644 --- a/bean-mapper-test/pom.xml +++ b/bean-mapper-test/pom.xml @@ -82,6 +82,11 @@ selma-processor provided + + com.remondis + remap + 1.0.3 + diff --git a/bean-mapper-test/src/main/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBean.java b/bean-mapper-test/src/main/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBean.java new file mode 100644 index 0000000..06090b8 --- /dev/null +++ b/bean-mapper-test/src/main/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBean.java @@ -0,0 +1,84 @@ +package de.rahn.performance.beanmapper.vendors; + +import com.remondis.remap.Mapper; +import com.remondis.remap.Mapping; +import com.remondis.remap.Transform; +import de.frank_rahn.xmlns.types.testtypes._1.XmlRow; +import de.frank_rahn.xmlns.types.testtypes._1.XmlTable; +import de.rahn.performance.beanmapper.TestBeansMapperBean; +import de.rahn.performance.testbeans.DomainRow; +import de.rahn.performance.testbeans.DomainTable; +import java.util.Calendar; +import java.util.Date; +import org.springframework.stereotype.Component; + +@Component +public class ReMapTestBeansMapperBean implements TestBeansMapperBean { + + private Mapper xmlRowToDomainRowMapper; + + private Mapper xmlTableToDomainTableMapper; + + private Mapper domainRowToXmlRowMapper; + + private Mapper domainTableToXmlTableMapper; + + public ReMapTestBeansMapperBean() { + this.xmlRowToDomainRowMapper = Mapping + .from(XmlRow.class) + .to(DomainRow.class) + .mapper(); + this.xmlTableToDomainTableMapper = Mapping + .from(XmlTable.class) + .to(DomainTable.class) + .replace(XmlTable::getDate, DomainTable::getDate) + .with(calendarToDate()) + .useMapper(xmlRowToDomainRowMapper) + .mapper(); + this.domainRowToXmlRowMapper = Mapping + .from(DomainRow.class) + .to(XmlRow.class) + .mapper(); + this.domainTableToXmlTableMapper = Mapping.from(DomainTable.class) + .to(XmlTable.class) + .replace(DomainTable::getDate, XmlTable::getDate) + .with(dateToCalendar()) + .useMapper(this.domainRowToXmlRowMapper) + .mapper(); + } + + @Override + public String getMapperName() { + return "reMap"; + } + + @Override + public XmlTable map(DomainTable source) throws Exception { + return domainTableToXmlTableMapper.map(source); + } + + @Override + public DomainTable map(XmlTable source) throws Exception { + return xmlTableToDomainTableMapper.map(source); + } + + private Transform dateToCalendar() { + return source -> { + if (source == null) { + return null; + } + Calendar c = Calendar.getInstance(); + c.setTime(source); + return c; + }; + } + + private Transform calendarToDate() { + return source -> { + if (source == null) { + return null; + } + return source.getTime(); + }; + } +} diff --git a/bean-mapper-test/src/test/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBeanTest.java b/bean-mapper-test/src/test/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBeanTest.java new file mode 100644 index 0000000..4dc71f2 --- /dev/null +++ b/bean-mapper-test/src/test/java/de/rahn/performance/beanmapper/vendors/ReMapTestBeansMapperBeanTest.java @@ -0,0 +1,16 @@ +/* + * Copyright © 2014 by Frank W. Rahn. Alle Rechte vorbehalten. All rights + * reserved. + */ +package de.rahn.performance.beanmapper.vendors; + +import org.junit.Before; + +public class ReMapTestBeansMapperBeanTest extends AbstractTestBeansMapperBeanTest { + + @Before + public void setUp() throws Exception { + mapperBean = new ReMapTestBeansMapperBean(); + } + +} \ No newline at end of file