OSDN Git Service

srcディレクトリとdocディレクトリを作成
[xdf/git-repos.git] / src / xdf-swing / src / main / java / jp / ac / aiit / xdf / component / swing / attribute / AttributeProcessingUnit.java
1 package jp.ac.aiit.xdf.component.swing.attribute;
2
3 import jp.ac.aiit.xdf.core.typeconvert.TypeConverter;
4
5 /**
6  * 実コンポーネントに対する属性の処理方法(型変換、設定、取得)の組み合わせを保持するクラス
7  * 
8  * @author Shunichi Takagi
9  */
10 public class AttributeProcessingUnit {
11         private AttributeGetProcessor attributeGetProcessor;
12         private AttributeSetProcessor attributeSetProcessor;
13         private TypeConverter<?> typeConverter;
14         
15         /**
16          * 実コンポーネントに対する属性の処理方法
17          * @param attributeProcessor 設定プロセサー
18          * @param typeConverter 型変換
19          */
20         public AttributeProcessingUnit(AttributeProcessor attributeProcessor, TypeConverter<?> typeConverter) {
21                 this(attributeProcessor, attributeProcessor, typeConverter);
22         }
23         
24         /**
25          * 実コンポーネントに対する属性の処理方法
26          * @param attributeSetProcessor 設定プロセサー
27          * @param attributeGetProcessor 取得プロセサー
28          * @param typeConverter 型変換
29          */
30         public AttributeProcessingUnit(AttributeSetProcessor attributeSetProcessor, AttributeGetProcessor attributeGetProcessor, TypeConverter<?> typeConverter) {
31                 this.attributeSetProcessor = attributeSetProcessor;
32                 this.attributeGetProcessor = attributeGetProcessor;
33                 this.typeConverter = typeConverter;
34         }
35         
36         /**
37          * 設定プロセサーの処理
38          * @param target
39          * @param name
40          * @param value 
41          */
42         public void invokeSet(Object target, String name, Object value) {
43                 attributeSetProcessor.invokeSet(target, name, value);
44         }
45         
46         /**
47          * 取得プロセサーの処理
48          * @param target
49          * @param name
50          * @return 取得した値
51          */
52         public Object invokeGet(Object target, String name) {
53                 return attributeGetProcessor.invokeGet(target, name);
54         }
55         
56         /**
57          * 型変換の処理
58          * @param value
59          * @return 変換後値
60          */
61         public Object typeConvert(String value) {
62                 if( typeConverter.isAppliable(value) ) {
63                         return typeConverter.apply(value);
64                 }
65                 return null;
66         }
67 }