package fr.openwide.core.wicket.more.console.maintenance.task.model; import java.util.Collection; import java.util.Date; import org.apache.wicket.injection.Injector; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.util.CollectionModel; import fr.openwide.core.jpa.more.business.search.query.ISearchQuery; import fr.openwide.core.jpa.more.business.task.model.QueuedTaskHolder; import fr.openwide.core.jpa.more.business.task.search.IQueuedTaskHolderSearchQuery; import fr.openwide.core.jpa.more.business.task.search.QueuedTaskHolderSort; import fr.openwide.core.jpa.more.business.task.util.TaskResult; import fr.openwide.core.jpa.more.business.task.util.TaskStatus; import fr.openwide.core.wicket.more.markup.html.sort.model.CompositeSortModel; import fr.openwide.core.wicket.more.markup.html.sort.model.CompositeSortModel.CompositingStrategy; import fr.openwide.core.wicket.more.model.AbstractSearchQueryDataProvider; import fr.openwide.core.wicket.more.model.GenericEntityModel; public class QueuedTaskHolderDataProvider extends AbstractSearchQueryDataProvider<QueuedTaskHolder, QueuedTaskHolderSort> { private static final long serialVersionUID = -1886156254057416250L; private final IModel<String> nameModel = new Model<String>(); private final IModel<Collection<TaskStatus>> statusesModel = new CollectionModel<TaskStatus>(); private final IModel<Collection<TaskResult>> resultsModel = new CollectionModel<TaskResult>(); private final IModel<Collection<String>> taskTypesModel = new CollectionModel<String>(); private final IModel<Collection<String>> queueIdsModel = new CollectionModel<String>(); private final IModel<Date> creationDateModel = new Model<Date>(); private final IModel<Date> startDateModel = new Model<Date>(); private final IModel<Date> endDateModel = new Model<Date>(); private final CompositeSortModel<QueuedTaskHolderSort> sortModel = new CompositeSortModel<>( CompositingStrategy.LAST_ONLY, QueuedTaskHolderSort.CREATION_DATE ); public QueuedTaskHolderDataProvider() { super(); Injector.get().inject(this); } public IModel<String> getNameModel() { return nameModel; } public IModel<Collection<TaskStatus>> getStatusesModel() { return statusesModel; } public IModel<Collection<TaskResult>> getResultsModel() { return resultsModel; } public IModel<Collection<String>> getTaskTypesModel() { return taskTypesModel; } public IModel<Collection<String>> getQueueIdsModel() { return queueIdsModel; } public IModel<Date> getCreationDateModel() { return creationDateModel; } public IModel<Date> getStartDateModel() { return startDateModel; } public IModel<Date> getCompletionDateModel() { return endDateModel; } @Override public IModel<QueuedTaskHolder> model(QueuedTaskHolder object) { return new GenericEntityModel<Long, QueuedTaskHolder>(object); } @Override public void detach() { super.detach(); nameModel.detach(); statusesModel.detach(); resultsModel.detach(); taskTypesModel.detach(); queueIdsModel.detach(); creationDateModel.detach(); startDateModel.detach(); endDateModel.detach(); } @Override protected ISearchQuery<QueuedTaskHolder, QueuedTaskHolderSort> getSearchQuery() { return createSearchQuery(IQueuedTaskHolderSearchQuery.class) .name(nameModel.getObject()) .statuses(statusesModel.getObject()) .results(resultsModel.getObject()) .types(taskTypesModel.getObject()) .queueIds(queueIdsModel.getObject()) .creationDate(creationDateModel.getObject()) .startDate(startDateModel.getObject()) .endDate(endDateModel.getObject()) .sort(sortModel.getObject()); } }