package fr.openwide.maven.artifact.notifier.web.application.common.component;
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.wicket.more.markup.html.form.AutocompleteAjaxComponent;
import fr.openwide.maven.artifact.notifier.core.business.user.model.User;
import fr.openwide.maven.artifact.notifier.core.business.user.service.IUserService;
public class UserAutocompleteAjaxComponent extends AutocompleteAjaxComponent<User> {
private static final long serialVersionUID = -7717935272455937918L;
private static final Logger LOGGER = LoggerFactory.getLogger(UserAutocompleteAjaxComponent.class);
private static final UserChoiceRenderer USER_CHOICE_RENDERER = new UserChoiceRenderer();
@SpringBean
private IUserService userService;
public UserAutocompleteAjaxComponent(String id, IModel<User> userModel) {
super(id, userModel);
setChoiceRenderer(USER_CHOICE_RENDERER);
}
@Override
public List<User> getValues(String term) {
try {
return userService.searchAutocomplete(term);
} catch (Exception e) {
LOGGER.error("User autocomplete search error", e);
return Lists.newArrayList();
}
}
@Override
public User getValueOnSearchFail(String input) {
return null;
}
private static final class UserChoiceRenderer extends ChoiceRenderer<User> {
private static final long serialVersionUID = 1L;
@Override
public Object getDisplayValue(User user) {
return user != null ? user.getUserName() : "";
}
@Override
public String getIdValue(User user, int index) {
return user != null ? user.getId().toString() : "-1";
}
}
}