geo_works 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +34 -0
  3. data/.csslintrc +2 -0
  4. data/.engine_cart.yml +1 -0
  5. data/.eslintignore +1 -0
  6. data/.eslintrc +8 -0
  7. data/.fcrepo_wrapper +3 -0
  8. data/.gitignore +14 -0
  9. data/.rubocop.yml +105 -0
  10. data/.solr_wrapper +7 -0
  11. data/.travis.yml +33 -0
  12. data/CONTRIBUTING.md +159 -0
  13. data/Gemfile +48 -0
  14. data/LICENSE +202 -0
  15. data/README.md +143 -0
  16. data/Rakefile +25 -0
  17. data/app/assets/images/geo_works/.keep +0 -0
  18. data/app/assets/images/geo_works/images/geocoder.png +0 -0
  19. data/app/assets/images/geo_works/images/move-handle.png +0 -0
  20. data/app/assets/images/geo_works/images/resize-handle.png +0 -0
  21. data/app/assets/images/geo_works/images/throbber.gif +0 -0
  22. data/app/assets/javascripts/geo_works/Control.Geocoder.js +1056 -0
  23. data/app/assets/javascripts/geo_works/application.js +4 -0
  24. data/app/assets/javascripts/geo_works/bounding_box_selector.js +107 -0
  25. data/app/assets/javascripts/geo_works/es6-modules.js +7 -0
  26. data/app/assets/javascripts/geo_works/geo_works_boot.es6 +8 -0
  27. data/app/assets/javascripts/geo_works/leaflet-boundingbox.js +467 -0
  28. data/app/assets/javascripts/geo_works/relationships.js +3 -0
  29. data/app/assets/javascripts/geo_works/relationships/child_works.es6 +20 -0
  30. data/app/assets/javascripts/geo_works/relationships/parent_works.es6 +20 -0
  31. data/app/assets/javascripts/geo_works/relationships/related_works.es6 +187 -0
  32. data/app/assets/stylesheets/geo_works/Control.Geocoder.scss +104 -0
  33. data/app/assets/stylesheets/geo_works/application.css +18 -0
  34. data/app/assets/stylesheets/geo_works/bounding_box.scss +15 -0
  35. data/app/assets/stylesheets/geo_works/leaflet-boundingbox.scss +17 -0
  36. data/app/assets/stylesheets/geo_works/related_works.scss +29 -0
  37. data/app/assets/stylesheets/geo_works/thumbnails.scss +13 -0
  38. data/app/controllers/concerns/geo_works/events_behavior.rb +29 -0
  39. data/app/controllers/concerns/geo_works/file_sets_controller_behavior.rb +31 -0
  40. data/app/controllers/concerns/geo_works/geoblacklight_controller_behavior.rb +29 -0
  41. data/app/controllers/concerns/geo_works/image_works_controller_behavior.rb +9 -0
  42. data/app/controllers/concerns/geo_works/raster_works_controller_behavior.rb +9 -0
  43. data/app/controllers/concerns/geo_works/vector_works_controller_behavior.rb +9 -0
  44. data/app/forms/geo_works/basic_geo_metadata_form.rb +9 -0
  45. data/app/forms/geo_works/external_metadata_file_form.rb +8 -0
  46. data/app/forms/geo_works/georeferenced_form.rb +9 -0
  47. data/app/forms/hyrax/image_work_form.rb +7 -0
  48. data/app/forms/hyrax/raster_work_form.rb +8 -0
  49. data/app/forms/hyrax/vector_work_form.rb +8 -0
  50. data/app/helpers/geo_works/application_helper.rb +4 -0
  51. data/app/helpers/geo_works/bounding_box_helper.rb +73 -0
  52. data/app/helpers/geo_works/file_set_actions_helper.rb +31 -0
  53. data/app/helpers/geo_works/geo_works_helper.rb +22 -0
  54. data/app/helpers/geo_works/populate_metadata_helper.rb +7 -0
  55. data/app/jobs/geoblacklight_job.rb +10 -0
  56. data/app/jobs/geoserver_delivery_job.rb +36 -0
  57. data/app/models/concerns/geo_works/ability.rb +12 -0
  58. data/app/models/concerns/geo_works/basic_geo_metadata.rb +21 -0
  59. data/app/models/concerns/geo_works/external_metadata_file_behavior.rb +31 -0
  60. data/app/models/concerns/geo_works/extractors/fgdc_helper.rb +9 -0
  61. data/app/models/concerns/geo_works/extractors/fgdc_metadata_extractor.rb +114 -0
  62. data/app/models/concerns/geo_works/extractors/iso19139_helper.rb +50 -0
  63. data/app/models/concerns/geo_works/extractors/mods_helper.rb +15 -0
  64. data/app/models/concerns/geo_works/file_set_metadata.rb +15 -0
  65. data/app/models/concerns/geo_works/file_set_presenter_behavior.rb +7 -0
  66. data/app/models/concerns/geo_works/geo_file_format_behavior.rb +37 -0
  67. data/app/models/concerns/geo_works/geo_file_set_behavior.rb +11 -0
  68. data/app/models/concerns/geo_works/georeferenced_behavior.rb +18 -0
  69. data/app/models/concerns/geo_works/image_file_behavior.rb +14 -0
  70. data/app/models/concerns/geo_works/image_work_behavior.rb +69 -0
  71. data/app/models/concerns/geo_works/metadata_extraction_helper.rb +27 -0
  72. data/app/models/concerns/geo_works/raster_file_behavior.rb +14 -0
  73. data/app/models/concerns/geo_works/raster_work_behavior.rb +82 -0
  74. data/app/models/concerns/geo_works/solr_document_behavior.rb +46 -0
  75. data/app/models/concerns/geo_works/vector_file_behavior.rb +14 -0
  76. data/app/models/concerns/geo_works/vector_work_behavior.rb +78 -0
  77. data/app/presenters/geo_works/geo_works_show_presenter.rb +48 -0
  78. data/app/presenters/geo_works/image_work_show_presenter.rb +5 -0
  79. data/app/presenters/geo_works/raster_work_show_presenter.rb +5 -0
  80. data/app/presenters/geo_works/vector_work_show_presenter.rb +5 -0
  81. data/app/processors/geo_works/geoblacklight_event_processor.rb +29 -0
  82. data/app/processors/geo_works/geoblacklight_event_processor/delete_processor.rb +13 -0
  83. data/app/processors/geo_works/geoblacklight_event_processor/processor.rb +28 -0
  84. data/app/processors/geo_works/geoblacklight_event_processor/unknown_event.rb +15 -0
  85. data/app/processors/geo_works/geoblacklight_event_processor/update_processor.rb +15 -0
  86. data/app/processors/geo_works/processors/base_geo_processor.rb +81 -0
  87. data/app/processors/geo_works/processors/gdal.rb +49 -0
  88. data/app/processors/geo_works/processors/image.rb +66 -0
  89. data/app/processors/geo_works/processors/ogr.rb +19 -0
  90. data/app/processors/geo_works/processors/raster.rb +26 -0
  91. data/app/processors/geo_works/processors/raster/aig.rb +40 -0
  92. data/app/processors/geo_works/processors/raster/base.rb +41 -0
  93. data/app/processors/geo_works/processors/raster/dem.rb +29 -0
  94. data/app/processors/geo_works/processors/raster/info.rb +52 -0
  95. data/app/processors/geo_works/processors/rendering.rb +79 -0
  96. data/app/processors/geo_works/processors/vector.rb +24 -0
  97. data/app/processors/geo_works/processors/vector/base.rb +44 -0
  98. data/app/processors/geo_works/processors/vector/info.rb +84 -0
  99. data/app/processors/geo_works/processors/vector/shapefile.rb +20 -0
  100. data/app/processors/geo_works/processors/zip.rb +29 -0
  101. data/app/renderers/geo_works/coverage_renderer.rb +39 -0
  102. data/app/runners/geo_works/runners/raster_derivatives.rb +9 -0
  103. data/app/runners/geo_works/runners/vector_derivatives.rb +9 -0
  104. data/app/schemas/geo_works/basic_geo_metadata_optional.rb +40 -0
  105. data/app/schemas/geo_works/basic_geo_metadata_required.rb +25 -0
  106. data/app/schemas/geo_works/file_set_metadata_required.rb +5 -0
  107. data/app/services/geo_works/authority_service.rb +29 -0
  108. data/app/services/geo_works/delivery/geoserver.rb +118 -0
  109. data/app/services/geo_works/delivery_service.rb +11 -0
  110. data/app/services/geo_works/discovery.rb +4 -0
  111. data/app/services/geo_works/discovery/abstract_document.rb +37 -0
  112. data/app/services/geo_works/discovery/document_builder.rb +46 -0
  113. data/app/services/geo_works/discovery/document_builder/basic_metadata_builder.rb +71 -0
  114. data/app/services/geo_works/discovery/document_builder/composite_builder.rb +21 -0
  115. data/app/services/geo_works/discovery/document_builder/date_builder.rb +53 -0
  116. data/app/services/geo_works/discovery/document_builder/document_helper.rb +10 -0
  117. data/app/services/geo_works/discovery/document_builder/document_path.rb +91 -0
  118. data/app/services/geo_works/discovery/document_builder/layer_info_builder.rb +65 -0
  119. data/app/services/geo_works/discovery/document_builder/references_builder.rb +101 -0
  120. data/app/services/geo_works/discovery/document_builder/slug_builder.rb +24 -0
  121. data/app/services/geo_works/discovery/document_builder/spatial_builder.rb +37 -0
  122. data/app/services/geo_works/discovery/document_builder/wxs.rb +76 -0
  123. data/app/services/geo_works/discovery/geoblacklight_document.rb +152 -0
  124. data/app/services/geo_works/events_generator.rb +24 -0
  125. data/app/services/geo_works/events_generator/composite_generator.rb +18 -0
  126. data/app/services/geo_works/events_generator/geoblacklight_event_generator.rb +53 -0
  127. data/app/services/geo_works/events_generator/geoserver_event_generator.rb +33 -0
  128. data/app/services/geo_works/file_set_derivatives_service.rb +67 -0
  129. data/app/services/geo_works/image_format_service.rb +6 -0
  130. data/app/services/geo_works/metadata_format_service.rb +6 -0
  131. data/app/services/geo_works/raster_format_service.rb +6 -0
  132. data/app/services/geo_works/vector_format_service.rb +6 -0
  133. data/app/services/hyrax/curation_concern.rb +18 -0
  134. data/app/values/geo_works/coverage.rb +36 -0
  135. data/app/values/geo_works/time_period.rb +30 -0
  136. data/app/views/geo_works/_attribute_rows.html.erb +4 -0
  137. data/app/views/geo_works/_form_progress.html.erb +50 -0
  138. data/app/views/geo_works/_guts4form.html.erb +47 -0
  139. data/app/views/geo_works/_member.html.erb +11 -0
  140. data/app/views/geo_works/_metadata.html.erb +13 -0
  141. data/app/views/geo_works/_relationships.html.erb +12 -0
  142. data/app/views/geo_works/_representative_media.html.erb +5 -0
  143. data/app/views/geo_works/file_sets/_form.html.erb +48 -0
  144. data/app/views/geo_works/file_sets/actions/_default_actions.html.erb +16 -0
  145. data/app/views/geo_works/file_sets/actions/_image_actions.html.erb +22 -0
  146. data/app/views/geo_works/file_sets/actions/_metadata_actions.html.erb +16 -0
  147. data/app/views/geo_works/file_sets/actions/_raster_actions.html.erb +25 -0
  148. data/app/views/geo_works/file_sets/actions/_vector_actions.html.erb +25 -0
  149. data/app/views/geo_works/file_sets/media_display/_geo.html.erb +16 -0
  150. data/app/views/geo_works/file_sets/new.html.erb +12 -0
  151. data/app/views/geo_works/related/_child_member.html.erb +13 -0
  152. data/app/views/geo_works/related/_child_works.html.erb +24 -0
  153. data/app/views/geo_works/related/_external_metadata_file_member.html.erb +11 -0
  154. data/app/views/geo_works/related/_external_metadata_files.html.erb +24 -0
  155. data/app/views/geo_works/related/_geo_files.html.erb +24 -0
  156. data/app/views/geo_works/related/_new_child_member.html.erb +22 -0
  157. data/app/views/geo_works/related/_new_parent_member.html.erb +13 -0
  158. data/app/views/geo_works/related/_parent_member.html.erb +13 -0
  159. data/app/views/geo_works/related/_parent_works.html.erb +22 -0
  160. data/app/views/hyrax/image_works/_file_actions.html.erb +8 -0
  161. data/app/views/hyrax/image_works/_form.html.erb +16 -0
  162. data/app/views/hyrax/image_works/_image_actions.html.erb +11 -0
  163. data/app/views/hyrax/image_works/_image_work.html.erb +2 -0
  164. data/app/views/hyrax/image_works/_show_actions.html.erb +22 -0
  165. data/app/views/hyrax/image_works/show.html.erb +31 -0
  166. data/app/views/hyrax/raster_works/_file_actions.html.erb +8 -0
  167. data/app/views/hyrax/raster_works/_form.html.erb +16 -0
  168. data/app/views/hyrax/raster_works/_raster_actions.html.erb +11 -0
  169. data/app/views/hyrax/raster_works/_raster_work.html.erb +2 -0
  170. data/app/views/hyrax/raster_works/_show_actions.html.erb +22 -0
  171. data/app/views/hyrax/raster_works/show.html.erb +31 -0
  172. data/app/views/hyrax/vector_works/_file_actions.html.erb +8 -0
  173. data/app/views/hyrax/vector_works/_form.html.erb +16 -0
  174. data/app/views/hyrax/vector_works/_show_actions.html.erb +22 -0
  175. data/app/views/hyrax/vector_works/_vector_actions.html.erb +11 -0
  176. data/app/views/hyrax/vector_works/_vector_work.html.erb +2 -0
  177. data/app/views/hyrax/vector_works/show.html.erb +31 -0
  178. data/app/views/records/edit_fields/_coverage.html.erb +3 -0
  179. data/app/views/records/edit_fields/_should_populate_metadata.html.erb +10 -0
  180. data/app/vocabs/geo_works/geo_terms.rb +12 -0
  181. data/config/discovery/geoblacklight-schema.json +214 -0
  182. data/config/fcrepo_wrapper_test.yml +3 -0
  183. data/config/geoblacklight.yml +12 -0
  184. data/config/geoserver.yml +27 -0
  185. data/config/initializers/geo_server.rb +17 -0
  186. data/config/initializers/geoblacklight_config.rb +18 -0
  187. data/config/initializers/simpler_tiles.rb +65 -0
  188. data/config/locales/image_work.en.yml +8 -0
  189. data/config/locales/raster_work.en.yml +8 -0
  190. data/config/locales/vector_work.en.yml +8 -0
  191. data/config/routes.rb +24 -0
  192. data/config/simpler_tiles.yml +24 -0
  193. data/config/solr_wrapper_test.yml +7 -0
  194. data/docker-compose-full.yml +30 -0
  195. data/docker-compose.yml +9 -0
  196. data/geo_works.gemspec +44 -0
  197. data/lib/generators/geo_works/install_generator.rb +152 -0
  198. data/lib/generators/geo_works/templates/actors/hyrax/actors/image_work_actor.rb +6 -0
  199. data/lib/generators/geo_works/templates/actors/hyrax/actors/raster_work_actor.rb +6 -0
  200. data/lib/generators/geo_works/templates/actors/hyrax/actors/vector_work_actor.rb +6 -0
  201. data/lib/generators/geo_works/templates/config/authorities/image_formats.yml +7 -0
  202. data/lib/generators/geo_works/templates/config/authorities/metadata_formats.yml +7 -0
  203. data/lib/generators/geo_works/templates/config/authorities/raster_formats.yml +13 -0
  204. data/lib/generators/geo_works/templates/config/authorities/vector_formats.yml +7 -0
  205. data/lib/generators/geo_works/templates/config/initializers/hyrax_derivative_path_monkey_patch.rb +18 -0
  206. data/lib/generators/geo_works/templates/controllers/hyrax/file_sets_controller.rb +7 -0
  207. data/lib/generators/geo_works/templates/controllers/hyrax/image_works_controller.rb +7 -0
  208. data/lib/generators/geo_works/templates/controllers/hyrax/raster_works_controller.rb +8 -0
  209. data/lib/generators/geo_works/templates/controllers/hyrax/vector_works_controller.rb +8 -0
  210. data/lib/generators/geo_works/templates/geo_works.js +1 -0
  211. data/lib/generators/geo_works/templates/geo_works.scss +3 -0
  212. data/lib/generators/geo_works/templates/models/file_set.rb +4 -0
  213. data/lib/generators/geo_works/templates/models/image_work.rb +7 -0
  214. data/lib/generators/geo_works/templates/models/raster_work.rb +8 -0
  215. data/lib/generators/geo_works/templates/models/vector_work.rb +8 -0
  216. data/lib/generators/geo_works/templates/presenters/file_set_presenter.rb +3 -0
  217. data/lib/generators/geo_works/templates/spec/actor_spec.rb.erb +9 -0
  218. data/lib/generators/geo_works/templates/spec/controller_spec.rb.erb +9 -0
  219. data/lib/generators/geo_works/templates/spec/model_spec.rb.erb +9 -0
  220. data/lib/geo_works.rb +9 -0
  221. data/lib/geo_works/engine.rb +4 -0
  222. data/lib/geo_works/version.rb +3 -0
  223. data/lib/tasks/geo_works_tasks.rake +4 -0
  224. data/run-docker.sh +16 -0
  225. data/solr/config/_rest_managed.json +3 -0
  226. data/solr/config/admin-extra.html +31 -0
  227. data/solr/config/elevate.xml +36 -0
  228. data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
  229. data/solr/config/protwords.txt +21 -0
  230. data/solr/config/schema.xml +372 -0
  231. data/solr/config/scripts.conf +24 -0
  232. data/solr/config/solrconfig.xml +321 -0
  233. data/solr/config/spellings.txt +2 -0
  234. data/solr/config/stopwords.txt +58 -0
  235. data/solr/config/stopwords_en.txt +58 -0
  236. data/solr/config/synonyms.txt +31 -0
  237. data/solr/config/xslt/example.xsl +132 -0
  238. data/solr/config/xslt/example_atom.xsl +67 -0
  239. data/solr/config/xslt/example_rss.xsl +66 -0
  240. data/solr/config/xslt/luke.xsl +337 -0
  241. data/spec/controllers/file_sets_controller_spec.rb +70 -0
  242. data/spec/controllers/image_works_controller_spec.rb +40 -0
  243. data/spec/controllers/raster_works_controller_spec.rb +36 -0
  244. data/spec/controllers/vector_works_controller_spec.rb +69 -0
  245. data/spec/factories/collections.rb +17 -0
  246. data/spec/factories/external_metadata_files.rb +20 -0
  247. data/spec/factories/image_files.rb +32 -0
  248. data/spec/factories/image_works.rb +69 -0
  249. data/spec/factories/permission_templates.rb +41 -0
  250. data/spec/factories/raster_files.rb +35 -0
  251. data/spec/factories/raster_works.rb +88 -0
  252. data/spec/factories/sipity_entities.rb +7 -0
  253. data/spec/factories/users.rb +26 -0
  254. data/spec/factories/vector_files.rb +31 -0
  255. data/spec/factories/vector_works.rb +84 -0
  256. data/spec/factories/workflow_states.rb +6 -0
  257. data/spec/factories/workflows.rb +6 -0
  258. data/spec/features/create_image_work_spec.rb +34 -0
  259. data/spec/features/create_raster_work_spec.rb +35 -0
  260. data/spec/features/create_vector_work_spec.rb +34 -0
  261. data/spec/features/image_work_show_spec.rb +62 -0
  262. data/spec/features/raster_work_show_spec.rb +62 -0
  263. data/spec/features/vector_work_show_spec.rb +61 -0
  264. data/spec/forms/geo_works/basic_geo_metadata_form_spec.rb +31 -0
  265. data/spec/forms/geo_works/external_metadata_file_form_spec.rb +30 -0
  266. data/spec/forms/geo_works/georeferenced_form_spec.rb +33 -0
  267. data/spec/forms/hyrax/image_work_form_spec.rb +11 -0
  268. data/spec/forms/hyrax/raster_work_form_spec.rb +17 -0
  269. data/spec/forms/hyrax/vector_work_form_spec.rb +17 -0
  270. data/spec/helpers/bounding_box_helper_spec.rb +39 -0
  271. data/spec/helpers/geo_works/file_set_actions_helper_spec.rb +70 -0
  272. data/spec/helpers/geo_works/populate_metadata_helper_spec.rb +31 -0
  273. data/spec/helpers/geo_works_helper_spec.rb +30 -0
  274. data/spec/jobs/geoblacklight_job_spec.rb +18 -0
  275. data/spec/jobs/geoserver_delivery_job_spec.rb +45 -0
  276. data/spec/models/concerns/basic_geo_metadata_spec.rb +21 -0
  277. data/spec/models/concerns/geo_works/file_set/derivatives_spec.rb +102 -0
  278. data/spec/models/concerns/geo_works/file_set/geo_file_format_behavior_spec.rb +56 -0
  279. data/spec/models/external_metadata_file_spec.rb +118 -0
  280. data/spec/models/file_set_spec.rb +9 -0
  281. data/spec/models/image_file_spec.rb +48 -0
  282. data/spec/models/image_work_spec.rb +71 -0
  283. data/spec/models/raster_file_spec.rb +48 -0
  284. data/spec/models/raster_work_spec.rb +122 -0
  285. data/spec/models/solr_document_spec.rb +41 -0
  286. data/spec/models/vector_file_spec.rb +48 -0
  287. data/spec/models/vector_work_spec.rb +109 -0
  288. data/spec/presenters/file_set_presenter_spec.rb +13 -0
  289. data/spec/presenters/geo_works_show_presenter_spec.rb +46 -0
  290. data/spec/presenters/image_work_show_presenter_spec.rb +51 -0
  291. data/spec/presenters/raster_work_show_presenter_spec.rb +74 -0
  292. data/spec/presenters/vector_work_show_presenter_spec.rb +41 -0
  293. data/spec/processors/geo_works/geoblacklight_event_processor_spec.rb +80 -0
  294. data/spec/processors/geo_works/processors/base_geo_processor_spec.rb +115 -0
  295. data/spec/processors/geo_works/processors/gdal_spec.rb +59 -0
  296. data/spec/processors/geo_works/processors/image_spec.rb +64 -0
  297. data/spec/processors/geo_works/processors/ogr_spec.rb +36 -0
  298. data/spec/processors/geo_works/processors/raster/aig_spec.rb +35 -0
  299. data/spec/processors/geo_works/processors/raster/base_spec.rb +54 -0
  300. data/spec/processors/geo_works/processors/raster/dem_spec.rb +30 -0
  301. data/spec/processors/geo_works/processors/raster/info_spec.rb +35 -0
  302. data/spec/processors/geo_works/processors/raster/processor_spec.rb +39 -0
  303. data/spec/processors/geo_works/processors/rendering_spec.rb +64 -0
  304. data/spec/processors/geo_works/processors/vector/base_spec.rb +54 -0
  305. data/spec/processors/geo_works/processors/vector/info_spec.rb +50 -0
  306. data/spec/processors/geo_works/processors/vector/processor_spec.rb +28 -0
  307. data/spec/processors/geo_works/processors/vector/shapefile_spec.rb +17 -0
  308. data/spec/processors/geo_works/processors/zip_spec.rb +39 -0
  309. data/spec/renderers/geo_works/coverage_renderer_spec.rb +21 -0
  310. data/spec/services/geo_works/delivery/geoserver_spec.rb +117 -0
  311. data/spec/services/geo_works/delivery_service_spec.rb +24 -0
  312. data/spec/services/geo_works/discovery/abstract_document_spec.rb +23 -0
  313. data/spec/services/geo_works/discovery/document_builder/basic_metadata_builder_spec.rb +35 -0
  314. data/spec/services/geo_works/discovery/document_builder/wxs_spec.rb +71 -0
  315. data/spec/services/geo_works/discovery/document_builder_spec.rb +220 -0
  316. data/spec/services/geo_works/discovery/geoblacklight_document_spec.rb +20 -0
  317. data/spec/services/geo_works/event_generator_spec.rb +18 -0
  318. data/spec/services/geo_works/events_generator/geoblacklight_event_generator_spec.rb +84 -0
  319. data/spec/services/geo_works/events_generator/geoserver_event_generator_spec.rb +22 -0
  320. data/spec/services/geo_works/raster_format_service_spec.rb +13 -0
  321. data/spec/services/hyrax/derivative_path_spec.rb +26 -0
  322. data/spec/spec_helper.rb +77 -0
  323. data/spec/support/backport_test.rb +14 -0
  324. data/spec/support/controllers/engine_helpers.rb +7 -0
  325. data/spec/support/database_cleaner.rb +18 -0
  326. data/spec/support/factory_girl.rb +3 -0
  327. data/spec/support/features.rb +14 -0
  328. data/spec/support/features/session_helpers.rb +40 -0
  329. data/spec/support/fixture_reader.rb +7 -0
  330. data/spec/support/helpers/controller_level_helpers.rb +27 -0
  331. data/spec/support/views/test_view_helpers.rb +10 -0
  332. data/spec/test_app_templates/lib/generators/test_app_generator.rb +24 -0
  333. data/spec/values/coverage_spec.rb +40 -0
  334. data/tasks/geo_works.rake +39 -0
  335. data/template.rb +10 -0
  336. metadata +789 -0
@@ -0,0 +1,3 @@
1
+ #config/fcrepo_wrapper_test.yml.sample
2
+ port: 8986
3
+ enable_jms: false
@@ -0,0 +1,12 @@
1
+ defaults: &defaults
2
+ adapter: solr
3
+ url: <%= ENV['GEOBLACKLIGHT_SOLR_URL'] || "http://127.0.0.1:8983/solr/blacklight-core" %>
4
+
5
+ development:
6
+ <<: *defaults
7
+
8
+ test:
9
+ <<: *defaults
10
+
11
+ production:
12
+ <<: *defaults
@@ -0,0 +1,27 @@
1
+ geoserver:
2
+
3
+ # GeoServer config options for open and public data
4
+ open: &open
5
+ # Set to the REST API for the GeoServer
6
+ url: <%= ENV['PUBLIC_GEOSERVER_URL'] || "http://localhost:8181/geoserver/rest" %>
7
+ # Optional user and password, set to false to disable
8
+ user: <%= ENV['PUBLIC_GEOSERVER_USER'] || "admin" %>
9
+ password: <%= ENV['PUBLIC_GEOSERVER_PASSWORD'] || "geoserver" %>
10
+ # Set to your GWC server, or "builtin" for the one bundled with GeoServer
11
+ geowebcache_url: <%= ENV['PUBLIC_GEOSERVER_GWC_URL'] || "builtin" %>
12
+ # Name of the workspace to save your data in
13
+ workspace: <%= ENV['PUBLIC_GEOSERVER_WS'] || "public" %>
14
+ # Path on geoserver machine to mounted/mirrored derivates directory
15
+ derivatives_path: <%= ENV['PUBLIC_GEOSERVER_DERIVATIVES_PATH'] || "/opt/geoserver/data_dir/derivatives" %>
16
+ restclient:
17
+ # Set to false to disable or stdout, stderr, or filename
18
+ logfile: stderr
19
+ # Timeout (in seconds)
20
+ timeout: 300
21
+ # Open Timeout (in seconds)
22
+ open_timeout: 60
23
+
24
+ # GeoServer config options for restricted data or data that needs authentication
25
+ authenticated:
26
+ <<: *open
27
+ workspace: <%= ENV['AUTH_GEOSERVER_WS'] || "restricted" %>
@@ -0,0 +1,17 @@
1
+ module GeoWorks
2
+ module GeoServer
3
+ def config
4
+ @config ||= config_yaml.with_indifferent_access
5
+ end
6
+
7
+ private
8
+
9
+ def config_yaml
10
+ file = File.join(GeoWorks.root, 'config', 'geoserver.yml')
11
+ file = File.join(Rails.root, 'config', 'geoserver.yml') unless File.exist? file
12
+ YAML.load(ERB.new(File.read(file)).result)['geoserver']
13
+ end
14
+
15
+ module_function :config, :config_yaml
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ require 'active_support/core_ext/hash/indifferent_access'
2
+ module GeoWorks
3
+ module Geoblacklight
4
+ def config
5
+ @config ||= config_yaml.with_indifferent_access
6
+ end
7
+
8
+ private
9
+
10
+ def config_yaml
11
+ file = File.join(GeoWorks.root, 'config', 'geoblacklight.yml')
12
+ file = File.join(Rails.root, 'config', 'geoblacklight.yml') unless File.exist? file
13
+ YAML.load(ERB.new(File.read(file)).result)[Rails.env]
14
+ end
15
+
16
+ module_function :config, :config_yaml
17
+ end
18
+ end
@@ -0,0 +1,65 @@
1
+ module SimplerTiles
2
+ class << self
3
+ def config
4
+ @config ||= Configuration.new
5
+ end
6
+ end
7
+
8
+ class Configuration
9
+ attr_reader :settings
10
+ attr_writer :bg_color,
11
+ :fill,
12
+ :stroke,
13
+ :weight,
14
+ :line_cap,
15
+ :line_join,
16
+ :radius
17
+
18
+ def initialize
19
+ @settings ||= File.exist?(config_file) ? YAML.load_file(config_file) : {}
20
+ end
21
+
22
+ def config_file
23
+ File.join(Rails.root, 'config/simpler_tiles.yml')
24
+ end
25
+
26
+ def to_h
27
+ {
28
+ 'stroke' => stroke,
29
+ 'line-cap' => line_cap,
30
+ 'line-join' => line_join,
31
+ 'weight' => weight,
32
+ 'fill' => fill,
33
+ 'radius' => radius
34
+ }
35
+ end
36
+
37
+ def bg_color
38
+ @bg_color ||= settings.fetch('bg_color', '#ffffff00')
39
+ end
40
+
41
+ def fill
42
+ @fill ||= settings.fetch('fill', '#e4e3ea')
43
+ end
44
+
45
+ def stroke
46
+ @stroke ||= settings.fetch('stroke', '#483d8b')
47
+ end
48
+
49
+ def weight
50
+ @weight ||= settings.fetch('weight', '0.3')
51
+ end
52
+
53
+ def line_cap
54
+ @line_cap ||= settings.fetch('line_cap', 'square')
55
+ end
56
+
57
+ def line_join
58
+ @line_join ||= settings.fetch('line_join', 'miter')
59
+ end
60
+
61
+ def radius
62
+ @radius ||= settings.fetch('radius', '2')
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,8 @@
1
+ en:
2
+ hyrax:
3
+ icons:
4
+ image_work: 'fa fa-file-text-o'
5
+ select_type:
6
+ image_work:
7
+ name: "Image Work"
8
+ description: "Geo Images: Scanned Maps"
@@ -0,0 +1,8 @@
1
+ en:
2
+ hyrax:
3
+ icons:
4
+ image_work: 'fa fa-file-text-o'
5
+ select_type:
6
+ raster_work:
7
+ name: "Raster Works"
8
+ description: "Raster Datasets: GeoTIFF"
@@ -0,0 +1,8 @@
1
+ en:
2
+ hyrax:
3
+ icons:
4
+ vector_work: 'fa fa-file-text-o'
5
+ select_type:
6
+ vector_work:
7
+ name: "Vector Works"
8
+ description: "Vector Datasets: Shapefiles, GeoJSON"
data/config/routes.rb ADDED
@@ -0,0 +1,24 @@
1
+ GeoWorks::Engine.routes.draw do
2
+ namespace :hyrax, path: :concern do
3
+ resources :raster_works, only: [:new, :create], path: 'container/:parent_id/raster_works', as: 'member_raster_work'
4
+ resources :vector_works, only: [:new, :create], path: 'container/:parent_id/vector_works', as: 'member_vector_work'
5
+
6
+ resources :image_works, only: [] do
7
+ member do
8
+ get :geoblacklight, defaults: { format: :json }
9
+ end
10
+ end
11
+
12
+ resources :raster_works, only: [] do
13
+ member do
14
+ get :geoblacklight, defaults: { format: :json }
15
+ end
16
+ end
17
+
18
+ resources :vector_works, only: [] do
19
+ member do
20
+ get :geoblacklight, defaults: { format: :json }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # Background color
2
+ # Use '#ffffff' for a solid white background.
3
+ # Add two zeros to a six digit hex color code
4
+ # for a png (does not work with jpeg) image
5
+ # with a transparent background.
6
+ bg_color: '#ffffff00'
7
+
8
+ # The fill color for each shape
9
+ fill: '#e4e3ea'
10
+
11
+ # The stroke color for each line
12
+ stroke: '#483d8b'
13
+
14
+ # Width of line in pixels
15
+ weight: '0.3'
16
+
17
+ # How lines are ended, one of: "butt", "round", "square"
18
+ line_cap: 'square'
19
+
20
+ # How lines are joined together, one of: "miter", "round", "bevel"
21
+ line_join: 'miter'
22
+
23
+ # For point rendering only, the radius in pixels of the circle
24
+ radius: '2'
@@ -0,0 +1,7 @@
1
+ #config/solr_wrapper_test.yml
2
+ # version: 6.2.0
3
+ port: 8985
4
+ collection:
5
+ persist: false
6
+ dir: solr/config
7
+ name: hydra-test
@@ -0,0 +1,30 @@
1
+ version: '2'
2
+ services:
3
+ redis:
4
+ image: redis:3.2.4-alpine
5
+ ports:
6
+ - "6379:6379"
7
+ geoserver:
8
+ image: geoconcerns/geoserver
9
+ ports:
10
+ - "8181:8080"
11
+ geoblacklight:
12
+ image: geoconcerns/geoblacklight
13
+ ports:
14
+ - "3001:3000"
15
+ links:
16
+ - gblsolr:solr
17
+ - rabbitmq
18
+ environment:
19
+ RABBIT_SERVER: amqp://rabbitmq:5672
20
+ gblsolr:
21
+ image: geoconcerns/geoblacklight-solr
22
+ expose:
23
+ - "8983"
24
+ ports:
25
+ - "9983:8983"
26
+ rabbitmq:
27
+ image: rabbitmq:3.6.5-management
28
+ ports:
29
+ - "5672:5672"
30
+ - "15672:15672"
@@ -0,0 +1,9 @@
1
+ version: '2'
2
+ # More services can be found in docker-compose-full.yml
3
+ services:
4
+ geoserver:
5
+ image: geoconcerns/geoserver
6
+ ports:
7
+ - "8181:8080"
8
+ volumes:
9
+ - ./.internal_test_app/tmp/derivatives:/opt/geoserver/data_dir/derivatives
data/geo_works.gemspec ADDED
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'geo_works/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'geo_works'
8
+ spec.version = GeoWorks::VERSION
9
+ spec.authors = [ 'James Griffin', 'Darren Hardy', 'John Huck', 'Eric James', 'Eliot Jordan' ]
10
+ spec.email = ['jrgriffiniii@gmail.com', 'drh@stanford.edu', 'jhuck@ualberta.ca', 'eric.james@yale.edu', 'eliotj@princeton.edu']
11
+ spec.summary = %q{Rails engine for Hydra Geo models. Built around Curation Concerns engine. }
12
+ spec.description = %q{Rails engine for Hydra Geo models. Built around Curation Concerns engine. }
13
+ spec.homepage = 'https://github.com/projecthydra-labs/geo_works'
14
+ spec.license = 'APACHE2'
15
+
16
+ spec.files = `git ls-files | grep -v ^spec/fixtures`.split($\)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.required_ruby_version = '>= 2.2.2' # same as Rails 5
22
+
23
+ spec.add_dependency 'hyrax', '>= 1.0.1', '< 2.0'
24
+ spec.add_dependency 'leaflet-rails', '~> 0.7'
25
+ spec.add_dependency 'json-schema', '>= 2.6.2'
26
+ spec.add_dependency 'rgeoserver', '>= 0.10.0'
27
+ spec.add_dependency 'simpler-tiles'
28
+ spec.add_dependency 'jquery-ui-rails', '~> 5.0.5'
29
+
30
+ spec.add_development_dependency 'bundler', '~> 1.13'
31
+ spec.add_development_dependency 'sqlite3'
32
+ spec.add_development_dependency 'devise', '>= 3.0', '< 5'
33
+ spec.add_development_dependency 'rspec-rails', '>= 3.5.2'
34
+ spec.add_development_dependency 'engine_cart', '~> 1.0', '>= 1.0.1'
35
+ spec.add_development_dependency 'solr_wrapper', '~> 0.18', '>= 0.18.0'
36
+ spec.add_development_dependency 'fcrepo_wrapper', '~> 0.6', '>= 0.6.0'
37
+ spec.add_development_dependency 'pry-byebug'
38
+ spec.add_development_dependency 'database_cleaner', '< 1.1.0'
39
+ spec.add_development_dependency 'rubocop', '~> 0.39'
40
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.4.1'
41
+ spec.add_development_dependency 'factory_girl'
42
+ spec.add_development_dependency 'capybara', '~> 2.7'
43
+ spec.add_development_dependency "poltergeist", "~> 1.5"
44
+ end
@@ -0,0 +1,152 @@
1
+ require 'rails/generators'
2
+
3
+ module GeoWorks
4
+ class Install < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ attr_accessor :class_name
7
+
8
+ def install_routes
9
+ inject_into_file 'config/routes.rb', after: /curation_concerns_embargo_management\s*\n/ do
10
+ " mount GeoWorks::Engine => '/'\n"\
11
+ end
12
+ end
13
+
14
+ def install_ability
15
+ inject_into_file 'app/models/ability.rb', after: "include Hyrax::Ability\n" do
16
+ " include GeoWorks::Ability\n"
17
+ end
18
+ end
19
+
20
+ def register_work
21
+ inject_into_file 'config/initializers/hyrax.rb', after: "Hyrax.config do |config|\n" do
22
+ " # Injected via `rails g geo_works:install`\n" \
23
+ " config.register_curation_concern :vector_work\n" \
24
+ " config.register_curation_concern :raster_work\n" \
25
+ " config.register_curation_concern :image_work\n"
26
+ end
27
+ end
28
+
29
+ def install_raster_work
30
+ @class_name = 'RasterWork'
31
+ install_work
32
+ install_specs
33
+ end
34
+
35
+ def install_vector_work
36
+ @class_name = 'VectorWork'
37
+ install_work
38
+ install_specs
39
+ end
40
+
41
+ def install_image_work
42
+ @class_name = 'ImageWork'
43
+ install_work
44
+ install_specs
45
+ end
46
+
47
+ def install_file_sets_controller
48
+ file_path = 'app/controllers/hyrax/file_sets_controller.rb'
49
+ if File.exist?(file_path)
50
+ inject_into_file file_path, after: /include Hyrax::FileSetsControllerBehavior.*$/ do
51
+ "\n include GeoConcerns::FileSetsControllerBehavior\n" \
52
+ " include GeoConcerns::EventsBehavior\n"
53
+ end
54
+ else
55
+ copy_file 'controllers/hyrax/file_sets_controller.rb', file_path
56
+ end
57
+ end
58
+
59
+ def copy_hyrax_derivate_path_monkey_patch
60
+ file_path = 'config/initializers/hyrax_derivative_path_monkey_patch.rb'
61
+ copy_file file_path, file_path
62
+ end
63
+
64
+ def install_authorities
65
+ %w(metadata image vector raster).each do |type|
66
+ file_path = "config/authorities/#{type}_formats.yml"
67
+ copy_file file_path, file_path
68
+ end
69
+ end
70
+
71
+ def inject_into_file_set
72
+ file_path = 'app/models/file_set.rb'
73
+ if File.exist?(file_path)
74
+ inject_into_file file_path, after: /include ::Hyrax::FileSetBehavior.*$/ do
75
+ "\n # GeoWorks behavior to FileSet.\n" \
76
+ " include ::GeoWorks::GeoFileSetBehavior\n"
77
+ end
78
+ else
79
+ copy_file 'models/file_set.rb', file_path
80
+ end
81
+ end
82
+
83
+ def file_set_presenter
84
+ file_path = 'app/presenters/file_set_presenter.rb'
85
+ if File.exist?(file_path)
86
+ inject_into_file file_path, after: /class FileSetPresenter.*$/ do
87
+ "\n # GeoWorks FileSetPresenter behavior\n" \
88
+ " include ::GeoWorks::FileSetPresenterBehavior\n"
89
+ end
90
+ else
91
+ copy_file 'presenters/file_set_presenter.rb', file_path
92
+ end
93
+ end
94
+
95
+ # Add behaviors to the SolrDocument model
96
+ def inject_solr_document_behavior
97
+ file_path = 'app/models/solr_document.rb'
98
+ if File.exist?(file_path)
99
+ inject_into_file file_path, after: /include Blacklight::Solr::Document.*$/ do
100
+ "\n # Adds GeoWorks behaviors to the SolrDocument.\n" \
101
+ " include GeoWorks::SolrDocumentBehavior\n"
102
+ end
103
+ else
104
+ Rails.logger.info " \e[31mFailure\e[0m GeoWorks requires a SolrDocument object. This generators assumes that the model is defined in the file #{file_path}, which does not exist."
105
+ end
106
+ end
107
+
108
+ def install_js_assets
109
+ file_path = 'app/assets/javascripts/application.js'
110
+ inject_into_file file_path, before: %r{\/\/= require_tree \..*$} do
111
+ "//= require geo_works/application\n" \
112
+ "//= require hyrax\n" \
113
+ "// Require es6 modules after almond is loaded in hyrax.\n" \
114
+ "//= require geo_works/es6-modules\n"
115
+ end
116
+ end
117
+
118
+ def install_css_assets
119
+ file_path = 'app/assets/stylesheets/application.css'
120
+ inject_into_file file_path, before: /\*= require_tree \..*$/ do
121
+ "*= require geo_works/application\n "
122
+ end
123
+ end
124
+
125
+ def inject_derivative_service_into_hyrax_initializer
126
+ file_path = 'config/initializers/hyrax.rb'
127
+ append_to_file file_path do
128
+ "# Add derivative service for GeoWorks\n" \
129
+ "Hyrax::DerivativeService.services = [GeoWorks::FileSetDerivativesService] + Hyrax::DerivativeService.services\n"
130
+ end
131
+ end
132
+
133
+ private
134
+
135
+ def install_work
136
+ name = @class_name.underscore
137
+ model_path = "app/models/#{name}.rb"
138
+ actor_path = "app/actors/hyrax/actors/#{name}_actor.rb"
139
+ controller_path = "app/controllers/hyrax/#{name.pluralize}_controller.rb"
140
+ copy_file "models/#{name}.rb", model_path
141
+ copy_file "actors/hyrax/actors/#{name}_actor.rb", actor_path
142
+ copy_file "controllers/hyrax/#{name.pluralize}_controller.rb", controller_path
143
+ end
144
+
145
+ def install_specs
146
+ name = @class_name.underscore
147
+ template 'spec/model_spec.rb.erb', "spec/models/#{name}_spec.rb"
148
+ template 'spec/actor_spec.rb.erb', "spec/actors/#{name}_actor_spec.rb"
149
+ template 'spec/controller_spec.rb.erb', "spec/controllers/#{name.pluralize}_controller_spec_spec.rb"
150
+ end
151
+ end
152
+ end