Class: URBANopt::Reporting::DefaultReports::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/urbanopt/reporting/default_reports/validator.rb

Constant Summary collapse

@@schema =
nil

Instance Method Summary collapse

Constructor Details

#initializeValidator

Initialize the root directory



40
41
42
43
44
45
46
47
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 40

def initialize
  super

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

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

Instance Method Details

#csv_headersObject

get csv headers from csv schema



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 73

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_dirObject

Return the absolute path of the default reports files



50
51
52
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 50

def files_dir
  File.absolute_path(File.join(@root_dir, 'lib/urbanopt/reporting/default_reports/'))
end

#schemaObject

return schema



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 60

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_fileObject

return path to schema file



55
56
57
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 55

def schema_file
  File.join(files_dir, 'schema/scenario_schema.json')
end

#schema_valid?Boolean

check if the schema is valid

Returns:

  • (Boolean)


99
100
101
102
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 99

def schema_valid?
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.validate(metaschema, @@schema)
end

#schema_validation_errorsObject

return detailed schema validation errors



105
106
107
108
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 105

def schema_validation_errors
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.fully_validate(metaschema, @@schema)
end

#validate(schema, data) ⇒ Object

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.



94
95
96
# File 'lib/urbanopt/reporting/default_reports/validator.rb', line 94

def validate(schema, data)
  JSON::Validator.fully_validate(schema, data)
end