⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.java

📁 一个Java持久层类库
💻 JAVA
字号:
package ActiveObject.core;import ActiveObject.vo.Command;import ActiveObject.vo.CompareReference;import ActiveObject.vo.CompareValue;import ActiveObject.vo.TableType;import ActiveObject.exception.*;import java.util.*;/** *  @author tanjiazhang */public class Filter {    private int limitStart = -1;    private int limitLength = -1;        //表名-别称 映射    private List<TableType> tables = new ArrayList<TableType>();    /**     * 用于字段与值的比较     */    private Map<String, CompareValue> valueFilters = new HashMap<String, CompareValue>();    /**     * 用于字段与字段的比较     */    private Map<String, CompareReference> referenceFilters = new HashMap<String, CompareReference>();    private Map<String, Order> orders = new HashMap<String, Order>();    public Filter (Class objectType) {        this.tables.add(new TableType(objectType));    }        public Filter (Class objectType, String nickName) {        this.tables.add(new TableType(objectType, nickName));    }    public Filter (ActiveRecord record) {    }    public Filter join(Class objectType, String nickName) throws TableAliasDuplicateException{        for(TableType item : this.tables)        {            if(item.getNickName().equals(nickName))                throw new TableAliasDuplicateException();        }        this.tables.add(new TableType(objectType, nickName));        return this;    }        public Filter join(Class objectType) throws TableAliasDuplicateException{        return join(objectType, objectType.getSimpleName());    }    //    Class getMainObject()//    {//        return this.tables.get(0).getObjectType();//    }        /**     *  添加过滤条件     *       @param field     *       @param value     *       @return     *///    public Filter addEqualValue (String field, Object value) {//        valueFilters.put(field, new CompareValue("=", value));//        return this;//    }//    public Filter addEqualReference (String field, String reference) throws ReferenceFormatNotValid{//是否有必要对参数进行检查?待定//        if(!referenceFilters.keySet().contains(field.substring(0, field.indexOf("."))))//            throw new ReferenceFormatNotValid();//        referenceFilters.put(field, new CompareReference("=", reference));//        return this;//    }//    public Filter addLargerValue (String field, Object value) {//        valueFilters.put(field, new CompareValue(">", value));//        return this;//    }//    public Filter addLargerReference (String field, String reference) {//        referenceFilters.put(field, new CompareReference(">", reference));//        return this;//    }////    public Filter addSmallerValue (String field, Object value) {//        valueFilters.put(field, new CompareValue("<", value));//        return this;//    }//    public Filter addSmallerReference (String field, String reference) {//        referenceFilters.put(field, new CompareReference("<", reference));//        return this;//    }////    public Filter addLikeValue (String field, Object value) {//        valueFilters.put(field, new CompareValue(" like ", value));//        return this;//    }//    public Filter addLikeReference (String field, String reference) {//        referenceFilters.put(field, new CompareReference(" like ", reference));//        return this;//    }    /**     *  添加排序条件     *       @param field     *       @param sortOrder     *       @return     */    public Filter addOrder (String field, Order sortOrder) {        this.orders.put(field, sortOrder);        return this;    }    public Command createQueryCommand () {        StringBuffer buf = new StringBuffer(200);        buf.append("select * from ");        int tableCount = this.tables.size();        for(int i=0;i<tableCount;i++)        {            TableType table = this.tables.get(i);            buf.append(table.getObjectType().getSimpleName());            if(table.getNickName() != null)            {                buf.append(" as ");                buf.append(table.getNickName());            }            if(i == tableCount-1)                buf.append(" ");            else                buf.append(",");        }        int totalFilterCount = this.valueFilters.size() + this.referenceFilters.size();        List params = new ArrayList();                //添加过滤条件        if(totalFilterCount > 0)        {            buf.append(" where ");            for(String key : this.valueFilters.keySet())            {                CompareValue value = this.valueFilters.get(key);                buf.append(key);                buf.append(value.getCompare());                buf.append("?,");                params.add(value.getValue());            }            buf.replace(buf.length()-1, buf.length(), "");        }                //添加排序控制        if(this.orders.size() > 0)        {            buf.append(" order by ");            int size = this.orders.size();            int index = 1;            for(String key : this.orders.keySet())            {                buf.append(key);                if(this.orders.get(key) == Order.DESC)                    buf.append(" DESC ");                else                    buf.append(" ASC ");                if(index < size)                    buf.append(",");                index++;            }        }                //添加记录个数限制        if(this.limitLength > -1)        {            buf.append(" limit ");            if(this.limitStart > -1)            {                buf.append(this.limitStart);                buf.append(",");            }            buf.append(this.limitLength);        }                return new Command(buf.toString(), params.toArray());    }//    protected Command createUpdateCommand (Value fields, Class objectType) {//        StringBuffer buf = new StringBuffer(200);//        buf.append("update ");//        buf.append(objectType.getSimpleName());//        buf.append(" set ");//        int totalFilterCount = this.valueFilters.size() + this.referenceFilters.size();//        List params = new ArrayList();//        //        //添加set语句的内容//        for(String item : fields.getColumns())//        {//            buf.append(item);//            buf.append("=?,");//            params.add(fields.getColumnValue(item));//        }//        buf.replace(buf.length()-1, buf.length(), "");//        //        //添加过滤条件//        if(totalFilterCount == 0)//        {//            buf.append(" where ");//            for(String key : this.valueFilters.keySet())//            {//                CompareValue value = this.valueFilters.get(key);//                buf.append(key);//                buf.append(value.getCompare());//                buf.append("?,");//                params.add(value.getValue());//            }//            buf.replace(buf.length()-1, buf.length(), "");//        }//        //        //添加排序控制//        if(this.orders.size() > 0)//        {//            buf.append(" order by ");//            int size = this.orders.size();//            int index = 1;//            for(String key : this.orders.keySet())//            {//                buf.append(key);//                if(this.orders.get(key) == Order.DESC)//                    buf.append(" DESC ");//                else//                    buf.append(" ASC ");//                if(index < size)//                    buf.append(",");//                index++;//            }//        }//        //        //添加记录个数限制//        if(this.limitLength > -1)//        {//            buf.append(" limit ");//            if(this.limitStart > -1)//            {//                buf.append(this.limitStart);//                buf.append(",");//            }//            buf.append(this.limitLength);//        }//        return new Command(buf.toString(), params.toArray());//    }        public Command createDeleteCommand () {        StringBuffer buf = new StringBuffer(200);        buf.append("delete ");        int tableCount = this.tables.size();        if(tableCount > 1)        {            for(int i=0;i<tableCount;i++)            {                buf.append(tables.get(i).getNickName());                if(i == tableCount-1)                    buf.append(" ");                else                    buf.append(",");            }        }        buf.append("from ");        for(int i=0;i<tableCount;i++)        {            TableType table = this.tables.get(i);            buf.append(table.getObjectType().getSimpleName());            if(table.getNickName() != null)            {                buf.append(" as ");                buf.append(table.getNickName());            }            if(i == tableCount-1)                buf.append(" ");            else                buf.append(",");        }        int totalFilterCount = this.valueFilters.size() + this.referenceFilters.size();        List params = new ArrayList();                //添加过滤条件        if(totalFilterCount > 0)        {            buf.append(" where ");            for(String key : this.valueFilters.keySet())            {                CompareValue value = this.valueFilters.get(key);                buf.append(key);                buf.append(value.getCompare());                buf.append("?,");                params.add(value.getValue());            }            buf.replace(buf.length()-1, buf.length(), "");        }                if(tableCount == 1)        {            //添加排序控制            if(this.orders.size() > 0)            {                buf.append(" order by ");                int size = this.orders.size();                int index = 1;                for(String key : this.orders.keySet())                {                    buf.append(key);                    if(this.orders.get(key) == Order.DESC)                        buf.append(" DESC ");                    else                        buf.append(" ASC ");                    if(index < size)                        buf.append(",");                    index++;                }            }            //添加记录个数限制            if(this.limitLength > -1)            {                buf.append(" limit ");                if(this.limitStart > -1)                {                    buf.append(this.limitStart);                    buf.append(",");                }                buf.append(this.limitLength);            }        }                return new Command(buf.toString(), params.toArray());    }    /**     *  设置记录个数     *  @param length     */    public Filter setLength (int length) {        this.limitLength = length;        return this;    }        /**     * 设置记录范围     * @param start 开始位置     * @param length 记录个数     * @return     */    public Filter setRange (int start, int length) {        this.limitStart = start;        this.limitLength = length;        return this;    }    /**     *  添加过滤和排序条件     *       @param field     *       @param value     *       @param sortOrder     *       @return     */    private Filter add (String field, Object value, Order sortOrder) {        return null;    }    public List<TableType> getTables() {        return tables;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -