1 package org.oic.simulator;
3 public class AttributeValueVisitor {
4 private AttributeValue mValue;
5 private VisitingMethods mListener;
7 public interface VisitingMethods<T extends Object> {
8 public T visitingValue(Integer value);
10 public T visitingValue(Double value);
12 public T visitingValue(Boolean value);
14 public T visitingValue(String value);
16 public T visitingValue(SimulatorResourceModel value);
18 public T visitingValue(Integer[] value);
20 public T visitingValue(Double[] value);
22 public T visitingValue(Boolean[] value);
24 public T visitingValue(String[] value);
26 public T visitingValue(SimulatorResourceModel[] value);
28 public T visitingValue(Integer[][] value);
30 public T visitingValue(Double[][] value);
32 public T visitingValue(Boolean[][] value);
34 public T visitingValue(String[][] value);
36 public T visitingValue(SimulatorResourceModel[][] value);
38 public T visitingValue(Integer[][][] value);
40 public T visitingValue(Double[][][] value);
42 public T visitingValue(Boolean[][][] value);
44 public T visitingValue(String[][][] value);
46 public T visitingValue(SimulatorResourceModel[][][] value);
49 public AttributeValueVisitor(AttributeValue value, VisitingMethods listener) {
54 public Object visit() {
55 if (null == mValue || null == mListener)
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)
69 .visitingValue((Integer[][][]) mValue.get());
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());
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)
92 .visitingValue((Boolean[][][]) mValue.get());
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());
105 } else if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mBaseType) {
106 if (AttributeValue.ValueType.RESOURCEMODEL == typeInfo.mType)
107 return mListener.visitingValue((SimulatorResourceModel) mValue
109 else if (AttributeValue.ValueType.ARRAY == typeInfo.mType) {
110 if (1 == typeInfo.mDepth)
112 .visitingValue((SimulatorResourceModel[]) mValue
114 if (2 == typeInfo.mDepth)
116 .visitingValue((SimulatorResourceModel[][]) mValue
118 if (3 == typeInfo.mDepth)
120 .visitingValue((SimulatorResourceModel[][][]) mValue