Sha256: 7961e971130d163ad71a5add7e6cc4fa3e54095686ecac7cca157ac00c67a056

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

module Hydra::PCDM
  # behavior:
  #   1) Hydra::PCDM::Collection can aggregate (pcdm:hasMember)  Hydra::PCDM::Collection (no infinite loop, e.g., A -> B -> C -> A)
  #   2) Hydra::PCDM::Collection can aggregate (pcdm:hasMember)  Hydra::PCDM::Object
  #   3) Hydra::PCDM::Collection can aggregate (ore:aggregates) Hydra::PCDM::Object  (Object related to the Collection)

  #   4) Hydra::PCDM::Collection can NOT aggregate non-PCDM object
  #   5) Hydra::PCDM::Collection can NOT contain (pcdm:hasFile)  Hydra::PCDM::File

  #   6) Hydra::PCDM::Collection can have descriptive metadata
  #   7) Hydra::PCDM::Collection can have access metadata
  #
  module CollectionBehavior
    extend ActiveSupport::Concern

    included do
      type Vocab::PCDMTerms.Collection
      include ::Hydra::PCDM::PcdmBehavior
    end

    module ClassMethods
      def indexer
        Hydra::PCDM::CollectionIndexer
      end

      def type_validator
      end
    end

    def collections
      members.select(&:pcdm_collection?)
    end

    def collection_ids
      members.select(&:pcdm_collection?).map(&:id)
    end

    def ordered_collections
      ordered_members.to_a.select(&:pcdm_collection?)
    end

    def ordered_collection_ids
      ordered_collections.map(&:id)
    end

    def pcdm_object?
      false
    end

    def pcdm_collection?
      true
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hydra-pcdm-0.5.0 lib/hydra/pcdm/models/concerns/collection_behavior.rb
hydra-pcdm-0.4.0 lib/hydra/pcdm/models/concerns/collection_behavior.rb