@Override
public Validation<List<SMFErrorType>, SMFHeader> validate(
final SMFHeader header,
final SMFSchema schema)
{
NullCheck.notNull(header, "Header");
NullCheck.notNull(schema, "Schema");
List<SMFErrorType> errors = List.empty();
final Optional<SMFSchemaIdentifier> file_id_opt = header.schemaIdentifier();
if (file_id_opt.isPresent()) {
final SMFSchemaIdentifier file_id = file_id_opt.get();
final SMFSchemaIdentifier schema_id = schema.schemaIdentifier();
if (!Objects.equals(schema_id, file_id)) {
errors = errors.append(errorWrongSchemaID(schema_id, file_id));
}
}
errors = checkVerticesAndTriangles(header, schema, errors);
errors = checkAttributes(header, schema, errors);
errors = checkCoordinateSystem(header, schema, errors);
if (errors.isEmpty()) {
return valid(header);
}
return invalid(errors);
}