Sha256: f936d9bf9393dfab269a735b499bf123884502249d31e0cd4af4b463d9aafe20

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module CurationConcern
  module Model
    extend ActiveSupport::Concern

    module ClassMethods
      def human_readable_type
        name.demodulize.titleize
      end
    end

    included do
      include Sufia::ModelMethods
      include Curate::ActiveModelAdaptor
      include Hydra::Collections::Collectible
      include Solrizer::Common

      has_metadata 'properties', type: Curate::PropertiesDatastream
      has_attributes :relative_path, :depositor, :owner, :representative, datastream: :properties, multiple: false
      class_attribute :human_readable_short_description
    end

    def human_readable_type
      self.class.human_readable_type
    end

    def as_json(options)
      { pid: pid, title: title, model: self.class.to_s, curation_concern_type: human_readable_type }
    end

    def to_solr(solr_doc={}, opts={})
      super(solr_doc, opts)
      index_collection_pids(solr_doc)
      solr_doc[Solrizer.solr_name('noid', Sufia::GenericFile.noid_indexer)] = noid
      solr_doc[Solrizer.solr_name('human_readable_type',:facetable)] = human_readable_type
      solr_doc[Solrizer.solr_name('human_readable_type', :stored_searchable)] = human_readable_type
      add_derived_date_created(solr_doc)
      return solr_doc
    end

    def to_s
      title
    end

    # Returns a string identifying the path associated with the object. ActionPack uses this to find a suitable partial to represent the object.
    def to_partial_path 
      "curation_concern/#{super}"
    end

protected

    # A searchable date field that is derived from the (text) field date_created
    def add_derived_date_created(solr_doc)
      if self.respond_to?(:date_created)
        self.class.create_and_insert_terms('date_created_derived', derived_dates, [:dateable], solr_doc)
      end
    end

    def derived_dates
      dates = Array(date_created)
      dates.map { |date| Curate::DateFormatter.parse(date.to_s).to_s }
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
curate-0.5.4 app/repository_models/curation_concern/model.rb
curate-0.5.2 app/repository_models/curation_concern/model.rb