Class: GeoCombine::Geoblacklight

Inherits:
Object
  • Object
show all
Includes:
Formats, GeometryTypes, Subjects
Defined in:
lib/geo_combine/geoblacklight.rb

Constant Summary collapse

GEOBLACKLIGHT_VERSION =
'1.0'
SCHEMA_JSON_URL =
"https://raw.githubusercontent.com/OpenGeoMetadata/opengeometadata.github.io/main/docs/schema/geoblacklight-schema-#{GEOBLACKLIGHT_VERSION}.json".freeze
DEPRECATED_KEYS_V1 =
%w[
  uuid
  georss_polygon_s
  georss_point_s
  georss_box_s
  dc_relation_sm
  solr_issued_i
  solr_bbox
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from GeometryTypes

#geometry_types

Methods included from Subjects

#subjects

Methods included from Formats

#formats

Constructor Details

#initialize(metadata, fields = {}) ⇒ Geoblacklight

Initializes a GeoBlacklight object GeoBlacklight-Schema

Parameters:

  • metadata (String)

    be a valid JSON string document in

  • fields (Hash) (defaults to: {})

    enhancements to metadata that are merged with @metadata



32
33
34
# File 'lib/geo_combine/geoblacklight.rb', line 32

def initialize(, fields = {})
  @metadata = JSON.parse().merge(fields)
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



13
14
15
# File 'lib/geo_combine/geoblacklight.rb', line 13

def 
  @metadata
end

Instance Method Details

#dct_references_validate!Boolean

Validate dct_references_s

Returns:

  • (Boolean)


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/geo_combine/geoblacklight.rb', line 70

def dct_references_validate!
  return true unless .key?('dct_references_s') # TODO: shouldn't we require this field?

  begin
    ref = JSON.parse(['dct_references_s'])
    unless ref.is_a?(Hash)
      raise GeoCombine::Exceptions::InvalidDCTReferences,
            'dct_references must be parsed to a Hash'
    end

    true
  rescue JSON::ParserError => e
    raise e, "Invalid JSON in dct_references_s: #{e.message}"
  end
end

#enhance_metadataObject

Calls metadata enhancement methods for each key, value pair in the metadata hash



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/geo_combine/geoblacklight.rb', line 39

def 
  upgrade_to_v1 if ['geoblacklight_version'].blank?

  .each do |key, value|
    translate_formats(key, value)
    enhance_subjects(key, value)
    format_proper_date(key, value)
    fields_should_be_array(key, value)
    translate_geometry_type(key, value)
  end
end

#spatial_validate!Object



86
87
88
# File 'lib/geo_combine/geoblacklight.rb', line 86

def spatial_validate!
  GeoCombine::BoundingBox.from_envelope(['solr_geom']).valid?
end

#to_json(options = {}) ⇒ String

Returns a string of JSON from a GeoBlacklight hash

Returns:

  • (String)


54
55
56
# File 'lib/geo_combine/geoblacklight.rb', line 54

def to_json(options = {})
  .to_json(options)
end

#valid?Boolean

Validates a GeoBlacklight-Schema json document

Returns:

  • (Boolean)


61
62
63
64
65
# File 'lib/geo_combine/geoblacklight.rb', line 61

def valid?
  JSON::Validator.validate!(schema, to_json, fragment: '#/definitions/layer') &&
    dct_references_validate! &&
    spatial_validate!
end