Sha256: b23a6024c7adbd812cbc5e75573597f4fffde0d6fb2bfc14116b43cc7a0bbdba

Contents?: true

Size: 1 KB

Versions: 33

Compression:

Stored size: 1 KB

Contents

module ActiveFedora
  class FilePathBuilder
    # Builds a relative path for a file
    def self.build(digital_object, name, prefix)
      name = nil if name == ''
      prefix ||= 'DS'
      name || generate_dsid(digital_object, prefix)
    end

    # 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.
    def self.generate_dsid(digital_object, prefix)
      return unless digital_object
      matches = digital_object.attached_files.keys.map {|d| data = /^#{prefix}(\d+)$/.match(d); data && data[1].to_i}.compact
      val = matches.empty? ? 1 : matches.max + 1
      format_dsid(prefix, val)
    end

    ### Provided so that an application can override how generated ids are formatted (e.g DS01 instead of DS1)
    def self.format_dsid(prefix, suffix)
      sprintf("%s%i", prefix,suffix)
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
active-fedora-9.0.8 lib/active_fedora/file_path_builder.rb
active-fedora-9.5.0 lib/active_fedora/file_path_builder.rb
active-fedora-9.4.3 lib/active_fedora/file_path_builder.rb
active-fedora-9.4.2 lib/active_fedora/file_path_builder.rb
active-fedora-9.4.1 lib/active_fedora/file_path_builder.rb
active-fedora-9.4.0 lib/active_fedora/file_path_builder.rb
active-fedora-9.3.0 lib/active_fedora/file_path_builder.rb
active-fedora-9.2.1 lib/active_fedora/file_path_builder.rb
active-fedora-9.2.0 lib/active_fedora/file_path_builder.rb
active-fedora-9.2.0.rc2 lib/active_fedora/file_path_builder.rb
active-fedora-9.2.0.rc1 lib/active_fedora/file_path_builder.rb
active-fedora-9.1.2 lib/active_fedora/file_path_builder.rb
active-fedora-9.1.1 lib/active_fedora/file_path_builder.rb
active-fedora-9.1.0 lib/active_fedora/file_path_builder.rb
active-fedora-9.1.0.rc1 lib/active_fedora/file_path_builder.rb
active-fedora-9.0.6 lib/active_fedora/file_path_builder.rb
active-fedora-9.0.5 lib/active_fedora/file_path_builder.rb
active-fedora-9.0.4 lib/active_fedora/file_path_builder.rb
active-fedora-9.0.3 lib/active_fedora/file_path_builder.rb
active-fedora-9.0.2 lib/active_fedora/file_path_builder.rb