dog_biscuits 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +115 -0
  3. data/.codeclimate.yml +52 -0
  4. data/.gitignore +24 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +45 -0
  7. data/.rubocop_todo.yml +92 -0
  8. data/.travis.yml +18 -0
  9. data/CODE_OF_CONDUCT.md +36 -0
  10. data/CONTRIBUTING.md +161 -0
  11. data/Gemfile +40 -0
  12. data/LICENSE +14 -0
  13. data/README.md +98 -0
  14. data/Rakefile +35 -0
  15. data/SUPPORT.md +5 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +7 -0
  18. data/dog_biscuits.gemspec +38 -0
  19. data/lib/dog_biscuits.rb +352 -0
  20. data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
  21. data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
  22. data/lib/dog_biscuits/blacklight/commands.rb +118 -0
  23. data/lib/dog_biscuits/configuration.rb +506 -0
  24. data/lib/dog_biscuits/importers/authority.rb +65 -0
  25. data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
  26. data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
  27. data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
  28. data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
  29. data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
  30. data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
  31. data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
  32. data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
  33. data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
  34. data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
  35. data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
  36. data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
  37. data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
  38. data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
  39. data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
  40. data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
  41. data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
  42. data/lib/dog_biscuits/models/authorities/event.rb +74 -0
  43. data/lib/dog_biscuits/models/authorities/place.rb +86 -0
  44. data/lib/dog_biscuits/models/authorities/project.rb +60 -0
  45. data/lib/dog_biscuits/models/authority.rb +42 -0
  46. data/lib/dog_biscuits/models/collections/collection.rb +32 -0
  47. data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
  48. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
  49. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
  50. data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
  51. data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
  52. data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
  53. data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
  54. data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
  55. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
  56. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
  57. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
  58. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
  59. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
  60. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
  61. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
  62. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
  63. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
  64. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
  65. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
  66. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
  67. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
  68. data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
  69. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
  70. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
  71. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
  72. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
  73. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
  74. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
  75. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
  76. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
  77. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
  78. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
  79. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
  80. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
  81. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
  82. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
  83. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
  84. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
  85. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
  86. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
  87. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
  88. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
  89. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
  90. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
  91. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
  92. data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
  93. data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
  94. data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
  95. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
  96. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
  97. data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
  98. data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
  99. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
  100. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
  101. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
  102. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
  103. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
  104. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
  105. data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
  106. data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
  107. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
  108. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
  109. data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
  110. data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
  111. data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
  112. data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
  113. data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
  114. data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
  115. data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
  116. data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
  117. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
  118. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
  119. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
  120. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
  121. data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
  122. data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
  123. data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
  124. data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
  125. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
  126. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
  127. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
  128. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
  129. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
  130. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
  131. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
  132. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
  133. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
  134. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
  135. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
  136. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
  137. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
  138. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
  139. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
  140. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
  141. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
  142. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
  143. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
  144. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
  145. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
  146. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
  147. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
  148. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
  149. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
  150. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
  151. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
  152. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
  153. data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
  154. data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
  155. data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
  156. data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
  157. data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
  158. data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
  159. data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
  160. data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
  161. data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
  162. data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
  163. data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
  164. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
  165. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
  166. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
  167. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
  168. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
  169. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
  170. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
  171. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
  172. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
  173. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
  174. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
  175. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
  176. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
  177. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
  178. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
  179. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
  180. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
  181. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
  182. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
  183. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
  184. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
  185. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
  186. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
  187. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
  188. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
  189. data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
  190. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
  191. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
  192. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
  193. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
  194. data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
  195. data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
  196. data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
  197. data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
  198. data/lib/dog_biscuits/models/work.rb +37 -0
  199. data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
  200. data/lib/dog_biscuits/models/works/dataset.rb +42 -0
  201. data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
  202. data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
  203. data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
  204. data/lib/dog_biscuits/models/works/package.rb +47 -0
  205. data/lib/dog_biscuits/models/works/published_work.rb +38 -0
  206. data/lib/dog_biscuits/models/works/thesis.rb +34 -0
  207. data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
  208. data/lib/dog_biscuits/railtie.rb +13 -0
  209. data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
  210. data/lib/dog_biscuits/services/terms.rb +57 -0
  211. data/lib/dog_biscuits/services/terms_service.rb +162 -0
  212. data/lib/dog_biscuits/solr/index_types.rb +33 -0
  213. data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
  214. data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
  215. data/lib/dog_biscuits/validators/label_validator.rb +55 -0
  216. data/lib/dog_biscuits/validators/place_validator.rb +10 -0
  217. data/lib/dog_biscuits/version.rb +5 -0
  218. data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
  219. data/lib/dog_biscuits/vocab/generic.rb +204 -0
  220. data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
  221. data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
  222. data/lib/dog_biscuits/vocab/uketd.rb +45 -0
  223. data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
  224. data/lib/generators/dog_biscuits/USAGE +50 -0
  225. data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
  226. data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
  227. data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
  228. data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
  229. data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
  230. data/lib/generators/dog_biscuits/install_generator.rb +82 -0
  231. data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
  232. data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
  233. data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
  234. data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
  235. data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
  236. data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
  237. data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
  238. data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
  239. data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
  240. data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
  241. data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
  242. data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
  243. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
  244. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
  245. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
  246. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
  247. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
  248. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
  249. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
  250. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
  251. data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
  252. data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
  253. data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
  254. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
  255. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
  256. data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
  257. data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
  258. data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
  259. data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
  260. data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
  261. data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
  262. data/lib/generators/dog_biscuits/work/USAGE +35 -0
  263. data/lib/generators/dog_biscuits/work/templates/README +31 -0
  264. data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
  265. data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
  266. data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
  267. data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
  268. data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
  269. data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
  270. data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
  271. data/lib/tasks/authorities.rake +22 -0
  272. metadata +476 -0
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Project < Authority
5
+ include DogBiscuits::FoafName
6
+ include DogBiscuits::GenericAuthorityTerms
7
+ include DogBiscuits::Identifier
8
+ include DogBiscuits::Funder
9
+
10
+ type [::RDF::URI.new('http://xmlns.com/foaf/0.1/Project')]
11
+
12
+ def agent?
13
+ false
14
+ end
15
+
16
+ def concept?
17
+ false
18
+ end
19
+
20
+ def concept_scheme?
21
+ false
22
+ end
23
+
24
+ def event?
25
+ false
26
+ end
27
+
28
+ def group?
29
+ false
30
+ end
31
+
32
+ def organisation?
33
+ false
34
+ end
35
+
36
+ def person?
37
+ false
38
+ end
39
+
40
+ def place?
41
+ false
42
+ end
43
+
44
+ def project?
45
+ true
46
+ end
47
+
48
+ # Generate a rdfs label from the name parts. Overwrite the existing label.
49
+ def add_label
50
+ self.rdfs_label = name if name.present?
51
+ self.rdfs_label += " (id: #{identifier.join})" if identifier.present?
52
+ add_preflabel
53
+ end
54
+
55
+ # Generate a preflabel from rdfs label.
56
+ def add_preflabel
57
+ self.preflabel = rdfs_label
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # All authority classes inherit from this.
5
+ class Authority < ActiveFedora::Base
6
+ include DogBiscuits::CommonLabels
7
+ include DogBiscuits::SkosNote
8
+ include DogBiscuits::ValidateLabel
9
+
10
+ before_save :add_label
11
+
12
+ belongs_to :concept_scheme,
13
+ class_name: 'DogBiscuits::ConceptScheme',
14
+ predicate: ::RDF::Vocab::SKOS.inScheme
15
+
16
+ def authority?
17
+ true
18
+ end
19
+
20
+ def work?
21
+ false
22
+ end
23
+
24
+ def file_set?
25
+ false
26
+ end
27
+
28
+ def collection?
29
+ false
30
+ end
31
+
32
+ def edit_groups
33
+ ['admin']
34
+ end
35
+
36
+ # Ensure rdfs label and pref label and the same. Prefer preflabel.
37
+ def add_label
38
+ self.rdfs_label = preflabel if preflabel.present?
39
+ self.preflabel = rdfs_label if rdfs_label.present?
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ class Collection < ActiveFedora::Base
5
+ include ::Hyrax::CollectionBehavior
6
+ include DogBiscuits::CommonMetadata
7
+
8
+ def authority?
9
+ false
10
+ end
11
+
12
+ def agent?
13
+ false
14
+ end
15
+
16
+ def work?
17
+ false
18
+ end
19
+
20
+ def file_set?
21
+ false
22
+ end
23
+
24
+ def collection?
25
+ true
26
+ end
27
+
28
+ def self.indexer
29
+ CollectionIndexer
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Behaviour only used where data is being pulled in from the PURE CRIS system.
5
+ module PureSpecificBehaviour
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ before_save :add_pure_type
10
+
11
+ def add_pure_type
12
+ rdf_type << DogBiscuits::Vocab::PureTerms.Organisation unless pure_uuid.nil? && organisation?
13
+ rdf_type << DogBiscuits::Vocab::PureTerms.Person unless pure_uuid.nil? && person?
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate see also references.
5
+ module ValidateConceptRelated
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::ConceptRelatedValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validates members of a concept scheme.
5
+ module ValidateConceptScheme
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ def self.type_validator
10
+ Hydra::PCDM::Validators::CompositeValidator.new(
11
+ DogBiscuits::ConceptSchemeMemberValidator
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate labels.
5
+ module ValidateLabel
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::LabelValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ # Validate place name.
5
+ module ValidatePlace
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ validates_with DogBiscuits::PlaceValidator
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module WorkBehaviour
5
+ extend ActiveSupport::Concern
6
+
7
+ # In order to be used, the work classes require various 'Behaviors' from Hyrax
8
+ # In Hyrax, this is included like so:
9
+ # include Hyrax::WorkBehavior
10
+
11
+ # When using these models within a Hyrax application, the WorkBehavior mixin is added to the model
12
+ # We can also include it here, but that means 'double-loading'
13
+ # Also, Hyrax::NestedWorks is one of the mixins included in WorkBehavior and this will cause an error:
14
+ # RuntimeError: Circular dependency detected in calling app
15
+
16
+ # The approach taken is *not* to include behavior within DogBiscuits, but instead leave it to the calling Hyrax
17
+ # application to do so.
18
+
19
+ # For spec tests, these are performed on the generated model in Hyrax *not* on the DogBiscuits model
20
+ end
21
+ end
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module ExtendedSolrDocument
5
+ extend ActiveSupport::Concern
6
+
7
+ # Duplicated from https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
8
+
9
+ class_methods do
10
+ def attribute(name, type, field)
11
+ define_method name do
12
+ type.coerce(self[field])
13
+ end
14
+ end
15
+
16
+ def solr_name(*args)
17
+ ActiveFedora.index_field_mapper.solr_name(*args)
18
+ end
19
+ end
20
+
21
+ module Solr
22
+ class Array
23
+ # @return [Array]
24
+ def self.coerce(input)
25
+ ::Array.wrap(input)
26
+ end
27
+ end
28
+
29
+ class String
30
+ # @return [String]
31
+ def self.coerce(input)
32
+ ::Array.wrap(input).first
33
+ end
34
+ end
35
+
36
+ class Date
37
+ # @return [Date]
38
+ def self.coerce(input)
39
+ field = String.coerce(input)
40
+ return if field.blank?
41
+ begin
42
+ ::Date.parse(field)
43
+ rescue ArgumentError
44
+ Rails.logger.info "Unable to parse date: #{field.first.inspect}"
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ # Keep these alphebetized; comments indicate those in basic_metadata
51
+ # see https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
52
+ included do
53
+ attribute :abstract, Solr::Array, solr_name('abstract')
54
+ attribute :access_provided_by, Solr::Array, solr_name('access_provided_by')
55
+ attribute :advisor, Solr::Array, solr_name('advisor')
56
+ attribute :alt, Solr::Array, solr_name('alt')
57
+ attribute :awarding_institution, Solr::Array, solr_name('awarding_institution')
58
+ # based_near and based_near
59
+ attribute :content_version, Solr::Array, solr_name('content_version')
60
+ # contributor
61
+ # creator
62
+ attribute :date, Solr::Array, solr_name('date')
63
+ attribute :date_accepted, Solr::Array, solr_name('date_accepted')
64
+ attribute :date_available, Solr::Array, solr_name('date_available')
65
+ attribute :date_collected, Solr::Array, solr_name('date_collected')
66
+ attribute :date_copyrighted, Solr::Array, solr_name('date_copyrighted')
67
+ attribute :date_issued, Solr::Array, solr_name('date_issued')
68
+ # date_created
69
+ attribute :date_of_award, Solr::Array, solr_name('date_of_award')
70
+ attribute :date_published, Solr::Array, solr_name('date_published')
71
+ attribute :date_submitted, Solr::Array, solr_name('date_submitted')
72
+ attribute :date_updated, Solr::Array, solr_name('date_updated')
73
+ attribute :date_valid, Solr::Array, solr_name('date_valid')
74
+ attribute :dc_access_rights, Solr::Array, solr_name('dc_access_rights')
75
+ attribute :department, Solr::Array, solr_name('department')
76
+ # description
77
+ attribute :doi, Solr::Array, solr_name('doi')
78
+ attribute :edition, Solr::Array, solr_name('edition')
79
+ attribute :editor, Solr::Array, solr_name('editor')
80
+ attribute :end_date, Solr::Array, solr_name('end_date')
81
+ attribute :event_date, Solr::Array, solr_name('event_date')
82
+ attribute :extent, Solr::Array, solr_name('extent')
83
+ attribute :dc_format, Solr::Array, solr_name('dc_format')
84
+ attribute :former_identifier, Solr::Array, solr_name('former_identifier')
85
+ attribute :funder, Solr::Array, solr_name('funder')
86
+ attribute :resource_type_general, Solr::Array, solr_name('resource_type_general')
87
+ attribute :has_restriction, Solr::Array, solr_name('has_restriction')
88
+ # rubocop:enable Naming/PredicateName
89
+
90
+ # identifier
91
+ attribute :isbn, Solr::Array, solr_name('isbn')
92
+ attribute :issue_number, Solr::Array, solr_name('issue_number')
93
+ # keyword
94
+ # language
95
+ attribute :last_access, Solr::Array, solr_name('last_access')
96
+ attribute :lat, Solr::Array, solr_name('lat')
97
+ # license
98
+ attribute :location, Solr::Array, solr_name('location')
99
+ attribute :long, Solr::Array, solr_name('long')
100
+ attribute :managing_organisation, Solr::Array, solr_name('managing_organisation')
101
+ attribute :module_code, Solr::Array, solr_name('module_code')
102
+ attribute :note, Solr::Array, solr_name('note')
103
+ attribute :number_of_downloads, Solr::Array, solr_name('last_access')
104
+ attribute :official_url, Solr::Array, solr_name('official_url')
105
+ attribute :output_of, Solr::Array, solr_name('output_of')
106
+ attribute :official_url, Solr::Array, solr_name('official_url')
107
+ attribute :packaged_by_ids, Solr::Array, solr_name('packaged_by_ids', :symbol)
108
+ attribute :package_ids, Solr::Array, solr_name('package_ids', :symbol)
109
+ attribute :pagination, Solr::Array, solr_name('pagination')
110
+ attribute :part, Solr::Array, solr_name('part')
111
+ attribute :place_of_publication, Solr::Array, solr_name('place_of_publication')
112
+ attribute :presented_at, Solr::Array, solr_name('presented_at')
113
+ attribute :part_of, Solr::Array, solr_name('part_of')
114
+ attribute :project, Solr::Array, solr_name('project')
115
+ attribute :publication_status, Solr::Array, solr_name('publication_status')
116
+ # publisher
117
+ attribute :qualification_level, Solr::Array, solr_name('qualification_level')
118
+ attribute :qualification_name, Solr::Array, solr_name('qualification_name')
119
+ attribute :refereed, Solr::Array, solr_name('refereed')
120
+ attribute :related_url, Solr::Array, solr_name('related_url')
121
+ # resource_type
122
+ # rights_statement
123
+ attribute :series, Solr::Array, solr_name('series')
124
+ # source
125
+ attribute :start_date, Solr::Array, solr_name('start_date')
126
+ # subject
127
+ attribute :subtitle, Solr::Array, solr_name('subtitle')
128
+ attribute :volume_number, Solr::Array, solr_name('volume_number')
129
+ # archivematica
130
+ attribute :aip_uuid, Solr::Array, solr_name('aip_uuid')
131
+ attribute :transfer_uuid, Solr::Array, solr_name('transfer_uuid')
132
+ attribute :sip_uuid, Solr::Array, solr_name('sip_uuid')
133
+ attribute :dip_uuid, Solr::Array, solr_name('dip_uuid')
134
+ attribute :aip_status, Solr::Array, solr_name('aip_status')
135
+ attribute :dip_status, Solr::Array, solr_name('dip_status')
136
+ attribute :aip_size, Solr::Array, solr_name('aip_size')
137
+ attribute :dip_size, Solr::Array, solr_name('dip_size')
138
+ attribute :aip_current_path, Solr::Array, solr_name('aip_current_path')
139
+ attribute :dip_current_path, Solr::Array, solr_name('dip_current_path')
140
+ attribute :aip_current_location, Solr::Array, solr_name('aip_current_location')
141
+ attribute :dip_current_location, Solr::Array, solr_name('dip_current_location')
142
+ attribute :aip_resource_uri, Solr::Array, solr_name('aip_resource_uri')
143
+ attribute :dip_resource_uri, Solr::Array, solr_name('dip_resource_uri')
144
+ attribute :origin_pipeline, Solr::Array, solr_name('origin_pipeline')
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DogBiscuits
4
+ module Archivematica
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ property :aip_uuid,
9
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipUuid do |index|
10
+ index.as :stored_searchable
11
+ end
12
+ property :transfer_uuid,
13
+ predicate: DogBiscuits::Vocab::OaisArchivematica.transferUuid do |index|
14
+ index.as :stored_searchable
15
+ end
16
+ property :sip_uuid,
17
+ predicate: DogBiscuits::Vocab::OaisArchivematica.sipUuid do |index|
18
+ index.as :stored_searchable
19
+ end
20
+ property :dip_uuid,
21
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipUuid do |index|
22
+ index.as :stored_searchable
23
+ end
24
+ property :aip_status,
25
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipStatus do |index|
26
+ index.as :stored_searchable
27
+ end
28
+ property :dip_status,
29
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipStatus do |index|
30
+ index.as :stored_searchable
31
+ end
32
+ property :aip_size,
33
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipSize do |index|
34
+ index.as :stored_searchable
35
+ end
36
+ property :dip_size,
37
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipSize do |index|
38
+ index.as :stored_searchable
39
+ end
40
+ property :aip_current_path,
41
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipCurrentPath do |index|
42
+ index.as :stored_searchable
43
+ end
44
+ property :dip_current_path,
45
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipCurrentPath do |index|
46
+ index.as :stored_searchable
47
+ end
48
+ property :aip_current_location,
49
+ predicate:
50
+ DogBiscuits::Vocab::OaisArchivematica.aipCurrentLocation do |index|
51
+ index.as :stored_searchable
52
+ end
53
+ property :dip_current_location,
54
+ predicate:
55
+ DogBiscuits::Vocab::OaisArchivematica.dipCurrentLocation do |index|
56
+ index.as :stored_searchable
57
+ end
58
+ property :aip_resource_uri,
59
+ predicate: DogBiscuits::Vocab::OaisArchivematica.aipResourceUri do |index|
60
+ index.as :stored_searchable
61
+ end
62
+ property :dip_resource_uri,
63
+ predicate: DogBiscuits::Vocab::OaisArchivematica.dipResourceUri do |index|
64
+ index.as :stored_searchable
65
+ end
66
+ # This will always be the same for both AIP and DIP
67
+ property :origin_pipeline,
68
+ predicate: DogBiscuits::Vocab::OaisArchivematica.originPipeline do |index|
69
+ index.as :stored_searchable
70
+ end
71
+ end
72
+ end
73
+ end