package com.smilonet.common.dao.jpa;
import java.io.Serializable;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import com.smilonet.common.entity.IValidable;
public interface BaseValidableDao<T extends IValidable<ID>, ID extends Serializable> extends BaseDao<T, ID> {
T findOneValid(final Specification<T> spec);
List<T> findAllValid();
List<T> findAllInvalid();
List<T> findAllValid(Sort sort);
List<T> findAllInvalid(Sort sort);
Page<T> findValid(Pageable pageable);
Page<T> findInvalid(Pageable pageable);
Page<T> findValid(final Specification<T> spec, Pageable pageable);
List<T> findValid(final Specification<T> spec);
List<T> findValid(final Specification<T> spec, Sort sort);
Page<T> findInValid(final Specification<T> spec, Pageable pageable);
List<T> findInValid(final Specification<T> spec);
List<T> findInValid(final Specification<T> spec, Sort sort);
long countAllValid();
long countAllInvalid();
long countValid(final Specification<T> spec);
void setInvalid(T entity);
void setInvalid(ID... ids);
void setInvalid(Iterable<? extends T> entities);
void setValid(T entity);
void setValid(ID... ids);
void setValid(Iterable<? extends T> entities);
}