package fr.openwide.core.wicket.more.markup.html.model;
import java.util.Comparator;
import java.util.List;
import javax.annotation.Nullable;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import fr.openwide.core.jpa.more.business.generic.model.EnabledFilter;
import fr.openwide.core.jpa.more.business.generic.model.GenericListItem;
import fr.openwide.core.jpa.more.business.generic.service.IGenericListItemService;
public class GenericListItemListModel<T extends GenericListItem<?>> extends LoadableDetachableModel<List<T>> {
private static final long serialVersionUID = -8014868217254919305L;
private Class<T> clazz;
private final Comparator<? super T> comparator;
private final EnabledFilter enabledFilter;
@SpringBean(name = "genericListItemService")
private IGenericListItemService genericListItemService;
/**
* @deprecated Use {@link #GenericListItemListModel(Class, EnabledFilter)} instead
*/
@Deprecated
public GenericListItemListModel(Class<T> clazz, boolean enabledOnly) {
this(clazz, null, enabledOnly);
}
public GenericListItemListModel(Class<T> clazz, EnabledFilter enabledFilter) {
this(clazz, null, enabledFilter);
}
public GenericListItemListModel(Class<T> clazz, @Nullable Comparator<? super T> comparator) {
this(clazz, comparator, EnabledFilter.ENABLED_ONLY);
}
/**
* @deprecated Use {@link #GenericListItemListModel(Class, Comparator, EnabledFilter)} instead
*/
@Deprecated
public GenericListItemListModel(Class<T> clazz, @Nullable Comparator<? super T> comparator, boolean enabledOnly) {
this(clazz, comparator, enabledOnly ? EnabledFilter.ENABLED_ONLY : EnabledFilter.ALL);
}
public GenericListItemListModel(Class<T> clazz, @Nullable Comparator<? super T> comparator, EnabledFilter enabledFilter) {
super();
Injector.get().inject(this);
this.clazz = clazz;
this.enabledFilter = enabledFilter;
this.comparator = comparator;
}
@Override
protected List<T> load() {
return genericListItemService.list(clazz, enabledFilter, comparator);
}
}