/*
* 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.examples.addressbook.service.impl;
import com.inspiresoftware.lib.dto.geda.assembler.Assembler;
import com.inspiresoftware.lib.dto.geda.assembler.DTOAssembler;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.domain.Address;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.domain.Person;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.dto.ContactDTO;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.dto.impl.ContactDTOImpl;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.service.AddressBookService;
import com.inspiresoftware.lib.dto.geda.examples.addressbook.service.PersonDAO;
import java.util.ArrayList;
import java.util.List;
/**
* .
* <p/>
* User: denispavlov
* Date: Aug 30, 2012
* Time: 12:16:10 PM
*/
public class AddressBookServiceImpl implements AddressBookService {
private final PersonDAO personDAO;
public AddressBookServiceImpl(final PersonDAO personDAO) {
this.personDAO = personDAO;
}
public List<ContactDTO> getContactsByName(final String firstName) {
final List<Person> people = personDAO.findByFirstName(firstName);
final List<Object[]> entities = new ArrayList<Object[]>();
for (Person person : people) {
entities.add(new Object[] {
person,
personDAO.lookUpAddress(person)
});
}
final Assembler asm = DTOAssembler.newCompositeAssembler(
ContactDTOImpl.class, new Class[] { Person.class, Address.class });
final List<ContactDTO> dtos = new ArrayList<ContactDTO>();
asm.assembleDtos(dtos, entities, null, null);
return dtos;
}
}