枚举类型一般属性的值为常量,不可动态的变化。
由于系统需要,配置信息是写在数量库中的,在加载系统时,需要读入配置信息去填充枚举类型属性。
故想出这种办法,共享之。
/*************************************************
Copyright (C), 2008-2009, Sunsoft Team Tech. Co., Ltd.
File name: TradeState.java
Author: sunbeam Version: 1.0 Date: 2008-11-5
Description:
Others:
Function List:
History:
*************************************************/
package com.sztelecom.vbao.enumer;
import com.sztelecom.vbao.exception.ServiceException;
import com.sztelecom.vbao.service.CommonParmeterService;
/**
* 交易状态
* @author sunbeam
* @version 1.0
* @Date 2008-11-5
*/
public enum TradeState {
WAIT_PAY("TRADE_STATE_WAIT_PAY"), // 等待付款
HAS_CREATED("TRADE_STATE_HAS_CREATED"), // 交易已创建
WAIT_SEND_GOODS("TRADE_STATE_WAIT_SEND_GOODS"), // 等待卖家发货
WAIT_CFM_GOODS("TRADE_STATE_WAIT_CFM_GOODS"), // 等待买家确认收货
FINISHED("TRADE_STATE_FINISHED"), // 交易已完成
CLOSED("TRADE_STATE_CLOSED"), // 交易已关闭
WAIT_DEAL_REFUND("TRADE_STATE_WAIT_DEAL_REFUND");// 等待处理退款
private String status;
static String wait_pay;
static String has_created;
static String wait_send_goods;
static String wait_cfm_goods;
static String finished;
static String closed;
static String wait_deal_refund;
private TradeState(String status) {
this.status = status;
}
public void init(CommonParmeterService cps) throws ServiceException {
if (wait_pay == null)
wait_pay = cps.queryTradeState(WAIT_PAY.getStatus());
if (has_created == null)
has_created = cps.queryTradeState(HAS_CREATED.getStatus());
if (wait_send_goods == null)
wait_send_goods = cps.queryTradeState(WAIT_SEND_GOODS.getStatus());
if (wait_cfm_goods == null)
wait_cfm_goods = cps.queryTradeState(WAIT_CFM_GOODS.getStatus());
if (finished == null)
finished = cps.queryTradeState(FINISHED.getStatus());
if (closed == null)
closed = cps.queryTradeState(CLOSED.getStatus());
if (wait_deal_refund == null)
wait_deal_refund = cps.queryTradeState(WAIT_DEAL_REFUND.getStatus());
}
public String toString() {
super.toString();
switch (this) {
case WAIT_PAY:
return wait_pay;
case HAS_CREATED:
return has_created;
case WAIT_SEND_GOODS:
return wait_send_goods;
case WAIT_CFM_GOODS:
return wait_cfm_goods;
case FINISHED:
return finished;
case CLOSED:
return closed;
case WAIT_DEAL_REFUND:
return wait_deal_refund;
default:
return "";
}
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}