package module.mission.presentationTier.provider.autoComplete;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import module.organization.domain.Person;
import org.fenixedu.bennu.core.domain.Bennu;
import org.fenixedu.bennu.core.presentationTier.renderers.autoCompleteProvider.AutoCompleteProvider;
import org.fenixedu.commons.StringNormalizer;
public class PersonAutoComplete implements AutoCompleteProvider {
@Override
public Collection getSearchResults(Map argsMap, String value, int maxCount) {
Set<Person> people = new HashSet<Person>();
String[] values = StringNormalizer.normalize(value).toLowerCase().split(" ");
for (Person person : Bennu.getInstance().getPersonsSet()) {
if (person.getUser() != null && person.getUser().getProfile() != null) {
if (person.getUser().getProfile().getFullName() != null) {
final String normalizedName = StringNormalizer.normalize(person.getUser().getProfile().getFullName()).toLowerCase();
if (hasMatch(values, normalizedName)) {
people.add(person);
}
}
if (person.getUser() != null && person.getUser().getUsername().indexOf(value) >= 0) {
people.add(person);
}
}
}
return people;
}
private boolean hasMatch(String[] input, String personNameParts) {
for (final String namePart : input) {
if (personNameParts.indexOf(namePart) == -1) {
return false;
}
}
return true;
}
}