package fr.openwide.core.wicket.more.markup.html.select2;
import java.util.List;
import java.util.Locale;
import org.apache.wicket.Session;
import org.apache.wicket.injection.Injector;
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.jpa.exception.ServiceException;
import fr.openwide.core.jpa.more.business.generic.model.GenericLocalizedGenericListItem;
import fr.openwide.core.jpa.more.business.generic.service.IGenericLocalizedGenericListItemService;
public class LocalizedGenericListItemSelect2AjaxAdapter<E extends GenericLocalizedGenericListItem<?, ?>>
extends AbstractLongIdGenericEntitySelect2AjaxAdapter<E> {
private static final long serialVersionUID = -1596052281032908173L;
private static final Logger LOGGER = LoggerFactory.getLogger(LocalizedGenericListItemSelect2AjaxAdapter.class);
@SpringBean
private IGenericLocalizedGenericListItemService<? super E, ?> localizedGenericListItemService;
private final Class<E> clazz;
public LocalizedGenericListItemSelect2AjaxAdapter(Class<E> clazz) {
super(clazz, new DefaultLocalizedGenericListItemChoiceRenderer());
this.clazz = clazz;
Injector.get().inject(this);
}
@Override
public List<E> getChoices(int start, int count, String filter) {
try {
return localizedGenericListItemService.searchAutocomplete(filter, clazz, getLocale(), count, start);
} catch (ServiceException e) {
LOGGER.error("Error while searching for " + clazz.getSimpleName(), e);
return Lists.newArrayList();
}
}
protected Locale getLocale() {
return Session.get().getLocale();
}
}