0d2cea5ed323eb6dac2afc0745d32023f3327947
[platform/upstream/iotivity.git] / service / simulator / java / sdk / src / org / oic / simulator / AttributeValueVisitor.java
1 package org.oic.simulator;
2
3 public class AttributeValueVisitor {
4     private AttributeValue  mValue;
5     private VisitingMethods mListener;
6
7     public interface VisitingMethods<T extends Object> {
8         public T visitingValue(Integer value);
9
10         public T visitingValue(Double value);
11
12         public T visitingValue(Boolean value);
13
14         public T visitingValue(String value);
15
16         public T visitingValue(SimulatorResourceModel value);
17
18         public T visitingValue(Integer[] value);
19
20         public T visitingValue(Double[] value);
21
22         public T visitingValue(Boolean[] value);
23
24         public T visitingValue(String[] value);
25
26         public T visitingValue(SimulatorResourceModel[] value);
27
28         public T visitingValue(Integer[][] value);
29
30         public T visitingValue(Double[][] value);
31
32         public T visitingValue(Boolean[][] value);
33
34         public T visitingValue(String[][] value);
35
36         public T visitingValue(SimulatorResourceModel[][] value);
37
38         public T visitingValue(Integer[][][] value);
39
40         public T visitingValue(Double[][][] value);
41
42         public T visitingValue(Boolean[][][] value);
43
44         public T visitingValue(String[][][] value);
45
46         public T visitingValue(SimulatorResourceModel[][][] value);
47     }
48
49     public AttributeValueVisitor(AttributeValue value, VisitingMethods listener) {
50         mValue = value;
51         mListener = listener;
52     }
53
54     public Object visit() {
55         if (null == mValue || null == mListener)
56             return null;
57
58         AttributeValue.TypeInfo typeInfo = mValue.typeInfo();
59         if (AttributeValue.ValueType.INTEGER == typeInfo.mBaseType) {
60             if (AttributeValue.ValueType.INTEGER == typeInfo.mType)
61                 return mListener.visitingValue((Integer) mValue.get());
62             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
63                 if (1 == typeInfo.mDepth)
64                     return mListener.visitingValue((Integer[]) mValue.get());
65                 if (2 == typeInfo.mDepth)
66                     return mListener.visitingValue((Integer[][]) mValue.get());
67                 if (3 == typeInfo.mDepth)
68                     return mListener
69                             .visitingValue((Integer[][][]) mValue.get());
70             }
71         } else if (AttributeValue.ValueType.DOUBLE == typeInfo.mBaseType) {
72             if (AttributeValue.ValueType.DOUBLE == typeInfo.mType)
73                 return mListener.visitingValue((Double) mValue.get());
74             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
75                 if (1 == typeInfo.mDepth)
76                     return mListener.visitingValue((Double[]) mValue.get());
77                 if (2 == typeInfo.mDepth)
78                     return mListener.visitingValue((Double[][]) mValue.get());
79                 if (3 == typeInfo.mDepth)
80                     return mListener.visitingValue((Double[][][]) mValue.get());
81             }
82         } else if (AttributeValue.ValueType.BOOLEAN == typeInfo.mBaseType) {
83             if (AttributeValue.ValueType.BOOLEAN == typeInfo.mType)
84                 return mListener.visitingValue((Boolean) mValue.get());
85             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
86                 if (1 == typeInfo.mDepth)
87                     return mListener.visitingValue((Boolean[]) mValue.get());
88                 if (2 == typeInfo.mDepth)
89                     return mListener.visitingValue((Boolean[][]) mValue.get());
90                 if (3 == typeInfo.mDepth)
91                     return mListener
92                             .visitingValue((Boolean[][][]) mValue.get());
93             }
94         } else if (AttributeValue.ValueType.STRING == typeInfo.mBaseType) {
95             if (AttributeValue.ValueType.STRING == typeInfo.mType)
96                 return mListener.visitingValue((String) mValue.get());
97             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
98                 if (1 == typeInfo.mDepth)
99                     return mListener.visitingValue((String[]) mValue.get());
100                 if (2 == typeInfo.mDepth)
101                     return mListener.visitingValue((String[][]) mValue.get());
102                 if (3 == typeInfo.mDepth)
103                     return mListener.visitingValue((String[][][]) mValue.get());
104             }
105         } else if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mBaseType) {
106             if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mType)
107                 return mListener.visitingValue((SimulatorResourceModel) mValue
108                         .get());
109             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
110                 if (1 == typeInfo.mDepth)
111                     return mListener
112                             .visitingValue((SimulatorResourceModel[]) mValue
113                                     .get());
114                 if (2 == typeInfo.mDepth)
115                     return mListener
116                             .visitingValue((SimulatorResourceModel[][]) mValue
117                                     .get());
118                 if (3 == typeInfo.mDepth)
119                     return mListener
120                             .visitingValue((SimulatorResourceModel[][][]) mValue
121                                     .get());
122             }
123         }
124
125         return null;
126     }
127 }