Sha256: 3e4f764caca58c43635e1308f14c0f26835e1ee129db0e3e5df1ea45c26181b3

Contents?: true

Size: 1.49 KB

Versions: 8

Compression:

Stored size: 1.49 KB

Contents

module Sufia
  #
  # Generates CSV from a FileSet
  #
  # @attr_reader [FileSet] file_set file that will be examined to generate the CSVs
  # @attr_reader [Array] terms list of terms that will be output in CSV form
  # @attr_reader [String] multi_value_separator separator for terms that have more than one value
  class FileSetCSVService
    attr_reader :file_set, :terms, :multi_value_separator

    # @param [SolrDocument] file solr document that will be examined to generate the CSVs
    # @param [Array]        terms list of terms that will be output in CSV form
    #                       defaults if nil to list below
    # @param [String]       multi_value_separator separator for terms that have more than one value
    #                       defaults to '|'
    def initialize(file, terms = nil, multi_value_separator = '|')
      @file_set = file
      @terms = terms
      @terms ||= [:id, :title, :depositor, :creator, :visibility, :resource_type, :rights, :file_format]
      @multi_value_separator = multi_value_separator
    end

    # provide csv version of the GenericFile
    def csv
      ::CSV.generate do |csv|
        csv << terms.map do |term|
          values = file_set.send(term)
          values = values.respond_to?(:to_a) ? values.to_a : [values] # make sure we have an array
          values.join(multi_value_separator)
        end
      end
    end

    # provide csv header line for a GenericFile
    def csv_header
      ::CSV.generate do |csv|
        csv << terms
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
sufia-7.4.1 app/services/sufia/file_set_csv_service.rb
sufia-7.4.0 app/services/sufia/file_set_csv_service.rb
sufia-7.3.1 app/services/sufia/file_set_csv_service.rb
sufia-7.3.0 app/services/sufia/file_set_csv_service.rb
sufia-7.3.0.rc3 app/services/sufia/file_set_csv_service.rb
sufia-7.3.0.rc2 app/services/sufia/file_set_csv_service.rb
sufia-7.3.0.rc1 app/services/sufia/file_set_csv_service.rb
sufia-7.2.0 app/services/sufia/file_set_csv_service.rb