lib/hydra/pcdm/models/concerns/collection_behavior.rb in hydra-pcdm-0.9.0 vs lib/hydra/pcdm/models/concerns/collection_behavior.rb in hydra-pcdm-0.10.0

- old
+ new

@@ -1,14 +1,15 @@ module Hydra::PCDM - # behavior: + ## + # Implements behavior for PCDM collections. + # + # The behavior is summarized as: # 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 @@ -16,39 +17,57 @@ included do type Vocab::PCDMTerms.Collection include ::Hydra::PCDM::PcdmBehavior end + ## + # @see ActiveSupport::Concern module ClassMethods + ## + # @return [Class] the indexer class def indexer Hydra::PCDM::CollectionIndexer end + ## + # @return [Class] the validator class def type_validator Validators::PCDMCollectionValidator end end + ## + # @return [Enumerable<PCDM::CollectionBehavior>] def collections members.select(&:pcdm_collection?) end + ## + # @return [Enumerable<String>] def collection_ids members.select(&:pcdm_collection?).map(&:id) end + ## + # @return [Enumerable<PCDM::CollectionBehavior>] def ordered_collections ordered_members.to_a.select(&:pcdm_collection?) end + ## + # @return [Enumerable<String>] def ordered_collection_ids ordered_collections.map(&:id) end + ## + # @return [Boolean] whether this instance is a PCDM Object. def pcdm_object? false end + ## + # @return [Boolean] whether this instance is a PCDM Collection. def pcdm_collection? true end end end