Sha256: f5fc84be281297e6a3a878498f625f6169c58727089578f69dc6fd99a56851dc

Contents?: true

Size: 1.03 KB

Versions: 87

Compression:

Stored size: 1.03 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 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

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

Version data entries

87 entries across 87 versions & 1 rubygems

Version Path
active-fedora-15.0.1 lib/active_fedora/file_path_builder.rb
active-fedora-15.0.0 lib/active_fedora/file_path_builder.rb
active-fedora-14.0.1 lib/active_fedora/file_path_builder.rb
active-fedora-14.0.0 lib/active_fedora/file_path_builder.rb
active-fedora-13.3.0 lib/active_fedora/file_path_builder.rb
active-fedora-12.2.4 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.7 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.5 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.4 lib/active_fedora/file_path_builder.rb
active-fedora-12.2.3 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.3 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.2 lib/active_fedora/file_path_builder.rb
active-fedora-13.2.0 lib/active_fedora/file_path_builder.rb
active-fedora-13.1.3 lib/active_fedora/file_path_builder.rb
active-fedora-11.5.6 lib/active_fedora/file_path_builder.rb
active-fedora-12.2.2 lib/active_fedora/file_path_builder.rb
active-fedora-11.2.1 lib/active_fedora/file_path_builder.rb
active-fedora-12.2.1 lib/active_fedora/file_path_builder.rb
active-fedora-12.0.3 lib/active_fedora/file_path_builder.rb
active-fedora-11.5.5 lib/active_fedora/file_path_builder.rb