/*
* Copyright 2008 Udai Gupta, Ralf Joachim
*
* 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 org.castor.cpa.query;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
/**
* Interface for Select Query of query objects.
*
* @author <a href="mailto:mailtoud AT gmail DOT com">Udai Gupta</a>
* @author <a href="mailto:ralf DOT joachim AT syscon DOT eu">Ralf Joachim</a>
* @version $Revision: 7121 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
* @since 1.3
*/
public interface SelectQuery extends QueryObject {
//--------------------------------------------------------------------------
/**
* Factory method to create new Schema.
*
* @param schema the schema
* @param identifier the identifier
*
* @return the schema
*/
Schema newSchema(String schema, String identifier);
/**
* Factory method to create new Schema.
*
* @param schema the schema
* @param identifier the identifier
*
* @return the schema
*/
Schema newSchema(Class < ? > schema, String identifier);
/**
* Factory method to create new Parameter.
*
* @param position the <b>int</b>
*
* @return the parameter
*/
Parameter newParameter(int position);
/**
* New parameter.
*
* @param name the name
*
* @return the parameter
*/
Parameter newParameter(String name);
/**
* New boolean.
*
* @param value the value
*
* @return the literal
*/
Literal newBoolean(boolean value);
/**
* New numeric.
*
* @param value the value
*
* @return the literal
*/
Literal newNumeric(long value);
/**
* New numeric.
*
* @param value the value
*
* @return the literal
*/
Literal newNumeric(double value);
/**
* New numeric.
*
* @param value the value
*
* @return the literal
*/
Literal newNumeric(BigDecimal value);
/**
* New string.
*
* @param value the value
*
* @return the literal
*/
Literal newString(String value);
/**
* New enum.
*
* @param identifier the identifier
*
* @return the literal
*/
Literal newEnum(Enum < ? > identifier);
/**
* New order.
*
* @param field the field
*
* @return the order
*/
Order newOrder(Field field);
/**
* New order.
*
* @param field the field
* @param direction the direction
*
* @return the order
*/
Order newOrder(Field field, OrderDirection direction);
/**
* New temporal.
*
* @param temporalType the temporal type
*
* @return the expression
*/
Expression newTemporal(TemporalType temporalType);
/**
* New temporal.
*
* @param temporalType the temporal type
* @param value the value
*
* @return the expression
*/
Expression newTemporal(TemporalType temporalType, Date value);
/**
* New temporal.
*
* @param temporalType the temporal type
* @param value the value
*
* @return the expression
*/
Expression newTemporal(TemporalType temporalType, Calendar value);
/**
* Sets the distinct.
*
* @param distinct the new distinct
*/
void setDistinct(boolean distinct);
/**
* Adds the projection.
*
* @param field the field
*/
void addProjection(Field field);
/**
* Adds the schema.
*
* @param schema the schema
*/
void addSchema(Schema schema);
/**
* Sets the where.
*
* @param condition the new where
*/
void setWhere(Condition condition);
/**
* Sets the order.
*
* @param order the new order
*/
void setOrder(Order order);
/**
* Sets the limit.
*
* @param limit the new limit
*/
void setLimit(int limit);
/**
* Sets the limit.
*
* @param limit the new limit
*/
void setLimit(Parameter limit);
/**
* Sets the limit.
*
* @param limit the limit
* @param offset the offset
*/
void setLimit(int limit, int offset);
/**
* Sets the limit.
*
* @param limit the limit
* @param offset the offset
*/
void setLimit(Parameter limit, Parameter offset);
//--------------------------------------------------------------------------
}