/** * 版本修订记录 * 创建:2012-12-17 * 版本: * * 修订1: 说明: * 修订2: 说明: */ package org.howsun.dao; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; /** * 描述: * @author howsun * @version 3.0 * Building Time 2012-12-17 * */ public abstract class GeneralSeeker implements Seeker { private static final long serialVersionUID = 1L; static{ ORDER_TYPE.put(false, "倒排序"); ORDER_TYPE.put(true, "正排序"); } ///////////////////////Order by//////////////// protected String orderField; protected boolean isAsc = false; private OrderBean orderBean; protected boolean conditioned = false; ///////////////////////////////////////////////////Building Query//////////////////////////////////////////////////////// /* (non-Javadoc) * @see org.howsun.dao.Seeker#buildQuery() */ @Override public Query buildQuery(){ Criteria criteria = buildCriteria(); return criteria == null ? new Query() : Query.query(criteria); } @Override public abstract Criteria buildCriteria(); @Override public abstract RQLConditionbind buildRQL() ; ///////////////////////////////////////////////////Building Order//////////////////////////////////////////////////////// /* (non-Javadoc) * @see org.howsun.dao.Seeker#addOrderBean(java.lang.String, boolean, boolean) */ @Override public OrderBean addOrderBean(String addField, boolean isAsc, boolean isReplace){ if(orderField == null && addField == null){ return null; } if(isReplace){ getOrderBean().clear(); getOrderBean().add(addField, isAsc); } else if(orderField != null){ getOrderBean().add(orderField, isAsc).add(addField, isAsc); } return getOrderBean(); } /* (non-Javadoc) * @see org.howsun.dao.Seeker#getOrderBean() */ @Override public OrderBean getOrderBean() { if(this.orderBean == null && this.orderField != null){ this.orderBean = new OrderBean(orderField, isAsc); } return orderBean; } public String getOrderField() { return orderField; } public void setOrderField(String orderField) { this.orderField = orderField; } public boolean isAsc() { return isAsc; } public void setAsc(boolean isAsc) { this.isAsc = isAsc; } public void setOrderBean(OrderBean orderBean) { this.orderBean = orderBean; } public boolean hasConditioned(){ return this.conditioned; } public void setConditioned(boolean conditioned) { this.conditioned = conditioned; } public static void removeStartCharSequence(StringBuilder rql, String str){ if(rql.indexOf(str) == 0){ rql.delete(0, str.length()); } } public static void removeEndCharSequence(StringBuilder rql, String str){ int ol = rql.length(); if(ol > 0){ int l = str.length(); if(rql.indexOf(str) == (ol - l)){ rql.delete(ol - l, ol - 1); } } } }