// Path: QuickProject-Core/src/main/java/chanedi/dao/complexQuery/CustomQueryParam.java
// public class CustomQueryParam implements Serializable {
// 
//     private static final long serialVersionUID = -825693104603690276L;
//     @Getter
//     protected String property;
// 
// }
// 
// Path: QuickProject-Core/src/main/java/chanedi/dao/complexQuery/Sort.java
// @Data
// public class Sort implements Serializable {
// 
//     private static final long serialVersionUID = 7026434198845897214L;
//     private String property;
//     private String tableAlias;
//     private String column;
//     private Direction direction;
// 
//     public Sort() {
//         super();
//         direction = Direction.ASC;
//     }
// 
//     public Sort(String property) {
//         this();
//         this.property = property;
//     }
// 
//     public Sort(String property, Direction direction) {
//         this();
//         this.property = property;
//         this.direction = direction;
//     }
// 
//     public static enum Direction {
//         ASC, DESC;
//     }
// 
// }
// 
// Path: QuickProject-Core/src/main/java/chanedi/model/Entity.java
// @Data
// public abstract class Entity implements Serializable {
// 
//     private static final long serialVersionUID = 4212679023438415647L;
// 
//     public abstract Object getId();
// 
//     public abstract void setId(Object id);
// 
// }


import chanedi.dao.complexQuery.CustomQueryParam;
import chanedi.dao.complexQuery.Sort;
import chanedi.model.Entity;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
package chanedi.service;



/**
 * Created by Chanedi
 */
//@Transactional(rollbackFor = { Exception.class }, readOnly = true)
public interface EntityService<T extends Entity> {

    public List<T> getAll();

    public T getById(Object id);

    public int countGet(T findParams);

    public List<T> get(T findParams);

    public List<T> get(T findParams, List<Sort> sortList, Integer start, Integer limit);

    public int countFind(T findParams);

    public List<T> find(T findParams);

    public List<T> find(T findParams, List<Sort> sortList, Integer start, Integer limit);

// Path: QuickProject-Core/src/main/java/chanedi/dao/complexQuery/CustomQueryParam.java
// public class CustomQueryParam implements Serializable {
// 
//     private static final long serialVersionUID = -825693104603690276L;
//     @Getter
//     protected String property;
// 
// }
// 
// Path: QuickProject-Core/src/main/java/chanedi/dao/complexQuery/Sort.java
// @Data
// public class Sort implements Serializable {
// 
//     private static final long serialVersionUID = 7026434198845897214L;
//     private String property;
//     private String tableAlias;
//     private String column;
//     private Direction direction;
// 
//     public Sort() {
//         super();
//         direction = Direction.ASC;
//     }
// 
//     public Sort(String property) {
//         this();
//         this.property = property;
//     }
// 
//     public Sort(String property, Direction direction) {
//         this();
//         this.property = property;
//         this.direction = direction;
//     }
// 
//     public static enum Direction {
//         ASC, DESC;
//     }
// 
// }
// 
// Path: QuickProject-Core/src/main/java/chanedi/model/Entity.java
// @Data
// public abstract class Entity implements Serializable {
// 
//     private static final long serialVersionUID = 4212679023438415647L;
// 
//     public abstract Object getId();
// 
//     public abstract void setId(Object id);
// 
// }


// Path: QuickProject-Core/src/main/java/chanedi/service/EntityService.java
import chanedi.dao.complexQuery.CustomQueryParam;
import chanedi.dao.complexQuery.Sort;
import chanedi.model.Entity;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

package chanedi.service;



/**
 * Created by Chanedi
 */
//@Transactional(rollbackFor = { Exception.class }, readOnly = true)
public interface EntityService<T extends Entity> {

    public List<T> getAll();

    public T getById(Object id);

    public int countGet(T findParams);

    public List<T> get(T findParams);

    public List<T> get(T findParams, List<Sort> sortList, Integer start, Integer limit);

    public int countFind(T findParams);

    public List<T> find(T findParams);

    public List<T> find(T findParams, List<Sort> sortList, Integer start, Integer limit);

    public int countQuery(List<CustomQueryParam> customQueryParams);