Skip to content

Commit

Permalink
Isolate most changes to ActiveFedora overrides
Browse files Browse the repository at this point in the history
  • Loading branch information
cjcolvar committed Sep 20, 2023
1 parent 3a63799 commit 5d2fd57
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 10 deletions.
2 changes: 1 addition & 1 deletion app/models/master_file.rb
Original file line number Diff line number Diff line change
Expand Up @@ -770,8 +770,8 @@ def find_encoder_class(klass_name)

def update_parent!
return unless media_object.present?
media_object.master_files.delete(self)
media_object.ordered_master_files.delete(self)
media_object.master_files = media_object.ordered_master_files.to_a
media_object.set_media_types!
media_object.set_duration!
if !media_object.save
Expand Down
9 changes: 0 additions & 9 deletions app/models/media_object.rb
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,6 @@ def published?
!avalon_publisher.blank?
end

alias_method :'_master_files=', :'master_files='
define_attribute_methods :master_files
def master_files=(mfs)
master_files_will_change!
ids = mfs.map(&:id).reject(&:blank?)
self.ldp_source.graph.set_value(::RDF::Vocab::DC.hasPart, ids)
self._master_files = mfs
end

def destroy
# attempt to stop the matterhorn processing job
self.master_files.each(&:stop_processing!)
Expand Down
29 changes: 29 additions & 0 deletions config/initializers/active_fedora_general.rb
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,32 @@ def changes
end
end
end

ActiveFedora::Associations::IndirectlyContainsAssociation.class_eval do
def insert_record(record, force = true, validate = true)
container.save!
if force
record.save!
else
return false unless record.save(validate: validate)
end

save_through_record(record)

owner.send(:attribute_will_change!, reflection.name)
owner.resource << ::RDF::Statement(owner.resource, reflection.predicate, record.id)
owner.save

true
end

private

def delete_record(record)
record_proxy_finder.find(record).delete

owner.send(:attribute_will_change!, reflection.name)
owner.resource.delete({ predicate: reflection.predicate, object: record.id})
owner.save
end
end

0 comments on commit 5d2fd57

Please sign in to comment.