class ActiveFedora::FilePathBuilder
Public Class Methods
build(digital_object, name, prefix)
click to toggle source
Builds a relative path for a file
# File lib/active_fedora/file_path_builder.rb, line 4 def self.build(digital_object, name, prefix) name = nil if name == '' prefix ||= 'DS' name || generate_dsid(digital_object, prefix) end
format_dsid(prefix, suffix)
click to toggle source
Provided so that an application can override how generated ids are formatted (e.g DS01 instead of DS1)
# File lib/active_fedora/file_path_builder.rb, line 23 def self.format_dsid(prefix, suffix) format "%s%i", prefix, suffix end
generate_dsid(digital_object, prefix)
click to toggle source
return a valid dsid that is not currently in use. Uses a prefix (default “DS”) and an auto-incrementing integer Example: if there are already datastreams with IDs DS1 and DS2, this method will return DS3. If you specify FOO as the prefix, it will return FOO1.
# File lib/active_fedora/file_path_builder.rb, line 12 def self.generate_dsid(digital_object, prefix) return unless digital_object matches = digital_object.attached_files.keys.map do |d| data = /^#{prefix}(\d+)$/.match(d) data && data[1].to_i end.compact val = matches.empty? ? 1 : matches.max + 1 format_dsid(prefix, val) end