关于Java中枚举的使用

package org.tarena.dang.entity;

import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;

/**

 * 排序规则的灵活切换_此代码是我最近就一个学习项目时候用到感觉特好,就这样简短的一个枚举无须修改

*dao,service,只需要在Action或者界面层传入一个int数据给BookListSortRule setRule(int order)就可以实现

*多个排序规则的使用很在程序提高了代码的复用性。

* @author zhouzhengde

 *
 */
public enum BookListSortRule {

    DangPrice_ASC(Property.forName("dangPrice").asc()),
    DangPrice_DESC(Property.forName("dangPrice").desc()),
    PublishTime_ASC(Property.forName("publishTime").asc()),
    PublishTime_DESC(Property.forName("publishTime").desc()),
    AddTime_ASC(Property.forName("addTime").asc()),
    AddTime_DESC(Property.forName("addTime").desc()),
    NoneRule(Property.forName("id").asc());

    private Order order;

    private BookListSortRule(Order order) {
    this.order = order;
    }

    public Order getOrder() {
    return order;
    }

    private static Integer rule = new Integer(0);
    private static Boolean isasc = new Boolean(false);

    public static BookListSortRule setRule(int order) {
    initialOrder(order);
    if (rule == 1) {
        if (isasc)
        return DangPrice_ASC;
        return DangPrice_DESC;
    } else if (rule == 2) {
        if (isasc)
        return PublishTime_ASC;
        return PublishTime_DESC;
    } else if (rule == 3) {
        if (isasc)
        return AddTime_ASC;
        return AddTime_DESC;
    } else {
        return NoneRule;
    }
    }

    private static void initialOrder(int order) {
    rule = order / 10;
    if (order % 10 == 1)
        isasc = true;
    }

}

你可能感兴趣的:(枚举的应用)