2 * Copyright 2015 Samsung Electronics All Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.oic.simulator;
19 import java.util.HashSet;
22 class ArrayValueValidator implements
23 AttributeValueVisitor.VisitingMethods<Boolean> {
25 private ArrayProperty mProperty = null;
27 ArrayValueValidator(ArrayProperty property) {
31 public boolean validate(AttributeValue value) {
32 AttributeValueVisitor visitor = new AttributeValueVisitor(value, this);
33 return (Boolean) visitor.visit();
37 public Boolean visitingValue(Integer value) {
42 public Boolean visitingValue(Double value) {
47 public Boolean visitingValue(Boolean value) {
52 public Boolean visitingValue(String value) {
57 public Boolean visitingValue(SimulatorResourceModel value) {
62 public Boolean visitingValue(Integer[] values) {
63 if (null == mProperty)
66 // Validating length of array
67 if (mProperty.hasRange()) {
68 if (values.length < mProperty.minItems()
69 || (values.length > mProperty.maxItems() && !mProperty
75 // Validating elements of array
76 AttributeProperty elementProperty = mProperty.getElementProperty();
77 if (!elementProperty.isInteger()) {
81 Set<Integer> uniqueSet = new HashSet<Integer>();
82 for (Integer value : values) {
83 if (mProperty.isUnique() && uniqueSet.add(value) == false) {
87 if (false == elementProperty.asInteger().validate(value))
95 public Boolean visitingValue(Double[] values) {
96 if (null == mProperty)
99 // Validating length of array
100 if (mProperty.hasRange()) {
101 if (values.length < mProperty.minItems()
102 || (values.length > mProperty.maxItems() && !mProperty
108 // Validating elements of array
109 AttributeProperty elementProperty = mProperty.getElementProperty();
110 if (!elementProperty.isDouble()) {
114 Set<Double> uniqueSet = new HashSet<Double>();
115 for (Double value : values) {
116 if (mProperty.isUnique() && uniqueSet.add(value) == false) {
120 if (false == elementProperty.asDouble().validate(value))
128 public Boolean visitingValue(Boolean[] values) {
129 if (null == mProperty)
132 // Validating length of array
133 if (mProperty.hasRange()) {
134 if (values.length < mProperty.minItems()
135 || (values.length > mProperty.maxItems() && !mProperty
141 // Validating elements of array
142 AttributeProperty elementProperty = mProperty.getElementProperty();
143 if (!elementProperty.isBoolean()) {
147 Set<Boolean> uniqueSet = new HashSet<Boolean>();
148 for (Boolean value : values) {
149 if (mProperty.isUnique() && uniqueSet.add(value) == false) {
153 if (false == elementProperty.asBoolean().validate(value))
161 public Boolean visitingValue(String[] values) {
162 if (null == mProperty)
165 // Validating length of array
166 if (mProperty.hasRange()) {
167 if (values.length < mProperty.minItems()
168 || (values.length > mProperty.maxItems() && !mProperty
174 // Validating elements of array
175 AttributeProperty elementProperty = mProperty.getElementProperty();
176 if (!elementProperty.isString()) {
180 Set<String> uniqueSet = new HashSet<String>();
181 for (String value : values) {
182 if (mProperty.isUnique() && uniqueSet.add(value) == false) {
186 if (false == elementProperty.asString().validate(value))
194 public Boolean visitingValue(SimulatorResourceModel[] values) {
195 if (null == mProperty)
198 // Validating length of array
199 if (mProperty.hasRange()) {
200 if (values.length < mProperty.minItems()
201 || (values.length > mProperty.maxItems() && !mProperty
207 // Validating elements of array
208 AttributeProperty elementProperty = mProperty.getElementProperty();
209 if (!elementProperty.isInteger()) {
213 for (SimulatorResourceModel value : values) {
214 if (false == elementProperty.asModel().validate(value))
222 public Boolean visitingValue(Integer[][] values) {
223 if (null == mProperty)
226 // Validating length of array
227 if (mProperty.hasRange()) {
228 if (values.length < mProperty.minItems()
229 || (values.length > mProperty.maxItems() && !mProperty
235 // Validating elements of array
236 AttributeProperty elementProperty = mProperty.getElementProperty();
237 if (!elementProperty.isArray()) {
241 ArrayValueValidator validator = new ArrayValueValidator(
242 elementProperty.asArray());
243 for (Integer[] value : values) {
244 if (false == validator.visitingValue(value))
252 public Boolean visitingValue(Double[][] values) {
253 if (null == mProperty)
256 // Validating length of array
257 if (mProperty.hasRange()) {
258 if (values.length < mProperty.minItems()
259 || (values.length > mProperty.maxItems() && !mProperty
265 // Validating elements of array
266 AttributeProperty elementProperty = mProperty.getElementProperty();
267 if (!elementProperty.isArray()) {
271 ArrayValueValidator validator = new ArrayValueValidator(
272 elementProperty.asArray());
273 for (Double[] value : values) {
274 if (false == validator.visitingValue(value))
282 public Boolean visitingValue(Boolean[][] values) {
283 if (null == mProperty)
286 // Validating length of array
287 if (mProperty.hasRange()) {
288 if (values.length < mProperty.minItems()
289 || (values.length > mProperty.maxItems() && !mProperty
295 // Validating elements of array
296 AttributeProperty elementProperty = mProperty.getElementProperty();
297 if (!elementProperty.isArray()) {
301 ArrayValueValidator validator = new ArrayValueValidator(
302 elementProperty.asArray());
303 for (Boolean[] value : values) {
304 if (false == validator.visitingValue(value))
312 public Boolean visitingValue(String[][] values) {
313 if (null == mProperty)
316 // Validating length of array
317 if (mProperty.hasRange()) {
318 if (values.length < mProperty.minItems()
319 || (values.length > mProperty.maxItems() && !mProperty
325 // Validating elements of array
326 AttributeProperty elementProperty = mProperty.getElementProperty();
327 if (!elementProperty.isArray()) {
331 ArrayValueValidator validator = new ArrayValueValidator(
332 elementProperty.asArray());
333 for (String[] value : values) {
334 if (false == validator.visitingValue(value))
342 public Boolean visitingValue(SimulatorResourceModel[][] values) {
343 if (null == mProperty)
346 // Validating length of array
347 if (mProperty.hasRange()) {
348 if (values.length < mProperty.minItems()
349 || (values.length > mProperty.maxItems() && !mProperty
355 // Validating elements of array
356 AttributeProperty elementProperty = mProperty.getElementProperty();
357 if (!elementProperty.isArray()) {
361 ArrayValueValidator validator = new ArrayValueValidator(
362 elementProperty.asArray());
363 for (SimulatorResourceModel[] value : values) {
364 if (false == validator.visitingValue(value))
372 public Boolean visitingValue(Integer[][][] values) {
373 if (null == mProperty)
376 // Validating length of array
377 if (mProperty.hasRange()) {
378 if (values.length < mProperty.minItems()
379 || (values.length > mProperty.maxItems() && !mProperty
385 // Validating elements of array
386 AttributeProperty elementProperty = mProperty.getElementProperty();
387 if (!elementProperty.isArray()) {
391 ArrayValueValidator validator = new ArrayValueValidator(
392 elementProperty.asArray());
393 for (Integer[][] value : values) {
394 if (false == validator.visitingValue(value))
402 public Boolean visitingValue(Double[][][] values) {
403 if (null == mProperty)
406 // Validating length of array
407 if (mProperty.hasRange()) {
408 if (values.length < mProperty.minItems()
409 || (values.length > mProperty.maxItems() && !mProperty
415 // Validating elements of array
416 AttributeProperty elementProperty = mProperty.getElementProperty();
417 if (!elementProperty.isArray()) {
421 ArrayValueValidator validator = new ArrayValueValidator(
422 elementProperty.asArray());
423 for (Double[][] value : values) {
424 if (false == validator.visitingValue(value))
432 public Boolean visitingValue(Boolean[][][] values) {
433 if (null == mProperty)
436 // Validating length of array
437 if (mProperty.hasRange()) {
438 if (values.length < mProperty.minItems()
439 || (values.length > mProperty.maxItems() && !mProperty
445 // Validating elements of array
446 AttributeProperty elementProperty = mProperty.getElementProperty();
447 if (!elementProperty.isArray()) {
451 ArrayValueValidator validator = new ArrayValueValidator(
452 elementProperty.asArray());
453 for (Boolean[][] value : values) {
454 if (false == validator.visitingValue(value))
462 public Boolean visitingValue(String[][][] values) {
463 if (null == mProperty)
466 // Validating length of array
467 if (mProperty.hasRange()) {
468 if (values.length < mProperty.minItems()
469 || (values.length > mProperty.maxItems() && !mProperty
475 // Validating elements of array
476 AttributeProperty elementProperty = mProperty.getElementProperty();
477 if (!elementProperty.isArray()) {
481 ArrayValueValidator validator = new ArrayValueValidator(
482 elementProperty.asArray());
483 for (String[][] value : values) {
484 if (false == validator.visitingValue(value))
492 public Boolean visitingValue(SimulatorResourceModel[][][] values) {
493 if (null == mProperty)
496 // Validating length of array
497 if (mProperty.hasRange()) {
498 if (values.length < mProperty.minItems()
499 || (values.length > mProperty.maxItems() && !mProperty
505 // Validating elements of array
506 AttributeProperty elementProperty = mProperty.getElementProperty();
507 if (!elementProperty.isArray()) {
511 ArrayValueValidator validator = new ArrayValueValidator(
512 elementProperty.asArray());
513 for (SimulatorResourceModel[][] value : values) {
514 if (false == validator.visitingValue(value))