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

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

Defined Under Namespace

Classes: GraphContainer

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

Returns:

  • (Boolean)


119
120
121
122
123
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 119

def self.handles?(value)
  value.statement.object.is_a?(RDF::URI) && value.statement.object.to_s.include?("#") &&
    (value.statement.object.to_s.start_with?("#") ||
     value.statement.object.to_s.start_with?(value.adapter.connection_prefix))
end

Instance Method Details

#containerObject



135
136
137
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 135

def container
  GraphContainer.new(graph, value.statement.object)
end

#graphObject



151
152
153
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 151

def graph
  @graph ||= RDF::Graph.new
end

#new_subject(statement) ⇒ Object



143
144
145
146
147
148
149
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 143

def new_subject(statement)
  if statement.subject == value.statement.object
    RDF::URI("")
  else
    statement.subject
  end
end

#resourceObject



139
140
141
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 139

def resource
  OrmConverter.new(object: container, adapter: value.adapter).convert
end

#resultObject



125
126
127
128
129
130
131
132
133
# File 'lib/valkyrie/persistence/fedora/persister/orm_converter.rb', line 125

def result
  value.scope.each do |statement|
    next unless statement.subject.to_s.include?("#")
    subject = new_subject(statement)
    graph << RDF::Statement.new(subject, statement.predicate, statement.object)
  end
  value.statement.object = resource
  Applicator.new(Property.new(statement: value.statement, scope: value.scope, adapter: value.adapter))
end