28fc0fb10fd5af6a77980a92410aa57b3f06b85b
[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.visitingValue((Integer[][][]) mValue.get());
69             }
70         } else if (AttributeValue.ValueType.DOUBLE == typeInfo.mBaseType) {
71             if (AttributeValue.ValueType.DOUBLE == typeInfo.mType)
72                 return mListener.visitingValue((Double) mValue.get());
73             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
74                 if (1 == typeInfo.mDepth)
75                     return mListener.visitingValue((Double[]) mValue.get());
76                 if (2 == typeInfo.mDepth)
77                     return mListener.visitingValue((Double[][]) mValue.get());
78                 if (3 == typeInfo.mDepth)
79                     return mListener.visitingValue((Double[][][]) mValue.get());
80             }
81         } else if (AttributeValue.ValueType.BOOLEAN == typeInfo.mBaseType) {
82             if (AttributeValue.ValueType.BOOLEAN == typeInfo.mType)
83                 return mListener.visitingValue((Boolean) mValue.get());
84             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
85                 if (1 == typeInfo.mDepth)
86                     return mListener.visitingValue((Boolean[]) mValue.get());
87                 if (2 == typeInfo.mDepth)
88                     return mListener.visitingValue((Boolean[][]) mValue.get());
89                 if (3 == typeInfo.mDepth)
90                     return mListener.visitingValue((Boolean[][][]) mValue.get());
91             }
92         } else if (AttributeValue.ValueType.STRING == typeInfo.mBaseType) {
93             if (AttributeValue.ValueType.STRING == typeInfo.mType)
94                 return mListener.visitingValue((String) mValue.get());
95             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
96                 if (1 == typeInfo.mDepth)
97                     return mListener.visitingValue((String[]) mValue.get());
98                 if (2 == typeInfo.mDepth)
99                     return mListener.visitingValue((String[][]) mValue.get());
100                 if (3 == typeInfo.mDepth)
101                     return mListener.visitingValue((String[][][]) mValue.get());
102             }
103         } else if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mBaseType) {
104             if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mType)
105                 return mListener.visitingValue((SimulatorResourceModel) mValue.get());
106             else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
107                 if (1 == typeInfo.mDepth)
108                     return mListener.visitingValue((SimulatorResourceModel[]) mValue.get());
109                 if (2 == typeInfo.mDepth)
110                     return mListener.visitingValue((SimulatorResourceModel[][]) mValue.get());
111                 if (3 == typeInfo.mDepth)
112                     return mListener.visitingValue((SimulatorResourceModel[][][]) mValue.get());
113             }
114         }
115
116         return null;
117     }
118 }