Class: Valkyrie::Persistence::Fedora::Persister::OrmConverter::GraphToAttributes::TimeValue

Inherits:
ValueMapper
  • Object
show all
Defined in:
lib/valkyrie/persistence/fedora/persister/orm_converter.rb

Overview

Class for mapping RDF datetime literals into Valkyrie Resource attribute values 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 a Property statement is an RDF literal typed for Time values

Parameters:

Returns:

  • (Boolean)


396
397
398
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 396

def self.handles?(value)
  value.statement.object.is_a?(RDF::Literal) && value.statement.object.language.blank? && value.statement.object.datatype == PermissiveSchema.valkyrie_time
end

Instance Method Details

#resultApplicator

Casts the value of the RDF literal into an Applicator for DateTime values

Returns:



402
403
404
405
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 402

def result
  value.statement.object = DateTime.parse(value.statement.object.to_s).new_offset(0)
  calling_mapper.for(Property.new(statement: value.statement, scope: value.scope, adapter: value.adapter)).result
end