public ValidationResult testWithValidationResult(final Element element) { final ValidationResult result = new ValidationResult(); elementTuple.setElement(element); components.stream() .filter(predicate -> !predicate.test(elementTuple)) .forEach(predicate -> result.addError(getErrorMsg(predicate))); return result; }
public ValidationResult(final String errorMsg) { addError(errorMsg); }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 2 != arguments.length || null == arguments[0] || null == arguments[1]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 2 arguments are required."); return result; } if (!arguments[0].equals(arguments[1]) || !Comparable.class.isAssignableFrom(arguments[0])) { result.addError("Inputs must be the same class type and comparable: " + arguments[0] + "," + arguments[1]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 2 != arguments.length || null == arguments[0] || null == arguments[1]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 2 arguments are required."); return result; } if (!arguments[0].equals(arguments[1]) || !Comparable.class.isAssignableFrom(arguments[0])) { result.addError("Inputs must be the same class type and comparable: " + arguments[0] + "," + arguments[1]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == controlValue) { result.addError("Control value has not been set"); return result; } if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!controlValue.getClass().isAssignableFrom(arguments[0])) { result.addError("Control value class " + controlValue.getClass().getName() + " is not compatible with the input type: " + arguments[0]); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == controlValue) { result.addError("Control value has not been set"); return result; } if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!controlValue.getClass().isAssignableFrom(arguments[0])) { result.addError("Control value class " + controlValue.getClass().getName() + " is not compatible with the input type: " + arguments[0]); } return result; } }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". 1 argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { final ValidationResult result = new ValidationResult(); if (null == arguments || 1 != arguments.length || null == arguments[0]) { result.addError("Incorrect number of arguments for " + getClass().getName() + ". One (1) argument is required."); return result; } if (!String.class.isAssignableFrom(arguments[0]) && !Object[].class.isAssignableFrom(arguments[0]) && !Iterable.class.isAssignableFrom(arguments[0]) && !Map.class.isAssignableFrom(arguments[0])) { result.addError("Input class " + arguments[0].getName() + " must be one of the following: " + String.class.getName() + ", " + Object[].class.getName() + ", " + Iterable.class.getName() + ", " + Map.class.getName()); } return result; }
@Override public ValidationResult assignable(final Class<?>... arguments) { if (isInput) { if (input instanceof InputValidator) { return ((InputValidator) input).isInputValid(arguments); } } else if (input instanceof OutputValidator) { return ((OutputValidator) input).isOutputValid(arguments); } final ValidationResult result = new ValidationResult(); if (type == null) { result.addError("Type could not be extracted from function " + input.getClass().getName()); return result; } if (UnknownGenericType.class.equals(type)) { // unknown type so anything is assignable return result; } if (arguments.length != 1 || null == arguments[0]) { result.addError("Incompatible number of types. " + input.getClass().getName() + ": [" + type + "], arguments: " + Arrays.toString(arguments)); return result; } final boolean isAssignable = type.isAssignableFrom(arguments[0]); if (!isAssignable) { result.addError("Incompatible types. " + input.getClass().getName() + ": [" + type + "], arguments: " + Arrays.toString(arguments)); } return result; }
public ValidationResult testWithValidationResult(final Element element) { final ValidationResult result = new ValidationResult(); elementTuple.setElement(element); components.stream() .filter(predicate -> !predicate.test(elementTuple)) .forEach(predicate -> result.addError(getErrorMsg(predicate))); return result; }
@Override public void validateGraph(final Store store, final String graphId, final Schema schema, final StoreProperties storeProperties, final List<String> parentSchemaIds, final String parentStorePropertiesId, final Pair<Schema, StoreProperties> existingGraphPair) { ValidationResult result = super.validate(store, graphId, schema, storeProperties, parentSchemaIds, parentStorePropertiesId, existingGraphPair, new ValidationResult()); Set<String> errors = result.getErrors(); result.getErrors().removeIf(s -> s.equals(String.format(CANT_BOTH_BE_NULL, SCHEMA_STRING, PARENT_SCHEMA_IDS)) || s.equals(String.format(CANT_BOTH_BE_NULL, STORE_PROPERTIES_STRING, PARENT_STORE_PROPERTIES_ID))); result = new ValidationResult(); for (final String error : errors) { result.addError(error); } if (graphId.equals(store.getGraphId())) { result.addError(String.format(CANNOT_EXPORT_TO_THE_SAME_GRAPH_S, graphId)); } if (!result.isValid()) { throw new IllegalArgumentException(result.getErrorString()); } }
/** * Checks the second value of a {@link Pair} is not null * * @param fields the fields to validate * @return the validation result */ @SafeVarargs public static ValidationResult validateRequiredFields(final Pair<String, Object>... fields) { final ValidationResult validationResult = new ValidationResult(); for (final Pair field : fields) { if (null == field.getSecond()) { validationResult.addError(field.getFirst() + " is required."); } } return validationResult; }
result.addError(error); result.addError(String.format(STORE_GRAPH_LIBRARY_IS_NULL)); } else { result.addError(String.format(USER_IS_NOT_AUTHORISED_TO_EXPORT_USING_S_S, GRAPH_ID, graphId)); for (final String parentSchemaId : parentSchemaIds) { if (!isAuthorised(user, idAuths.get(parentSchemaId))) { result.addError(String.format(USER_IS_NOT_AUTHORISED_TO_EXPORT_USING_S_S, SCHEMA_ID, parentSchemaId)); result.addError(String.format(USER_IS_NOT_AUTHORISED_TO_EXPORT_USING_S_S, STORE_PROPERTIES_ID, parentStorePropertiesId)); result.addError(String.format(GRAPH_S_ALREADY_EXISTS_SO_YOU_CANNOT_USE_A_DIFFERENT_S_DO_NOT_SET_THE_S_FIELD, graphId, SCHEMA_STRING, PARENT_SCHEMA_IDS)); result.addError(String.format(GRAPH_S_ALREADY_EXISTS_SO_YOU_CANNOT_USE_A_DIFFERENT_S_DO_NOT_SET_THE_S_FIELD, graphId, STORE_PROPERTIES_STRING, PARENT_STORE_PROPERTIES_ID)); result.addError(String.format(GRAPH_LIBRARY_CANNOT_BE_FOUND_WITH_GRAPHID_S, graphId)); result.addError(String.format(S_MUST_BE_SPECIFIED_WITH_S, PARENT_STORE_PROPERTIES_ID, PARENT_SCHEMA_IDS)); result.addError(String.format(S_MUST_BE_SPECIFIED_WITH_S, PARENT_SCHEMA_IDS, PARENT_STORE_PROPERTIES_ID)); result.addError(String.format(CANNOT_EXPORT_TO_THE_SAME_GRAPH_S, graphId));
@Override public ValidationResult validate() { final ValidationResult result = Output.super.validate(); if (!view.hasEdges() && !view.hasEntities()) { result.addError("Cannot create a GraphFrame unless the View contains edges or entities."); } return result; }
/** * <p> * Validates the given object and results a ValidationResult that can * contain information as to why validation fails. * </p> * <p> * It is less efficient than just calling validate as complex validation * strings may be built to detail why objects are invalid. * </p> * * @param obj an object of type T to validate. * @return the ValidationResult. */ default ValidationResult validateWithValidationResult(final T obj) { final boolean result = validate(obj); final ValidationResult validationResult = new ValidationResult(); if (!result) { validationResult.addError("Validation failed for obj: " + obj); } return validationResult; } }
/** * Checks that the second value of a {@link Tuple3} satisfies the associated * {@link Predicate} condition. * * @param fields the fields to validate * @return the validation result */ @SafeVarargs public static ValidationResult validateRequiredFields(final Tuple3<String, Object, Predicate>... fields) { final ValidationResult validationResult = new ValidationResult(); for (final Tuple3<String, Object, Predicate> field : fields) { if (!field.get2().test(field.get1())) { validationResult.addError(field.get0()); } } return validationResult; }
@Override protected void validateSchema(final ValidationResult validationResult, final Serialiser serialiser) { super.validateSchema(validationResult, serialiser); final String timestampProperty = getSchema().getConfig(AccumuloStoreConstants.TIMESTAMP_PROPERTY); if (null != timestampProperty) { final Iterable<SchemaElementDefinition> defs = new ChainedIterable<>(getSchema().getEntities().values(), getSchema().getEdges().values()); for (final SchemaElementDefinition def : defs) { final TypeDefinition typeDef = def.getPropertyTypeDef(timestampProperty); if (null != typeDef && null != typeDef.getAggregateFunction() && !(typeDef.getAggregateFunction() instanceof Max)) { validationResult.addError("The aggregator for the " + timestampProperty + " property must be set to: " + Max.class.getName() + " this cannot be overridden for this Accumulo Store, as you have told Accumulo to store this property in the timestamp column."); } } } }
@Override public ValidationResult assignable(final Class<?>... arguments) { if (isInput) { if (input instanceof InputValidator) { return ((InputValidator) input).isInputValid(arguments); } } else if (input instanceof OutputValidator) { return ((OutputValidator) input).isOutputValid(arguments); } final ValidationResult result = new ValidationResult(); if (null != types) { if (null != numClasses && types.length != arguments.length) { result.addError("Incompatible number of types. " + input.getClass() + ": " + Arrays.toString(types) + ", arguments: " + Arrays.toString(arguments)); return result; } if (null == numClasses) { for (final Class type : arguments) { result.add(types[0].assignable(type)); } } else { int i = 0; for (final Class type : arguments) { result.add(types[i].assignable(type)); i++; } } } return result; }
@Override public ValidationResult isInputValid(final Class<?>... arguments) { if (null == getPredicate()) { return new ValidationResult(); } final Integer[] selection = getSelection(); if (null == selection) { return (Signature.getInputSignature(getPredicate()).assignable()); } final Class[] selectedArgs = new Class[selection.length]; int i = 0; for (final Integer selectionIndex : selection) { if (selectionIndex >= arguments.length) { final ValidationResult result = new ValidationResult(); result.addError("Incorrect selection of arguments for nested predicate " + getPredicate().getClass().getName() + ". Selection requires " + (Collections.max(Arrays.asList(selection)) + 1) + " arguments, however only " + arguments.length + " provided."); return result; } selectedArgs[i] = arguments[selectionIndex]; i++; } return (Signature.getInputSignature(getPredicate()).assignable(selectedArgs)); } }