package fr.openwide.core.basicapp.web.application.common.form;
import java.util.List;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.model.IModel;
import fr.openwide.core.basicapp.core.business.user.model.User;
import fr.openwide.core.basicapp.web.application.administration.template.AdministrationUserDescriptionTemplate;
import fr.openwide.core.basicapp.web.application.common.typedescriptor.user.UserTypeDescriptor;
import fr.openwide.core.wicket.more.markup.html.form.AbstractQuickSearchComponent;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
public class UserQuickSearchComponent<U extends User> extends AbstractQuickSearchComponent<U> {
private static final long serialVersionUID = -7717935272455937918L;
private static final UserChoiceRenderer USER_CHOICE_RENDERER = new UserChoiceRenderer();
private final UserTypeDescriptor<U> typeDescriptor;
public UserQuickSearchComponent(String id, UserTypeDescriptor<U> typeDescriptor) {
this(id, new GenericEntityModel<Long, U>(), typeDescriptor);
}
private UserQuickSearchComponent(String id, IModel<U> userModel, UserTypeDescriptor<U> typeDescriptor) {
super(id, userModel, USER_CHOICE_RENDERER,
AdministrationUserDescriptionTemplate.<U>mapper().ignoreParameter2().map(userModel));
this.typeDescriptor = typeDescriptor;
}
@Override
protected List<U> searchAutocomplete(String term, int limit, int offset) {
return typeDescriptor.newSearchQuery().nameAutocomplete(term).list(offset, limit);
}
private static final class UserChoiceRenderer extends ChoiceRenderer<User> {
private static final long serialVersionUID = 1L;
@Override
public Object getDisplayValue(User user) {
return user != null ? user.getFullName() : "";
}
@Override
public String getIdValue(User user, int index) {
return user != null ? user.getId().toString() : "-1";
}
}
}