ParameterUtil.java
/*
* Created on 2008/06/04
* Copyright (C) 2008 Koga Laboratory. All rights reserved.
*
*/
package org.mklab.tool.control.system;
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
import org.mklab.tool.control.system.parameter.NoSuchParameterException;
/**
* ユーザ定義システムのためのユーティリティクラスです。
*
* @author koga
* @version $Revision: 1.3 $, 2008/06/04
*/
public class ParameterUtil {
/**
* システムのパラメータの値を返します。
*
* @param klass システムを定義したクラス
* @param name パラメータの名前
* @return システムのパラメータの値
* @throws NoSuchParameterException パラメータが存在しない場合、パラメータにアクセスできない場合
*/
public static Object getValue(final Class<?> klass, final String name) throws NoSuchParameterException {
if (klass == null) throw new NullPointerException();
if (name == null) throw new NullPointerException();
try {
final Field parameter = klass.getDeclaredField(name);
parameter.setAccessible(true);
return parameter.get(null);
} catch (SecurityException e) {
throw new NoSuchParameterException(e);
} catch (NoSuchFieldException e) {
throw new NoSuchParameterException(e);
} catch (IllegalArgumentException e) {
throw new NoSuchParameterException(e);
} catch (IllegalAccessException e) {
throw new NoSuchParameterException(e);
}
}
/**
* システムパラメータの名前の集合を返します。
*
* @param klass システムを定義したクラス
* @return システムパラメータの名前集合
* @throws NoSuchParameterException パラメータにアクセスできない場合
*/
public static Set<String> getParameterNames(final Class<?> klass) throws NoSuchParameterException {
if (klass == null) throw new NullPointerException();
try {
final Set<String> parameters = new HashSet<>();
for (final Field field : klass.getDeclaredFields()) {
parameters.add(field.getName());
}
return parameters;
} catch (SecurityException e) {
throw new NoSuchParameterException(e);
} catch (IllegalArgumentException e) {
throw new NoSuchParameterException(e);
}
}
/**
* システムのパラメータの値を設定します。
*
* @param klass システムを定義したクラス
* @param name パラメータの名前
* @param value システムのパラメータの値
* @throws NoSuchParameterException パラメータが存在しない場合、パラメータにアクセスできない場合
*/
public static void setValue(final Class<?> klass, final String name, final Object value) throws NoSuchParameterException {
if (klass == null) throw new NullPointerException();
if (name == null) throw new NullPointerException();
try {
final Field parameter = klass.getDeclaredField(name);
parameter.setAccessible(true);
parameter.set(null, value);
} catch (SecurityException e) {
throw new NoSuchParameterException(e);
} catch (NoSuchFieldException e) {
throw new NoSuchParameterException(e);
} catch (IllegalArgumentException e) {
throw new NoSuchParameterException(e);
} catch (IllegalAccessException e) {
throw new NoSuchParameterException(e);
}
}
/**
* システムが指定した名前のパラメータをもつか判定します。
*
* @param klass システムを定義したクラス
* @param name パラメータの名前
* @return システムが指定した名前のパラメータをもつならばtrue、そうでなければfalse
*/
public static boolean contains(Class<?> klass, String name) {
if (klass == null) throw new NullPointerException();
if (name == null) throw new NullPointerException();
final Field[] fields = klass.getDeclaredFields();
for (final Field field : fields) {
if (name.equals(field.getName())) {
return true;
}
}
return false;
}
}