From 1b996ac057c60aebefe2e6308bbd13e5ca6237b9 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Tue, 3 Sep 2024 17:23:59 +0900 Subject: [PATCH] =?UTF-8?q?Property=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/foundation/data/Property.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/main/java/cokr/xit/foundation/data/Property.java diff --git a/src/main/java/cokr/xit/foundation/data/Property.java b/src/main/java/cokr/xit/foundation/data/Property.java new file mode 100644 index 0000000..13cb485 --- /dev/null +++ b/src/main/java/cokr/xit/foundation/data/Property.java @@ -0,0 +1,113 @@ +package cokr.xit.foundation.data; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.beanutils.PropertyUtils; + +import cokr.xit.foundation.AbstractComponent; + +/**프로퍼티 지원 유틸리티 + * @author mjkhan + */ +public class Property extends AbstractComponent { + private static Property instance; + + private static Property get() { + if (instance == null) + instance = new Property(); + return instance; + } + + /**객체에서 지정하는 프로퍼티 값을 읽을 수 있는지 반환한다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체에서 지정하는 프로퍼티 값을 읽을 수 있는지 여부 + */ + public static boolean readable(Object obj, String name) { + return get().isReadable(obj, name); + } + + /**객체에 지정하는 프로퍼티 값을 쓸 수 있는지 반환한다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체에 지정하는 프로퍼티 값을 쓸 수 있는지 여부 + */ + public static boolean writeable(Object obj, String name) { + return get().isWritable(obj, name); + } + + /**객체에서 지정하는 프로퍼티 값을 읽는다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체의 프로퍼티 값 + */ + public static String read(Object obj, String name) { + return get().get(obj, name); + } + + /**객체에 지정하는 프로퍼티 값을 쓴다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @param val 프로퍼티 값 + */ + public static void write(Object obj, String name, Object val) { + get().set(obj, name, val); + } + + /**객체에 지정하는 프로퍼티 값을 읽을 수 있는지 반환한다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체에서 지정하는 프로퍼티 값을 읽을 수 있는지 여부 + */ + public boolean isReadable(Object obj, String name) { + if (isEmpty(obj)) + return false; + + try { + return PropertyUtils.isReadable(obj, name); + } catch (Exception e) { + return false; + } + } + + /**객체에 지정하는 프로퍼티 값을 쓸 수 있는지 반환한다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체에 지정하는 프로퍼티 값을 쓸 수 있는지 여부 + */ + public boolean isWritable(Object obj, String name) { + if (isEmpty(obj)) + return false; + + try { + return PropertyUtils.isWriteable(obj, name); + } catch (Exception e) { + return false; + } + } + + /**객체에서 지정하는 프로퍼티 값을 읽는다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @return 객체의 프로퍼티 값 + */ + public String get(Object obj, String name) { + try { + return BeanUtils.getProperty(obj, name); + } catch (Exception e) { + throw runtimeException(e); + } + } + + /**객체에 지정하는 프로퍼티 값을 쓴다. + * @param obj 객체 + * @param name 프로퍼티 이름 + * @param val 프로퍼티 값 + */ + public void set(Object obj, String name, Object val) { + try { + BeanUtils.setProperty(obj, name, val); + } catch (Exception e) { + throw runtimeException(e); + } + } +} \ No newline at end of file