1 /* $Id: EnumAlias.java 414 2011-07-28 23:05:16Z dobashi $ */
\r
2 package com.lavans.luz2.util;
\r
4 import java.lang.reflect.Field;
\r
5 import java.lang.reflect.Method;
\r
6 import java.util.List;
\r
8 import javax.xml.xpath.XPathExpressionException;
\r
10 import org.apache.commons.logging.Log;
\r
11 import org.apache.commons.logging.LogFactory;
\r
12 import org.w3c.dom.Element;
\r
17 * luz.xmlに定義した別名(エイリアス)から、enumクラスを取得する。
\r
18 * IEnumインターフェースだけではstaticメソッドが呼び出せないのが、
\r
19 * このクラスを利用すれば実際の型がわからなくてもstaticメソッドにアクセスできる。
\r
21 * デプロイするシステムに応じて利用するEnumが変わる場合等、
\r
22 * Enumの型をハードコーディングしたくない時に使用する。
\r
27 public class EnumAlias{
\r
29 private static Log logger = LogFactory.getLog(EnumAlias.class);
\r
32 private final Class<? extends IEnum> clazz;
\r
34 private boolean isList;
\r
37 * 任意プロフィールのEnumクラスを返す。
\r
43 @SuppressWarnings("unchecked")
\r
44 public static EnumAlias getEnum(String aliasName){
\r
45 EnumAlias alias = null;
\r
47 Config config = Config.getInstance();
\r
48 String className="";
\r
49 boolean isList=false;;
\r
51 className = config.getNodeValue("/luz/enum_alias/"+aliasName);
\r
52 Element ele = (Element)config.getNode("/luz/enum_alias/"+aliasName);
\r
53 isList = Boolean.parseBoolean(ele.getAttribute("list"));
\r
54 } catch (XPathExpressionException e1) {
\r
56 if(className.equals("")){
\r
61 Class<? extends IEnum> clazz = (Class<? extends IEnum>)Class.forName(className);
\r
62 alias = new EnumAlias(clazz);
\r
63 alias.isList=isList;
\r
64 } catch (ClassNotFoundException e) {
\r
74 public EnumAlias(Class<? extends IEnum> clazz){
\r
82 public String getEnumTitle(){
\r
85 Field field = clazz.getField("_TITLE");
\r
86 result = field.get(null).toString();
\r
87 } catch (Exception e) {
\r
94 * IDがカンマ区切りの場合は一覧で返す。
\r
97 public String getTitle(String idStr){
\r
98 StringBuffer result = new StringBuffer();
\r
99 String[] ids = idStr.split(",");
\r
100 for (String id : ids) {
\r
102 Method method = clazz.getMethod("getTitle", new Class<?>[]{String.class});
\r
103 result.append(" "+method.invoke(null, new Object[]{id}));
\r
104 } catch (Exception e) {
\r
105 logger.debug("",e);
\r
108 return result.substring(1);
\r
115 @SuppressWarnings("unchecked")
\r
116 public List<? extends IEnum> getAllList(){
\r
117 List<? extends IEnum> list = null;
\r
119 Method method = clazz.getMethod("getAllList", (Class<?>[])null);
\r
120 list = (List<? extends IEnum>)method.invoke(null, (Object[])null);
\r
121 } catch (Exception e) {
\r
122 logger.debug("",e);
\r
127 public boolean isList() {
\r
131 public void setList(boolean isList) {
\r
132 this.isList = isList;
\r