All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.cassite.daf4j.stream.QueryStreamBase Maven / Gradle / Ivy

package net.cassite.daf4j.stream;

import net.cassite.daf4j.*;

/**
 * Stream式查询基类
 *
 * @param  实体类型
 * @param  QueryStream类型
 */
public abstract class QueryStreamBase> {
        final E entity;
        final DataAccess dataAccess;
        AndOr andOr;
        QueryParameter parameter;

        protected QueryStreamBase(E entity, DataAccess dataAccess) {
                this.entity = entity;
                this.dataAccess = dataAccess;
        }

        @SuppressWarnings("unchecked")
        public T filter(AndOr andOr) {
                if (this.andOr == null) {
                        this.andOr = andOr;
                } else {
                        if (andOr instanceof And) {
                                this.andOr.and((And) andOr);
                        } else if (andOr instanceof Or) {
                                this.andOr.and((Or) andOr);
                        } else if (andOr instanceof Condition) {
                                this.andOr.and((Condition) andOr);
                        } else if (andOr instanceof ExpressionBoolean) {
                                this.andOr.and((ExpressionBoolean) andOr);
                        }
                }
                return (T) this;
        }

        @SuppressWarnings("unchecked")
        public T sorted() {
                if (entity instanceof SortedEntity) {
                        sorted(((SortedEntity) entity).sorted());
                } else {
                        throw new UnsupportedOperationException("Entity is not a SortedEntity");
                }
                return (T) this;
        }

        @SuppressWarnings("unchecked")
        public T sorted(OrderBase... order) {
                if (parameter == null) {
                        parameter = new QueryParameter();
                }
                parameter.orderBy(order);
                return (T) this;
        }

        @SuppressWarnings("unchecked")
        public T limit(int count) {
                if (parameter == null) {
                        parameter = new QueryParameter();
                }
                parameter.top(count);
                return (T) this;
        }

        @SuppressWarnings("unchecked")
        public T limit(int start, int end) {
                if (parameter == null) {
                        parameter = new QueryParameter();
                }
                parameter.limit(start, end);
                return (T) this;
        }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy