/* * This code is distributed under The GNU Lesser General Public License (LGPLv3) * Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html * * Copyright Denis Pavlov 2009 * Web: http://www.genericdtoassembler.org * SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/ * SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/ */ package com.inspiresoftware.lib.dto.geda.benchmark.support.manual; import com.inspiresoftware.lib.dto.geda.benchmark.Mapper; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Address; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Country; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Name; import com.inspiresoftware.lib.dto.geda.benchmark.domain.Person; import com.inspiresoftware.lib.dto.geda.benchmark.dto.AddressDTO; import com.inspiresoftware.lib.dto.geda.benchmark.dto.PersonWithHistoryDTO; import java.util.ArrayList; /** * . * <p/> * User: denispavlov * Date: Sep 17, 2012 * Time: 10:29:18 AM */ public class ManualListMapper implements Mapper { public Object fromEntity(final Object entity) { final Person person = (Person) entity; final PersonWithHistoryDTO dto = new PersonWithHistoryDTO(); if (person.getPreviousAddresses() != null) { dto.setPreviousAddresses(new ArrayList<AddressDTO>()); for (final Address address : person.getPreviousAddresses()) { dto.getPreviousAddresses().add(fromAddress(address)); } } if (person.getName() != null) { dto.setFirstName(person.getName().getFirstname()); dto.setLastName(person.getName().getSurname()); } if (person.getCurrentAddress() != null) { final Address address = person.getCurrentAddress(); final AddressDTO addressDTO = fromAddress(address); dto.setCurrentAddress(addressDTO); } dto.setId(person.getId()); return dto; } private AddressDTO fromAddress(final Address address) { final AddressDTO addressDTO = new AddressDTO(); addressDTO.setAddressLine1(address.getAddressLine1()); addressDTO.setAddressLine2(address.getAddressLine2()); addressDTO.setCity(address.getCity()); addressDTO.setPostCode(address.getPostCode()); if (address.getCountry() != null) { addressDTO.setCountryName(address.getCountry().getName()); } return addressDTO; } public Object fromDto(final Object dto) { final Person person = new Person(); final PersonWithHistoryDTO personDTO = (PersonWithHistoryDTO) dto; person.setName(new Name(personDTO.getFirstName(), personDTO.getLastName())); if (personDTO.getCurrentAddress() != null) { final AddressDTO addressDTO = personDTO.getCurrentAddress(); final Address address = fromAddressDTO(addressDTO); person.setCurrentAddress(address); } person.setPreviousAddresses(new ArrayList<Address>()); for (final AddressDTO addressDTO : personDTO.getPreviousAddresses()) { person.getPreviousAddresses().add(fromAddressDTO(addressDTO)); } person.setId(personDTO.getId()); return person; } private Address fromAddressDTO(final AddressDTO addressDTO) { final Address address = new Address(); address.setAddressLine1(addressDTO.getAddressLine1()); address.setAddressLine2(addressDTO.getAddressLine2()); address.setCity(addressDTO.getCity()); address.setPostCode(addressDTO.getPostCode()); address.setCountry(new Country(addressDTO.getCountryName())); return address; } }