Sha256: 0d79e4aff82e9dd8eb31f1b107b966515c0c3b32808f72d709a836d0f60fec5f
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
module FedoraMigrate class RelsExtDatastreamMover < Mover RELS_EXT_DATASTREAM = "RELS-EXT".freeze def migrate migrate_statements target.ldp_source.update update_index super end def post_initialize @target ||= ActiveFedora::Base.find(id_component) rescue ActiveFedora::ObjectNotFoundError raise FedoraMigrate::Errors::MigrationError, "Target object was not found in Fedora 4. Did you migrate it?" end private def migrate_statements statements.each do |statement| triple = [target.rdf_subject, migrate_predicate(statement.predicate), migrate_object(statement.object)] target.ldp_source.graph << triple report << triple.join("--") end end def update_index target.reload target.update_index end def graph @graph ||= RDF::Graph.new { |g| g.from_rdfxml(source.datastreams[RELS_EXT_DATASTREAM].content) } end # Override this if any predicate transformation is needed def migrate_predicate(fc3_uri) fc3_uri end def migrate_object(fc3_uri) RDF::URI.new(ActiveFedora::Base.id_to_uri(id_component(fc3_uri))) end def missing_object?(statement) return false if ActiveFedora::Base.exists?(id_component(statement.object)) report << "could not migrate relationship #{statement.predicate} because #{statement.object} doesn't exist in Fedora 4" true end # All the graph statements except hasModel and those with missing objects def statements graph.statements.reject { |stmt| stmt.predicate == ActiveFedora::RDF::Fcrepo::Model.hasModel || missing_object?(stmt) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fedora-migrate-0.5.0 | lib/fedora_migrate/rels_ext_datastream_mover.rb |
fedora-migrate-0.4.0 | lib/fedora_migrate/rels_ext_datastream_mover.rb |