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

com.mysema.query.support.QueryBase Maven / Gradle / Ivy

There is a newer version: 3.7.4
Show newest version
/*
 * Copyright 2011, Mysema Ltd
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mysema.query.support;

import javax.annotation.Nonnegative;

import com.mysema.query.QueryModifiers;
import com.mysema.query.types.Expression;
import com.mysema.query.types.OrderSpecifier;
import com.mysema.query.types.ParamExpression;
import com.mysema.query.types.Predicate;

/**
 * QueryBase provides a stub for Query implementations
 *
 * @author tiwe
 */
public abstract class QueryBase> {

    public static final String MDC_QUERY = "querydsl.query";

    public static final String MDC_PARAMETERS = "querydsl.parameters";

    protected final QueryMixin queryMixin;

    public QueryBase(QueryMixin queryMixin) {
        this.queryMixin = queryMixin;
    }

    /**
     * Set the Query to return distinct results
     * 
     * @return
     */
    public Q distinct() {
        return queryMixin.distinct();
    }
    
    /**
     * Add a single grouping expression
     *
     * @param e
     * @return
     */
    public Q groupBy(Expression e) {
        return queryMixin.groupBy(e);
    }
    
    /**
     * Add grouping/aggregation expressions
     *
     * @param o
     * @return
     */
    public Q groupBy(Expression... o) {
        return queryMixin.groupBy(o);
    }
    
    /**
     * Add a single filter for aggregation
     *
     * @param e
     * @return
     */
    public Q having(Predicate e) {
        return queryMixin.having(e);
    }

    /**
     * Add filters for aggregation
     *
     * @param o
     * @return
     */
    public Q having(Predicate... o) {
        return queryMixin.having(o);
    }
    
    /**
     * Add a single order expression
     * 
     * @param o
     * @return
     */
    public Q orderBy(OrderSpecifier o) {
        return queryMixin.orderBy(o);
    }

    /**
     * Add order expressions
     *
     * @param o
     * @return
     */
    public Q orderBy(OrderSpecifier... o) {
        return queryMixin.orderBy(o);
    }
    
    /**
     * Add the given filter condition
     * 
     * 

Skips null arguments

* * @param o filter conditions to be added * @return */ public Q where(Predicate o) { return queryMixin.where(o); } /** * Add the given filter conditions * *

Skips null arguments

* * @param o filter conditions to be added * @return */ public Q where(Predicate... o) { return queryMixin.where(o); } /** * Defines the limit / max results for the query results * * @param limit * @return */ public Q limit(@Nonnegative long limit) { return queryMixin.limit(limit); } /** * Defines the offset for the query results * * @param offset * @return */ public Q offset(long offset) { return queryMixin.offset(offset); } /** * Defines both limit and offset of the query results * * @param modifiers * @return */ public Q restrict(QueryModifiers modifiers) { return queryMixin.restrict(modifiers); } /** * Set the given parameter to the given value * * @param

* @param param * @param value * @return */ public

Q set(ParamExpression

param, P value) { return queryMixin.set(param, value); } @Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof QueryBase) { QueryBase q = (QueryBase)o; return q.queryMixin.equals(queryMixin); } else { return false; } } @Override public int hashCode() { return queryMixin.hashCode(); } @Override public String toString() { return queryMixin.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy