class URBANopt::Reporting::DefaultReports::Validator

Public Class Methods

new() click to toggle source

Initialize the root directory

Calls superclass method
# File lib/urbanopt/reporting/default_reports/validator.rb, line 15
def initialize
  super

  @root_dir = File.absolute_path(File.join(File.dirname(__FILE__), '..', '..', '..', '..'))

  @instance_lock = Mutex.new
  @@schema ||= schema
end

Public Instance Methods

csv_headers() click to toggle source

get csv headers from csv schema

# File lib/urbanopt/reporting/default_reports/validator.rb, line 48
def csv_headers
  # read scenario csv schema headers
  scenario_csv_schema = open(File.expand_path('schema/scenario_csv_columns.txt', File.dirname(__FILE__))) # .read()

  scenario_csv_schema_headers = []
  File.readlines(scenario_csv_schema).each do |line|
    l = line.delete("\n")
    a = l.delete("\t")
    scenario_csv_schema_headers << a
  end

  return scenario_csv_schema_headers
end
files_dir() click to toggle source

Return the absolute path of the default reports files

# File lib/urbanopt/reporting/default_reports/validator.rb, line 25
def files_dir
  File.absolute_path(File.join(@root_dir, 'lib/urbanopt/reporting/default_reports/'))
end
schema() click to toggle source

return schema

# File lib/urbanopt/reporting/default_reports/validator.rb, line 35
def schema
  @instance_lock.synchronize do
    if @@schema.nil?
      File.open(schema_file, 'r') do |f|
        @@schema = JSON.parse(f.read, symbolize_names: true)
      end
    end
  end

  @@schema
end
schema_file() click to toggle source

return path to schema file

# File lib/urbanopt/reporting/default_reports/validator.rb, line 30
def schema_file
  File.join(files_dir, 'schema/scenario_schema.json')
end
schema_valid?() click to toggle source

check if the schema is valid

# File lib/urbanopt/reporting/default_reports/validator.rb, line 74
def schema_valid?
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.validate(metaschema, @@schema)
end
schema_validation_errors() click to toggle source

return detailed schema validation errors

# File lib/urbanopt/reporting/default_reports/validator.rb, line 80
def schema_validation_errors
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.fully_validate(metaschema, @@schema)
end
validate(schema, data) click to toggle source

validate data against schema

parameters:

schema - Hash - A hash of the JSON scenario_schema. data - Hash - A hash of the data to be validated against scenario_schema.

# File lib/urbanopt/reporting/default_reports/validator.rb, line 69
def validate(schema, data)
  JSON::Validator.fully_validate(schema, data)
end