Curation Concerns: What Lies Beneath - mlibrary/hydra-prototype GitHub Wiki

  • lib/engine.rb
    • isolate_namespace CurationConcerns
    • config.autoload_paths += config.root/lib
    • requires curation_concerns/routes
  • controller_resource.rb
    • performs voodoo on CanCan::ControllerResource
  • rails generate curation_concerns:work ScholarlyPaper
    • app/models/scholarly_paper.rb
    • app/actors/curation_concerns/scholarly_paper_actor.rb
    • app/controllers/curation_concerns/scholarly_papers_controller.rb
    • app/views/curation_concerns/scholarly_papers/.keep
    • spec/factories/scholarly_paper_factory.rb
    • spec/models/scholarly_paper_spec.rb
    • spec/actors/curation_concerns/scholarly_paper_actor_spec.rb
    • spec/controllers/curation_concerns/scholarly_papers_controller_spec.rb
    • injects: config.register_curation_concern :#{file_name}
  • app โ€”- controllers, forms, helpers, presenters, jobs
  • curation_concerns-models โ€”- kind its own sub-engine? (yes)
    • what are registered curation concern types??
      • app/models/curation_concerns/classify_concern
    • app
      • models
        • concerns
          • curation_concerns
            • collection_behavior.rb
              • include Hydra::AccessControls::WithAccessRight
              • include Hydra::Collection - include https://github.com/projecthydra/hydra-collections
                • include includes
                  • include Hydra::Works::CollectionBeahvior
                  • include Hydra::WithDepositor
                  • include Hydra::AccessControl::Permissions
                  • include Hydra::Collection::Metadata
                  • include Hydra::Works::CollectionBehavior (again?)
                  • include add_members
              • include CurationConcerns::Noid
              • include CurationConcerns::HumanReadableType
              • include CurationConcerns::HasRepresentative
              • include CurationConcerns::Permissions
              • bytes
              • add_member
              • can_be_member_of_collection?(collection)
              • can_add_to_members?(collectible)
                • (clever code to check whether youโ€™re adding a collection to itself?)
            • generic_work_behavior.rb
            • generic_file_behavior.rb
              • include Hydra::Works::GenericFileBehavior
              • include Hydra::Works::GenericFile::VirusCheck
              • include Hydra::WithDepositor
              • include CurationConcerns::Serializers
              • include CurationConcerns::Noid
              • include CurationConcerns::GenericFile::Derivatives
              • include CurationConcerns::Permissions
              • include CurationConcerns::GenericFile::Characterization
              • include CurationConcerns::BasicMetadata
              • include CurationConcerns::GenericFile::Content
              • include CurationConcerns::GenericFile::FullTextIndexing
              • include CurationConcerns::GenericFile::Indexing
              • include CurationConcerns::GenericFile::BelongsToWorks
                • inherit access control from parent object, which is the first parent
                • related_files - siblings of ALL the parent objects
                • remove_representative_relationship โ€” ah: there you go โ€” thumbnails are representative of an object, vs. members
              • include CurationConcerns::GenericFile::BelongsToUploadSets
                • sets up belongs_to :upload_set, ActiveFedora::RDF::Fcrepo::RelsExt.isPartOf
              • include CurationConcerns::HumanReadableType
              • include Hydra::AccessControls::Embargoable
            • generic_file
              • derivatives.rb < :GenericFile:Derivatives
                • Hydra::Derivatives.source_file_service = CurationConcerns::LocalFileService
                • Hydra::Derivatives.output_file_service = CurationConcerns::PersistDerivatives
                • create_derivatives(filename) - creates thumbnails to local files?
                • https://github.com/projecthydra/hydra-derivatives
          • human_readable_type.rb < :HumanReadableType
            • sets up the human readable version of the class name via name.demodulize.titleize
          • permissions.rb < :Permissions
            • includes
              • CurationConcerns::Permissions::Writable
              • CurationConcerns::Permissions::Readable
          • has_representative.rb < :HasRepresentative
      • services

hydra-collections: https://github.com/projecthydra/hydra-collections - "The collection does not confer access rights onto any of the members of the collections.โ€ Includes mb/portfolio functionality/integration โ€” collections can be made from anything thatโ€™s collectible, e.g. Hydra::Works::GenericWorkBehavior.