blob: d5e88f2007b54e477c83b91fe379259e853716e9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hop.pipeline.transforms.loadsave.validator;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.apache.hop.core.exception.HopException;
public class ListLoadSaveValidator<ObjectType>
implements IFieldLoadSaveValidator<List<ObjectType>> {
private final IFieldLoadSaveValidator<ObjectType> validator;
private final Integer elements;
public ListLoadSaveValidator(IFieldLoadSaveValidator<ObjectType> fieldValidator) {
validator = fieldValidator;
elements = null;
}
public ListLoadSaveValidator(
IFieldLoadSaveValidator<ObjectType> fieldValidator, Integer elements) {
validator = fieldValidator;
this.elements = elements;
}
@Override
public List<ObjectType> getTestObject() {
int max = elements == null ? new Random().nextInt(100) + 50 : elements;
List<ObjectType> result = new ArrayList<>(max);
for (int i = 0; i < max; i++) {
result.add(validator.getTestObject());
}
return result;
}
@Override
public boolean validateTestObject(List<ObjectType> original, Object actual) throws HopException {
if (actual instanceof List) {
List<?> otherList = (List<?>) actual;
if (original.size() != otherList.size()) {
return false;
}
for (int i = 0; i < original.size(); i++) {
if (!this.validator.validateTestObject(original.get(i), otherList.get(i))) {
return false;
}
}
return true;
}
return false;
}
}