Class: Dor::MetadataService

Inherits:
Object
  • Object
show all
Defined in:
lib/dor/services/metadata_service.rb

Constant Summary collapse

@@cache =
Cache.new(nil, nil, 250, 300)

Class Method Summary collapse

Class Method Details

.can_resolve?(identifier) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
# File 'lib/dor/services/metadata_service.rb', line 17

def can_resolve?(identifier)
  (prefix, _identifier) = identifier.split(/:/, 2)
  handlers.key?(prefix.to_sym)
end

.fetch(identifier) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/dor/services/metadata_service.rb', line 27

def fetch(identifier)
  @@cache.fetch(identifier) do
    (prefix, identifier) = identifier.split(/:/, 2)
    handler = handler_for(prefix)
    handler.fetch(prefix, identifier)
  end
end

.handler_for(prefix) ⇒ Object

Raises:



41
42
43
44
45
46
# File 'lib/dor/services/metadata_service.rb', line 41

def handler_for(prefix)
  handler = handlers[prefix.to_sym]
  raise MetadataError, "Unknown metadata prefix: #{prefix}" if handler.nil?

  handler
end

.known_prefixesObject



13
14
15
# File 'lib/dor/services/metadata_service.rb', line 13

def known_prefixes
  handlers.keys
end

.label_for(identifier) ⇒ Object



35
36
37
38
39
# File 'lib/dor/services/metadata_service.rb', line 35

def label_for(identifier)
  (prefix, identifier) = identifier.split(/:/, 2)
  handler = handler_for(prefix)
  handler.label(handler.fetch(prefix, identifier))
end

.resolvable(identifiers) ⇒ Object

TODO: Return a prioritized list



23
24
25
# File 'lib/dor/services/metadata_service.rb', line 23

def resolvable(identifiers)
  identifiers.select { |identifier| can_resolve?(identifier) }
end