935588f93de9ce539b01e81c0c456c73f4ba2cd9
[platform/upstream/iotivity.git] / service / simulator / java / sdk / src / org / oic / simulator / AttributeValueValidation.java
1 package org.oic.simulator;
2
3 public class AttributeValueValidation implements AttributeValueVisitor.VisitingMethods<Boolean> {
4     private AttributeProperty mProperty = null;
5
6     public AttributeValueValidation(AttributeProperty property) {
7         mProperty = property;
8     }
9
10     public boolean validate(AttributeValue value) {
11         AttributeValueVisitor visitor = new AttributeValueVisitor(value, this);
12         Boolean result = (Boolean) visitor.visit();
13         return result.booleanValue();
14     }
15
16     @Override
17     public Boolean visitingValue(Integer value) {
18         if (mProperty == null)
19             return false;
20
21         if (checkRange(value.doubleValue()) || checkValueSet(value))
22             return true;
23         return false;
24     }
25
26     @Override
27     public Boolean visitingValue(Double value) {
28         if (mProperty == null)
29             return false;
30
31         if (checkRange(value.doubleValue()) || checkValueSet(value))
32             return true;
33         return false;
34     }
35
36     @Override
37     public Boolean visitingValue(Boolean value) {
38         if (mProperty == null)
39             return false;
40
41         if (checkValueSet(value))
42             return true;
43         return false;
44     }
45
46     @Override
47     public Boolean visitingValue(String value) {
48         if (mProperty == null)
49             return false;
50
51         if (checkRange(value.length()) || checkValueSet(value))
52             return true;
53         return false;
54     }
55
56     @Override
57     public Boolean visitingValue(SimulatorResourceModel value) {
58         return false;
59     }
60
61     @Override
62     public Boolean visitingValue(Integer[] values) {
63         if (mProperty == null)
64             return false;
65
66         if (!checkRange(values.length))
67             return false;
68
69         if (mProperty.getChildProperty() != null) {
70             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
71             for (Integer value : values) {
72                 if (rangeValidation.visitingValue(value) == false)
73                     return false;
74             }
75         }
76
77         return true;
78     }
79
80     @Override
81     public Boolean visitingValue(Double[] values) {
82         if (mProperty == null)
83             return false;
84
85         if (!checkRange(values.length))
86             return false;
87
88         if (mProperty.getChildProperty() != null) {
89             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
90             for (Double value : values) {
91                 if (rangeValidation.visitingValue(value) == false)
92                     return false;
93             }
94         }
95
96         return true;
97     }
98
99     @Override
100     public Boolean visitingValue(Boolean[] values) {
101         if (mProperty == null)
102             return false;
103
104         if (!checkRange(values.length))
105             return false;
106
107         if (mProperty.getChildProperty() != null) {
108             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
109             for (Boolean value : values) {
110                 if (rangeValidation.visitingValue(value) == false)
111                     return false;
112             }
113         }
114
115         return true;
116     }
117
118     @Override
119     public Boolean visitingValue(String[] values) {
120         if (mProperty == null)
121             return false;
122
123         if (!checkRange(values.length))
124             return false;
125
126         if (mProperty.getChildProperty() != null) {
127             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
128             for (String value : values) {
129                 if (rangeValidation.visitingValue(value) == false)
130                     return false;
131             }
132         }
133
134         return true;
135     }
136
137     @Override
138     public Boolean visitingValue(SimulatorResourceModel[] value) {
139         return false;
140     }
141
142     @Override
143     public Boolean visitingValue(Integer[][] values) {
144         if (mProperty == null)
145             return false;
146
147         if (!checkRange(values.length))
148             return false;
149
150         if (mProperty.getChildProperty() != null) {
151             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
152             for (Integer[] value : values) {
153                 if (rangeValidation.visitingValue(value) == false)
154                     return false;
155             }
156         }
157
158         return true;
159     }
160
161     @Override
162     public Boolean visitingValue(Double[][] values) {
163         if (mProperty == null)
164             return false;
165
166         if (!checkRange(values.length))
167             return false;
168
169         if (mProperty.getChildProperty() != null) {
170             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
171             for (Double[] value : values) {
172                 if (rangeValidation.visitingValue(value) == false)
173                     return false;
174             }
175         }
176
177         return true;
178     }
179
180     @Override
181     public Boolean visitingValue(Boolean[][] values) {
182         if (mProperty == null)
183             return false;
184
185         if (!checkRange(values.length))
186             return false;
187
188         if (mProperty.getChildProperty() != null) {
189             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
190             for (Boolean[] value : values) {
191                 if (rangeValidation.visitingValue(value) == false)
192                     return false;
193             }
194         }
195
196         return true;
197     }
198
199     @Override
200     public Boolean visitingValue(String[][] values) {
201         if (mProperty == null)
202             return false;
203
204         if (!checkRange(values.length))
205             return false;
206
207         if (mProperty.getChildProperty() != null) {
208             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
209             for (String[] value : values) {
210                 if (rangeValidation.visitingValue(value) == false)
211                     return false;
212             }
213         }
214
215         return true;
216     }
217
218     @Override
219     public Boolean visitingValue(SimulatorResourceModel[][] value) {
220         return false;
221     }
222
223     @Override
224     public Boolean visitingValue(Integer[][][] values) {
225         if (mProperty == null)
226             return false;
227
228         if (!checkRange(values.length))
229             return false;
230
231         if (mProperty.getChildProperty() != null) {
232             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
233             for (Integer[][] value : values) {
234                 if (rangeValidation.visitingValue(value) == false)
235                     return false;
236             }
237         }
238
239         return true;
240     }
241
242     @Override
243     public Boolean visitingValue(Double[][][] values) {
244         if (mProperty == null)
245             return false;
246
247         if (!checkRange(values.length))
248             return false;
249
250         if (mProperty.getChildProperty() != null) {
251             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
252             for (Double[][] value : values) {
253                 if (rangeValidation.visitingValue(value) == false)
254                     return false;
255             }
256         }
257
258         return true;
259     }
260
261     @Override
262     public Boolean visitingValue(Boolean[][][] values) {
263         if (mProperty == null)
264             return false;
265
266         if (!checkRange(values.length))
267             return false;
268
269         if (mProperty.getChildProperty() != null) {
270             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
271             for (Boolean[][] value : values) {
272                 if (rangeValidation.visitingValue(value) == false)
273                     return false;
274             }
275         }
276
277         return true;
278     }
279
280     @Override
281     public Boolean visitingValue(String[][][] values) {
282         if (mProperty == null)
283             return false;
284
285         if (!checkRange(values.length))
286             return false;
287
288         if (mProperty.getChildProperty() != null) {
289             AttributeValueValidation rangeValidation = new AttributeValueValidation(mProperty.getChildProperty());
290             for (String[][] value : values) {
291                 if (rangeValidation.visitingValue(value) == false)
292                     return false;
293             }
294         }
295
296         return true;
297     }
298
299     @Override
300     public Boolean visitingValue(SimulatorResourceModel[][][] value) {
301         return false;
302     }
303
304     private boolean checkRange(double value) {
305         if (AttributeProperty.Type.RANGE == mProperty.type()
306                 && (value >= mProperty.min() && value <= mProperty.max())) {
307             return true;
308         }
309
310         return false;
311     }
312
313     private <T> boolean checkValueSet(T value) {
314         if (AttributeProperty.Type.VALUESET == mProperty.type() && null != mProperty.valueSet()) {
315             for (AttributeValue allowedValue : mProperty.valueSet()) {
316                 if (allowedValue.get().equals(value))
317                     return true;
318             }
319         }
320
321         return false;
322     }
323 }