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 org.apache.wicket.spring.injection.annot.SpringBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.Lists; import fr.openwide.core.basicapp.core.business.user.model.UserGroup; import fr.openwide.core.basicapp.core.business.user.service.IUserGroupService; import fr.openwide.core.wicket.more.markup.html.form.AutocompleteAjaxComponent; public class UserGroupAutocompleteAjaxComponent extends AutocompleteAjaxComponent<UserGroup> { private static final long serialVersionUID = -2583062091216398638L; private static final Logger LOGGER = LoggerFactory.getLogger(UserGroupAutocompleteAjaxComponent.class); private static final UserGroupChoiceRenderer USER_GROUP_CHOICE_RENDERER = new UserGroupChoiceRenderer(); @SpringBean private IUserGroupService userGroupService; public UserGroupAutocompleteAjaxComponent(String id, IModel<UserGroup> userModel) { super(id, userModel); setChoiceRenderer(USER_GROUP_CHOICE_RENDERER); } @Override public List<UserGroup> getValues(String term) { try { return userGroupService.searchAutocomplete(term); } catch (Exception e) { LOGGER.error("User autocomplete search error", e); return Lists.newArrayList(); } } @Override public UserGroup getValueOnSearchFail(String input) { return null; } private static final class UserGroupChoiceRenderer extends ChoiceRenderer<UserGroup> { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(UserGroup userGroup) { return userGroup != null ? userGroup.getName() : ""; } @Override public String getIdValue(UserGroup userGroup, int index) { return userGroup != null ? userGroup.getId().toString() : "-1"; } } }