Class: Valkyrie::Persistence::Fedora::Persister::ModelConverter::TimeValue

Inherits:
MappedFedoraValue show all
Defined in:
lib/valkyrie/persistence/fedora/persister/model_converter.rb

Overview

Class for mapping Property objects for Time values Technically Valkyrie does not support time, but when other persisters support time

this code will make Fedora compliant with the established patterns.

https://github.com/samvera-labs/valkyrie/wiki/Supported-Data-Types

Instance Attribute Summary

Attributes inherited from ValueMapper

#calling_mapper, #value

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ValueMapper

for, #initialize, register

Constructor Details

This class inherits a constructor from Valkyrie::ValueMapper

Class Method Details

.handles?(value) ⇒ Boolean

Determines whether or not the value is a Property for Time values

Parameters:

  • value (Object)

Returns:

  • (Boolean)


482
483
484
# File 'lib/valkyrie/persistence/fedora/persister/model_converter.rb', line 482

def self.handles?(value)
  value.is_a?(Property) && value.value.is_a?(Time)
end

Instance Method Details

#resultValkyrie::Persistence::Fedora::Persister::ModelConverter::Property

Generates the Property for this Time This will first be mapped to an RDF::Literal::DateTime object such as “2018-08-08T11:24:18.2087-04:00”^^<example.com/predicate/valkyrie_datetime>



489
490
491
492
493
494
495
496
497
# File 'lib/valkyrie/persistence/fedora/persister/model_converter.rb', line 489

def result
  # cast it to datetime for storage, to preserve milliseconds and date
  # @todo Remove strftime when https://github.com/ruby-rdf/rdf/issues/394 is closed.
  map_value(converted_value:
      RDF::Literal.new(
        value.value.to_datetime.strftime("%Y-%m-%dT%H:%M:%S.%N%z"),
        datatype: PermissiveSchema.valkyrie_time
      ))
end