package jef.database.query;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import jef.database.Condition;
import jef.database.Field;
/**
* 可以作为连接元素的查询对象 (PlainSelect)
* @author Administrator
* @Date 2011-6-16
* @see Query
* @see Join
*/
public interface JoinElement extends ConditionQuery{
/**
* 获取现有全部条件
* @return 查询请求中的全部条件。
*/
List<Condition> getConditions();
/**
* 返回查询请求中的Select项,平台拼SQL语句时需要用到。
* @return 查询请求中的所有Select项
*/
EntityMappingProvider getSelectItems();
/**
* 设置平查询请求中的Select项。
* @param select 选择项
*/
void setSelectItems(Selects select);
/**
* 清除全部的请求数据
*/
void clearQuery();
/**
* 获取现有排序字段
*
* @return
*/
Collection<OrderField> getOrderBy();
/**
* 设置排序
* @param asc true is ASC, false is DESC
* @param orderby 要排序的Field对象
*/
void setOrderBy(boolean asc,Field... orderby);
/**
* 添加排序
* @param asc true is ASC, false is DESC
* @param orderby 要排序的field对象。
*/
void addOrderBy(boolean asc,Field... orderby);
/**
* 添加排序 , 正序字段<br>
* 等效于调用 {@link #addOrderBy(boolean, Field...)}且第一个参数为true。
* @param ascFields 要正序的字段
* @return 当前Query对象本身
*/
JoinElement orderByAsc(Field... ascFields);
/**
* 添加排序, 倒序字段<br>
* 等效于调用 {@link #addOrderBy(boolean, Field...)}且第一个参数为false。
* @param descFields 要倒序的字段
* @return 当前Query对象本身
*/
JoinElement orderByDesc(Field... descFields);
/**
* 设置属性
* 属性一般有以下作用:
* <li>用于填充表达式条件</li>
* <li>用于填充Join过滤条件</li>
* @param key
* @param value
*/
void setAttribute(String key,Object value);
/**
* 获取属性
* @param key 属性名
* @return
*/
Object getAttribute(String key);
/**
* 得到所有属性
* @return 所有属性
*/
Map<String,Object> getAttributes();
}