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)
68 return mListener.visitingValue((Integer[][][]) mValue.get());
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());
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());
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());
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());