class ActiveFedora::FilePathBuilder
def self.build(digital_object, name, prefix)
def self.build(digital_object, name, prefix) name = nil if name == '' prefix ||= 'DS' name || generate_dsid(digital_object, prefix) end
def self.format_dsid(prefix, suffix)
def self.format_dsid(prefix, suffix) format "%s%i", prefix, suffix end
def self.generate_dsid(digital_object, prefix)
return a valid dsid that is not currently in use. Uses a prefix (default "DS") and an auto-incrementing integer
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