Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hu.xxx.ddc.components;
- import hu.xxx.ddc.model.DdcPDeps;
- import hu.xxx.ddc.services.DdcCustomBo;
- import java.io.Serializable;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.List;
- import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
- import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilterStateLocator;
- import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
- import org.apache.wicket.model.IDetachable;
- import org.apache.wicket.model.IModel;
- import org.apache.wicket.model.LoadableDetachableModel;
- import org.apache.wicket.model.PropertyModel;
- import org.hibernate.Criteria;
- import org.hibernate.Query;
- import org.hibernate.criterion.Restrictions;
- /**
- *
- * @author user
- */
- public class DdcPDepsDataProvider extends SortableDataProvider<DdcPDeps, String> implements IFilterStateLocator<DdcPDeps>,IDetachable {
- private static final long serialVersionUID = 1L;
- private final DdcCustomBo customBo;
- private DdcPDeps filter;
- private transient List<DdcPDeps> filtered;
- private final DdcPDepsDataProvider.SortableDataProviderComparator comparator = new DdcPDepsDataProvider.SortableDataProviderComparator();
- private Criteria crit;
- public DdcPDepsDataProvider(DdcCustomBo customBo, DdcPDeps filter) {
- setSort("pName", SortOrder.DESCENDING);
- this.customBo = customBo;
- this.filter = filter;
- initList();
- }
- @Override
- public IModel<DdcPDeps> model(final DdcPDeps object) {
- return new LoadableDetachableModel<DdcPDeps>() {
- @Override
- protected DdcPDeps load() {
- return object;
- }
- };
- }
- class SortableDataProviderComparator implements Comparator, Serializable {
- @Override
- public int compare(Object o1, Object o2) {
- PropertyModel<Comparable> model1 = new PropertyModel<Comparable>(o1, getSort().getProperty());
- PropertyModel<Comparable> model2 = new PropertyModel<Comparable>(o2, getSort().getProperty());
- int result = model1.getObject().compareTo(model2.getObject());
- if (!getSort().isAscending()) {
- result = -result;
- }
- return result;
- }
- }
- @Override
- public Iterator<? extends DdcPDeps> iterator(long first, long count) {
- initList();
- Collections.sort(filtered, comparator);
- return filtered.subList((int) first, Math.min((int) (first + count), filtered.size())).iterator();
- }
- @Override
- public long size() {
- if (filtered != null) {
- return filtered.size();
- } else {
- initList();
- if (filtered != null) {
- return filtered.size();
- } else {
- return 0;
- }
- }
- }
- private void initList() {
- if (filtered == null
- || getFilterState() != null) {
- DdcPDeps u = (DdcPDeps) getFilterState();
- try {
- if (u != null) {
- customBo.getDaoSession().beginTransaction();
- crit = customBo.getDaoSession().createCriteria(u.getClass());
- if (u.getCru() != null) {
- crit.add(Restrictions.like("cru", u.getCru() + "%"));
- }
- this.filtered = customBo.findAll(crit);
- } else {
- Query q = customBo.getDaoSession().getNamedQuery("DdcPDeps.findAll");
- this.filtered = (List<DdcPDeps>) customBo.findAll(u.getClass(), q);
- }
- if (customBo.getDaoSession().getTransaction().isActive()) {
- customBo.getDaoSession().getTransaction().commit();
- }
- } catch (Exception e) {
- if (customBo.getDaoSession().getTransaction().isActive()) {
- customBo.getDaoSession().getTransaction().rollback();
- }
- }
- }
- }
- @Override
- public DdcPDeps getFilterState() {
- return (DdcPDeps) filter;
- }
- @Override
- public void setFilterState(DdcPDeps t) {
- this.filter = (DdcPDeps) t;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement