package org.sculptor.examples.library.person.repositoryimpl; import static org.sculptor.examples.library.person.domain.PersonProperties.name; import static org.sculptor.framework.accessapi.ConditionalCriteriaBuilder.criteriaFor; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import org.sculptor.examples.library.person.domain.Person; import org.sculptor.framework.accessapi.ConditionalCriteria; import org.springframework.stereotype.Repository; /** * Repository implementation for Person */ @Repository("personRepository") public class PersonRepositoryImpl extends PersonRepositoryBase { public PersonRepositoryImpl() { } @Override public List<Person> findPersonByName(String name) { List<String> names = Arrays.asList(name.split(" ")); List<ConditionalCriteria> firstNameCondition = criteriaFor(Person.class).withProperty(name().first()).in(names) .build(); List<Person> result1 = findByCondition(firstNameCondition); List<ConditionalCriteria> lastNameCondition = criteriaFor(Person.class).withProperty(name().last()).in(names) .build(); List<Person> result2 = findByCondition(lastNameCondition); Set<Person> concatenatedResult = new HashSet<Person>(); concatenatedResult.addAll(result1); concatenatedResult.addAll(result2); return new ArrayList<Person>(concatenatedResult); } }