package com.tri.ui.test.interfaces.sample.web; import java.util.ArrayList; import java.util.List; import javax.faces.event.ValueChangeEvent; import javax.inject.Inject; import com.tri.ui.model.PagedListDataController; import com.tri.ui.model.SortProperty; import com.tri.ui.model.adapter.PrimeFacesLazyAdapter; import com.tri.ui.model.observer.ChangeEventType; import com.tri.ui.test.domain.model.sample.Sample; import com.tri.ui.test.domain.model.sample.SampleRepository; public class PagedSampleDataController extends PagedListDataController<Long, Sample> { private static final long serialVersionUID = 1L; @Inject SampleRepository sampleRepository; PrimeFacesLazyAdapter<Long, Sample> adapter; /** filter */ String name; /** filter */ Long age; @Override public int count() { return (int) sampleRepository.countSamples(name, age); } @Override public List<Sample> load(int first, int pageSize, List<SortProperty> sorting) { ArrayList<String> convertedSorting = null; if (sorting.size() > 0) { convertedSorting = new ArrayList<String>(getSorting().size()); for (SortProperty sortingProperty : sorting) { convertedSorting.add(sortingProperty.getName() + " " + sortingProperty.getOrder().getSqlKeyword()); } } return sampleRepository.findSamples(first, pageSize, name, age, convertedSorting); } public void clearAllFilterProperties() { name = null; age = null; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getAge() { return age; } public void setAge(Long age) { this.age = age; } public void filterValueChangeListener(ValueChangeEvent event) { clearCache(); clearSelection(); notify(ChangeEventType.DATA); } public PrimeFacesLazyAdapter<Long, Sample> getAdapter() { if (adapter == null) { adapter = new PrimeFacesLazyAdapter<Long, Sample>(this) .setNotifyOnSortOrderChanges(true) .setClearSelectionOnFilterChanges(true); } return adapter; } @Override public Long getKeyOf(Sample value) { return value.getId(); } }