Sha256: 906ace9749b6e7d0673587a938b0fd6261426f06c4b35b66394f08deb6632df4

Contents?: true

Size: 1.66 KB

Versions: 18

Compression:

Stored size: 1.66 KB

Contents

# Attributes and methods for raster works
module GeoConcerns
  module RasterWorkBehavior
    extend ActiveSupport::Concern
    include ::GeoConcerns::MetadataExtractionHelper

    included do
      type [Hydra::PCDM::Vocab::PCDMTerms.Object,
            Hydra::Works::Vocab::WorksTerms.GenericWork,
            ::GeoConcerns::GeoTerms.RasterWork]
    end

    def raster_files
      members.select(&:raster_file?)
    end

    def metadata_files
      members.select(&:external_metadata_file?)
    end

    def vector_works
      members.select(&:vector_work?)
    end

    # Defines type by what it is and isn't
    # @return [Boolean]
    def image_work?
      false
    end

    def image_file?
      false
    end

    def raster_work?
      true
    end

    def raster_file?
      false
    end

    def vector_work?
      false
    end

    def vector_file?
      false
    end

    def external_metadata_file?
      false
    end

    # Retrieve all Image Works for which georeferencing generates this Raster Work
    # @return [Array]
    def image_works
      ordered_by.select do |parent|
        parent.class.included_modules.include?(::GeoConcerns::ImageWorkBehavior)
      end
    end

    # Retrieve the only Image Works for which georeferencing generates this Raster Work
    # @return [GeoConcerns::ImageWork]
    def image_work
      image_works.first
    end

    def to_solr(solr_doc = {})
      super.tap do |doc|
        doc[solr_name("ordered_by", :symbol)] ||= []
        doc[solr_name("ordered_by", :symbol)] += send(:ordered_by_ids)
      end
    end

    private

      def solr_name(*args)
        ActiveFedora.index_field_mapper.solr_name(*args)
      end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
geo_concerns-0.3.4 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.3.3 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.3.2 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.3.1 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.3.0 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.2.0 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.1.1 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.1.0 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.10 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.9 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.8 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.7 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.6 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.5 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.4 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.3 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.2 app/models/concerns/geo_concerns/raster_work_behavior.rb
geo_concerns-0.0.1 app/models/concerns/geo_concerns/raster_work_behavior.rb