Class: Valkyrie::Persistence::Fedora::MetadataAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/valkyrie/persistence/fedora/metadata_adapter.rb

Overview

Metadata Adapter for Fedora adapter.

Examples:

Instantiate with connection to Fedora.

Valkyrie::Persistence::Fedora::MetadataAdapter.new(
  connection: ::Ldp::Client.new("http://localhost:8988/rest"),
  base_path: "test_fed",
  schema: Valkyrie::Persistence::Fedora::PermissiveSchema.new(title: RDF::URI("http://bad.com/title"))
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection:, base_path: "/", schema: Valkyrie::Persistence::Fedora::PermissiveSchema.new) ⇒ MetadataAdapter



17
18
19
20
21
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 17

def initialize(connection:, base_path: "/", schema: Valkyrie::Persistence::Fedora::PermissiveSchema.new)
  @connection = connection
  @base_path = base_path
  @schema = schema
end

Instance Attribute Details

#base_pathObject (readonly)

Returns the value of attribute base_path.



12
13
14
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 12

def base_path
  @base_path
end

#connectionObject (readonly)

Returns the value of attribute connection.



12
13
14
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 12

def connection
  @connection
end

#schemaObject (readonly)

Returns the value of attribute schema.



12
13
14
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 12

def schema
  @schema
end

Instance Method Details

#connection_prefixString

Generate the prefix used in HTTP requests to the Fedora RESTful endpoint



73
74
75
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 73

def connection_prefix
  "#{connection.http.url_prefix}/#{base_path}"
end

#idValkyrie::ID

Generate the Valkyrie ID for this unique metadata adapter This uses the URL of the Fedora endpoint to ensure that this is unique



38
39
40
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 38

def id
  @id ||= Valkyrie::ID.new(Digest::MD5.hexdigest(connection_prefix))
end

#id_to_uri(id) ⇒ RDF::URI

Generate a URI for a given Valkyrie ID



58
59
60
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 58

def id_to_uri(id)
  RDF::URI("#{connection_prefix}/#{pair_path(id)}/#{CGI.escape(id.to_s)}")
end

#pair_path(id) ⇒ Array<String>

Generate the pairtree path for a given Valkyrie ID



67
68
69
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 67

def pair_path(id)
  id.to_s.split(/[-\/]/).first.split("").each_slice(2).map(&:join).join("/")
end

#persisterValkyrie::Persistence::Fedora::Persister

Construct the persister object using this adapter



31
32
33
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 31

def persister
  Valkyrie::Persistence::Fedora::Persister.new(adapter: self)
end

#query_serviceValkyrie::Persistence::Fedora::QueryService

Construct the query service object using this adapter



25
26
27
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 25

def query_service
  @query_service ||= Valkyrie::Persistence::Fedora::QueryService.new(adapter: self)
end

#resource_factoryValkyrie::Persistence::Fedora::Persister::ResourceFactory

Construct the factory object used to construct Valkyrie::Resource objects using this adapter



44
45
46
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 44

def resource_factory
  Valkyrie::Persistence::Fedora::Persister::ResourceFactory.new(adapter: self)
end

#standardize_query_result?Boolean



77
78
79
80
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 77

def standardize_query_result?
  Valkyrie.warn_about_standard_queries! if Valkyrie.config.standardize_query_result != true
  Valkyrie.config.standardize_query_result == true
end

#uri_to_id(uri) ⇒ Valkyrie::ID

Generate a Valkyrie ID for a given URI



51
52
53
# File 'lib/valkyrie/persistence/fedora/metadata_adapter.rb', line 51

def uri_to_id(uri)
  Valkyrie::ID.new(CGI.unescape(uri.to_s.gsub(/^.*\//, '')))
end