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.
- checksums.yaml +7 -0
- data/.codeclimate.yml +34 -0
- data/.csslintrc +2 -0
- data/.engine_cart.yml +1 -0
- data/.eslintignore +1 -0
- data/.eslintrc +8 -0
- data/.fcrepo_wrapper +3 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +105 -0
- data/.solr_wrapper +7 -0
- data/.travis.yml +33 -0
- data/CONTRIBUTING.md +159 -0
- data/Gemfile +48 -0
- data/LICENSE +202 -0
- data/README.md +143 -0
- data/Rakefile +25 -0
- data/app/assets/images/geo_works/.keep +0 -0
- data/app/assets/images/geo_works/images/geocoder.png +0 -0
- data/app/assets/images/geo_works/images/move-handle.png +0 -0
- data/app/assets/images/geo_works/images/resize-handle.png +0 -0
- data/app/assets/images/geo_works/images/throbber.gif +0 -0
- data/app/assets/javascripts/geo_works/Control.Geocoder.js +1056 -0
- data/app/assets/javascripts/geo_works/application.js +4 -0
- data/app/assets/javascripts/geo_works/bounding_box_selector.js +107 -0
- data/app/assets/javascripts/geo_works/es6-modules.js +7 -0
- data/app/assets/javascripts/geo_works/geo_works_boot.es6 +8 -0
- data/app/assets/javascripts/geo_works/leaflet-boundingbox.js +467 -0
- data/app/assets/javascripts/geo_works/relationships.js +3 -0
- data/app/assets/javascripts/geo_works/relationships/child_works.es6 +20 -0
- data/app/assets/javascripts/geo_works/relationships/parent_works.es6 +20 -0
- data/app/assets/javascripts/geo_works/relationships/related_works.es6 +187 -0
- data/app/assets/stylesheets/geo_works/Control.Geocoder.scss +104 -0
- data/app/assets/stylesheets/geo_works/application.css +18 -0
- data/app/assets/stylesheets/geo_works/bounding_box.scss +15 -0
- data/app/assets/stylesheets/geo_works/leaflet-boundingbox.scss +17 -0
- data/app/assets/stylesheets/geo_works/related_works.scss +29 -0
- data/app/assets/stylesheets/geo_works/thumbnails.scss +13 -0
- data/app/controllers/concerns/geo_works/events_behavior.rb +29 -0
- data/app/controllers/concerns/geo_works/file_sets_controller_behavior.rb +31 -0
- data/app/controllers/concerns/geo_works/geoblacklight_controller_behavior.rb +29 -0
- data/app/controllers/concerns/geo_works/image_works_controller_behavior.rb +9 -0
- data/app/controllers/concerns/geo_works/raster_works_controller_behavior.rb +9 -0
- data/app/controllers/concerns/geo_works/vector_works_controller_behavior.rb +9 -0
- data/app/forms/geo_works/basic_geo_metadata_form.rb +9 -0
- data/app/forms/geo_works/external_metadata_file_form.rb +8 -0
- data/app/forms/geo_works/georeferenced_form.rb +9 -0
- data/app/forms/hyrax/image_work_form.rb +7 -0
- data/app/forms/hyrax/raster_work_form.rb +8 -0
- data/app/forms/hyrax/vector_work_form.rb +8 -0
- data/app/helpers/geo_works/application_helper.rb +4 -0
- data/app/helpers/geo_works/bounding_box_helper.rb +73 -0
- data/app/helpers/geo_works/file_set_actions_helper.rb +31 -0
- data/app/helpers/geo_works/geo_works_helper.rb +22 -0
- data/app/helpers/geo_works/populate_metadata_helper.rb +7 -0
- data/app/jobs/geoblacklight_job.rb +10 -0
- data/app/jobs/geoserver_delivery_job.rb +36 -0
- data/app/models/concerns/geo_works/ability.rb +12 -0
- data/app/models/concerns/geo_works/basic_geo_metadata.rb +21 -0
- data/app/models/concerns/geo_works/external_metadata_file_behavior.rb +31 -0
- data/app/models/concerns/geo_works/extractors/fgdc_helper.rb +9 -0
- data/app/models/concerns/geo_works/extractors/fgdc_metadata_extractor.rb +114 -0
- data/app/models/concerns/geo_works/extractors/iso19139_helper.rb +50 -0
- data/app/models/concerns/geo_works/extractors/mods_helper.rb +15 -0
- data/app/models/concerns/geo_works/file_set_metadata.rb +15 -0
- data/app/models/concerns/geo_works/file_set_presenter_behavior.rb +7 -0
- data/app/models/concerns/geo_works/geo_file_format_behavior.rb +37 -0
- data/app/models/concerns/geo_works/geo_file_set_behavior.rb +11 -0
- data/app/models/concerns/geo_works/georeferenced_behavior.rb +18 -0
- data/app/models/concerns/geo_works/image_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/image_work_behavior.rb +69 -0
- data/app/models/concerns/geo_works/metadata_extraction_helper.rb +27 -0
- data/app/models/concerns/geo_works/raster_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/raster_work_behavior.rb +82 -0
- data/app/models/concerns/geo_works/solr_document_behavior.rb +46 -0
- data/app/models/concerns/geo_works/vector_file_behavior.rb +14 -0
- data/app/models/concerns/geo_works/vector_work_behavior.rb +78 -0
- data/app/presenters/geo_works/geo_works_show_presenter.rb +48 -0
- data/app/presenters/geo_works/image_work_show_presenter.rb +5 -0
- data/app/presenters/geo_works/raster_work_show_presenter.rb +5 -0
- data/app/presenters/geo_works/vector_work_show_presenter.rb +5 -0
- data/app/processors/geo_works/geoblacklight_event_processor.rb +29 -0
- data/app/processors/geo_works/geoblacklight_event_processor/delete_processor.rb +13 -0
- data/app/processors/geo_works/geoblacklight_event_processor/processor.rb +28 -0
- data/app/processors/geo_works/geoblacklight_event_processor/unknown_event.rb +15 -0
- data/app/processors/geo_works/geoblacklight_event_processor/update_processor.rb +15 -0
- data/app/processors/geo_works/processors/base_geo_processor.rb +81 -0
- data/app/processors/geo_works/processors/gdal.rb +49 -0
- data/app/processors/geo_works/processors/image.rb +66 -0
- data/app/processors/geo_works/processors/ogr.rb +19 -0
- data/app/processors/geo_works/processors/raster.rb +26 -0
- data/app/processors/geo_works/processors/raster/aig.rb +40 -0
- data/app/processors/geo_works/processors/raster/base.rb +41 -0
- data/app/processors/geo_works/processors/raster/dem.rb +29 -0
- data/app/processors/geo_works/processors/raster/info.rb +52 -0
- data/app/processors/geo_works/processors/rendering.rb +79 -0
- data/app/processors/geo_works/processors/vector.rb +24 -0
- data/app/processors/geo_works/processors/vector/base.rb +44 -0
- data/app/processors/geo_works/processors/vector/info.rb +84 -0
- data/app/processors/geo_works/processors/vector/shapefile.rb +20 -0
- data/app/processors/geo_works/processors/zip.rb +29 -0
- data/app/renderers/geo_works/coverage_renderer.rb +39 -0
- data/app/runners/geo_works/runners/raster_derivatives.rb +9 -0
- data/app/runners/geo_works/runners/vector_derivatives.rb +9 -0
- data/app/schemas/geo_works/basic_geo_metadata_optional.rb +40 -0
- data/app/schemas/geo_works/basic_geo_metadata_required.rb +25 -0
- data/app/schemas/geo_works/file_set_metadata_required.rb +5 -0
- data/app/services/geo_works/authority_service.rb +29 -0
- data/app/services/geo_works/delivery/geoserver.rb +118 -0
- data/app/services/geo_works/delivery_service.rb +11 -0
- data/app/services/geo_works/discovery.rb +4 -0
- data/app/services/geo_works/discovery/abstract_document.rb +37 -0
- data/app/services/geo_works/discovery/document_builder.rb +46 -0
- data/app/services/geo_works/discovery/document_builder/basic_metadata_builder.rb +71 -0
- data/app/services/geo_works/discovery/document_builder/composite_builder.rb +21 -0
- data/app/services/geo_works/discovery/document_builder/date_builder.rb +53 -0
- data/app/services/geo_works/discovery/document_builder/document_helper.rb +10 -0
- data/app/services/geo_works/discovery/document_builder/document_path.rb +91 -0
- data/app/services/geo_works/discovery/document_builder/layer_info_builder.rb +65 -0
- data/app/services/geo_works/discovery/document_builder/references_builder.rb +101 -0
- data/app/services/geo_works/discovery/document_builder/slug_builder.rb +24 -0
- data/app/services/geo_works/discovery/document_builder/spatial_builder.rb +37 -0
- data/app/services/geo_works/discovery/document_builder/wxs.rb +76 -0
- data/app/services/geo_works/discovery/geoblacklight_document.rb +152 -0
- data/app/services/geo_works/events_generator.rb +24 -0
- data/app/services/geo_works/events_generator/composite_generator.rb +18 -0
- data/app/services/geo_works/events_generator/geoblacklight_event_generator.rb +53 -0
- data/app/services/geo_works/events_generator/geoserver_event_generator.rb +33 -0
- data/app/services/geo_works/file_set_derivatives_service.rb +67 -0
- data/app/services/geo_works/image_format_service.rb +6 -0
- data/app/services/geo_works/metadata_format_service.rb +6 -0
- data/app/services/geo_works/raster_format_service.rb +6 -0
- data/app/services/geo_works/vector_format_service.rb +6 -0
- data/app/services/hyrax/curation_concern.rb +18 -0
- data/app/values/geo_works/coverage.rb +36 -0
- data/app/values/geo_works/time_period.rb +30 -0
- data/app/views/geo_works/_attribute_rows.html.erb +4 -0
- data/app/views/geo_works/_form_progress.html.erb +50 -0
- data/app/views/geo_works/_guts4form.html.erb +47 -0
- data/app/views/geo_works/_member.html.erb +11 -0
- data/app/views/geo_works/_metadata.html.erb +13 -0
- data/app/views/geo_works/_relationships.html.erb +12 -0
- data/app/views/geo_works/_representative_media.html.erb +5 -0
- data/app/views/geo_works/file_sets/_form.html.erb +48 -0
- data/app/views/geo_works/file_sets/actions/_default_actions.html.erb +16 -0
- data/app/views/geo_works/file_sets/actions/_image_actions.html.erb +22 -0
- data/app/views/geo_works/file_sets/actions/_metadata_actions.html.erb +16 -0
- data/app/views/geo_works/file_sets/actions/_raster_actions.html.erb +25 -0
- data/app/views/geo_works/file_sets/actions/_vector_actions.html.erb +25 -0
- data/app/views/geo_works/file_sets/media_display/_geo.html.erb +16 -0
- data/app/views/geo_works/file_sets/new.html.erb +12 -0
- data/app/views/geo_works/related/_child_member.html.erb +13 -0
- data/app/views/geo_works/related/_child_works.html.erb +24 -0
- data/app/views/geo_works/related/_external_metadata_file_member.html.erb +11 -0
- data/app/views/geo_works/related/_external_metadata_files.html.erb +24 -0
- data/app/views/geo_works/related/_geo_files.html.erb +24 -0
- data/app/views/geo_works/related/_new_child_member.html.erb +22 -0
- data/app/views/geo_works/related/_new_parent_member.html.erb +13 -0
- data/app/views/geo_works/related/_parent_member.html.erb +13 -0
- data/app/views/geo_works/related/_parent_works.html.erb +22 -0
- data/app/views/hyrax/image_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/image_works/_form.html.erb +16 -0
- data/app/views/hyrax/image_works/_image_actions.html.erb +11 -0
- data/app/views/hyrax/image_works/_image_work.html.erb +2 -0
- data/app/views/hyrax/image_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/image_works/show.html.erb +31 -0
- data/app/views/hyrax/raster_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/raster_works/_form.html.erb +16 -0
- data/app/views/hyrax/raster_works/_raster_actions.html.erb +11 -0
- data/app/views/hyrax/raster_works/_raster_work.html.erb +2 -0
- data/app/views/hyrax/raster_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/raster_works/show.html.erb +31 -0
- data/app/views/hyrax/vector_works/_file_actions.html.erb +8 -0
- data/app/views/hyrax/vector_works/_form.html.erb +16 -0
- data/app/views/hyrax/vector_works/_show_actions.html.erb +22 -0
- data/app/views/hyrax/vector_works/_vector_actions.html.erb +11 -0
- data/app/views/hyrax/vector_works/_vector_work.html.erb +2 -0
- data/app/views/hyrax/vector_works/show.html.erb +31 -0
- data/app/views/records/edit_fields/_coverage.html.erb +3 -0
- data/app/views/records/edit_fields/_should_populate_metadata.html.erb +10 -0
- data/app/vocabs/geo_works/geo_terms.rb +12 -0
- data/config/discovery/geoblacklight-schema.json +214 -0
- data/config/fcrepo_wrapper_test.yml +3 -0
- data/config/geoblacklight.yml +12 -0
- data/config/geoserver.yml +27 -0
- data/config/initializers/geo_server.rb +17 -0
- data/config/initializers/geoblacklight_config.rb +18 -0
- data/config/initializers/simpler_tiles.rb +65 -0
- data/config/locales/image_work.en.yml +8 -0
- data/config/locales/raster_work.en.yml +8 -0
- data/config/locales/vector_work.en.yml +8 -0
- data/config/routes.rb +24 -0
- data/config/simpler_tiles.yml +24 -0
- data/config/solr_wrapper_test.yml +7 -0
- data/docker-compose-full.yml +30 -0
- data/docker-compose.yml +9 -0
- data/geo_works.gemspec +44 -0
- data/lib/generators/geo_works/install_generator.rb +152 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/image_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/raster_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/actors/hyrax/actors/vector_work_actor.rb +6 -0
- data/lib/generators/geo_works/templates/config/authorities/image_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/authorities/metadata_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/authorities/raster_formats.yml +13 -0
- data/lib/generators/geo_works/templates/config/authorities/vector_formats.yml +7 -0
- data/lib/generators/geo_works/templates/config/initializers/hyrax_derivative_path_monkey_patch.rb +18 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/file_sets_controller.rb +7 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/image_works_controller.rb +7 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/raster_works_controller.rb +8 -0
- data/lib/generators/geo_works/templates/controllers/hyrax/vector_works_controller.rb +8 -0
- data/lib/generators/geo_works/templates/geo_works.js +1 -0
- data/lib/generators/geo_works/templates/geo_works.scss +3 -0
- data/lib/generators/geo_works/templates/models/file_set.rb +4 -0
- data/lib/generators/geo_works/templates/models/image_work.rb +7 -0
- data/lib/generators/geo_works/templates/models/raster_work.rb +8 -0
- data/lib/generators/geo_works/templates/models/vector_work.rb +8 -0
- data/lib/generators/geo_works/templates/presenters/file_set_presenter.rb +3 -0
- data/lib/generators/geo_works/templates/spec/actor_spec.rb.erb +9 -0
- data/lib/generators/geo_works/templates/spec/controller_spec.rb.erb +9 -0
- data/lib/generators/geo_works/templates/spec/model_spec.rb.erb +9 -0
- data/lib/geo_works.rb +9 -0
- data/lib/geo_works/engine.rb +4 -0
- data/lib/geo_works/version.rb +3 -0
- data/lib/tasks/geo_works_tasks.rake +4 -0
- data/run-docker.sh +16 -0
- data/solr/config/_rest_managed.json +3 -0
- data/solr/config/admin-extra.html +31 -0
- data/solr/config/elevate.xml +36 -0
- data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
- data/solr/config/protwords.txt +21 -0
- data/solr/config/schema.xml +372 -0
- data/solr/config/scripts.conf +24 -0
- data/solr/config/solrconfig.xml +321 -0
- data/solr/config/spellings.txt +2 -0
- data/solr/config/stopwords.txt +58 -0
- data/solr/config/stopwords_en.txt +58 -0
- data/solr/config/synonyms.txt +31 -0
- data/solr/config/xslt/example.xsl +132 -0
- data/solr/config/xslt/example_atom.xsl +67 -0
- data/solr/config/xslt/example_rss.xsl +66 -0
- data/solr/config/xslt/luke.xsl +337 -0
- data/spec/controllers/file_sets_controller_spec.rb +70 -0
- data/spec/controllers/image_works_controller_spec.rb +40 -0
- data/spec/controllers/raster_works_controller_spec.rb +36 -0
- data/spec/controllers/vector_works_controller_spec.rb +69 -0
- data/spec/factories/collections.rb +17 -0
- data/spec/factories/external_metadata_files.rb +20 -0
- data/spec/factories/image_files.rb +32 -0
- data/spec/factories/image_works.rb +69 -0
- data/spec/factories/permission_templates.rb +41 -0
- data/spec/factories/raster_files.rb +35 -0
- data/spec/factories/raster_works.rb +88 -0
- data/spec/factories/sipity_entities.rb +7 -0
- data/spec/factories/users.rb +26 -0
- data/spec/factories/vector_files.rb +31 -0
- data/spec/factories/vector_works.rb +84 -0
- data/spec/factories/workflow_states.rb +6 -0
- data/spec/factories/workflows.rb +6 -0
- data/spec/features/create_image_work_spec.rb +34 -0
- data/spec/features/create_raster_work_spec.rb +35 -0
- data/spec/features/create_vector_work_spec.rb +34 -0
- data/spec/features/image_work_show_spec.rb +62 -0
- data/spec/features/raster_work_show_spec.rb +62 -0
- data/spec/features/vector_work_show_spec.rb +61 -0
- data/spec/forms/geo_works/basic_geo_metadata_form_spec.rb +31 -0
- data/spec/forms/geo_works/external_metadata_file_form_spec.rb +30 -0
- data/spec/forms/geo_works/georeferenced_form_spec.rb +33 -0
- data/spec/forms/hyrax/image_work_form_spec.rb +11 -0
- data/spec/forms/hyrax/raster_work_form_spec.rb +17 -0
- data/spec/forms/hyrax/vector_work_form_spec.rb +17 -0
- data/spec/helpers/bounding_box_helper_spec.rb +39 -0
- data/spec/helpers/geo_works/file_set_actions_helper_spec.rb +70 -0
- data/spec/helpers/geo_works/populate_metadata_helper_spec.rb +31 -0
- data/spec/helpers/geo_works_helper_spec.rb +30 -0
- data/spec/jobs/geoblacklight_job_spec.rb +18 -0
- data/spec/jobs/geoserver_delivery_job_spec.rb +45 -0
- data/spec/models/concerns/basic_geo_metadata_spec.rb +21 -0
- data/spec/models/concerns/geo_works/file_set/derivatives_spec.rb +102 -0
- data/spec/models/concerns/geo_works/file_set/geo_file_format_behavior_spec.rb +56 -0
- data/spec/models/external_metadata_file_spec.rb +118 -0
- data/spec/models/file_set_spec.rb +9 -0
- data/spec/models/image_file_spec.rb +48 -0
- data/spec/models/image_work_spec.rb +71 -0
- data/spec/models/raster_file_spec.rb +48 -0
- data/spec/models/raster_work_spec.rb +122 -0
- data/spec/models/solr_document_spec.rb +41 -0
- data/spec/models/vector_file_spec.rb +48 -0
- data/spec/models/vector_work_spec.rb +109 -0
- data/spec/presenters/file_set_presenter_spec.rb +13 -0
- data/spec/presenters/geo_works_show_presenter_spec.rb +46 -0
- data/spec/presenters/image_work_show_presenter_spec.rb +51 -0
- data/spec/presenters/raster_work_show_presenter_spec.rb +74 -0
- data/spec/presenters/vector_work_show_presenter_spec.rb +41 -0
- data/spec/processors/geo_works/geoblacklight_event_processor_spec.rb +80 -0
- data/spec/processors/geo_works/processors/base_geo_processor_spec.rb +115 -0
- data/spec/processors/geo_works/processors/gdal_spec.rb +59 -0
- data/spec/processors/geo_works/processors/image_spec.rb +64 -0
- data/spec/processors/geo_works/processors/ogr_spec.rb +36 -0
- data/spec/processors/geo_works/processors/raster/aig_spec.rb +35 -0
- data/spec/processors/geo_works/processors/raster/base_spec.rb +54 -0
- data/spec/processors/geo_works/processors/raster/dem_spec.rb +30 -0
- data/spec/processors/geo_works/processors/raster/info_spec.rb +35 -0
- data/spec/processors/geo_works/processors/raster/processor_spec.rb +39 -0
- data/spec/processors/geo_works/processors/rendering_spec.rb +64 -0
- data/spec/processors/geo_works/processors/vector/base_spec.rb +54 -0
- data/spec/processors/geo_works/processors/vector/info_spec.rb +50 -0
- data/spec/processors/geo_works/processors/vector/processor_spec.rb +28 -0
- data/spec/processors/geo_works/processors/vector/shapefile_spec.rb +17 -0
- data/spec/processors/geo_works/processors/zip_spec.rb +39 -0
- data/spec/renderers/geo_works/coverage_renderer_spec.rb +21 -0
- data/spec/services/geo_works/delivery/geoserver_spec.rb +117 -0
- data/spec/services/geo_works/delivery_service_spec.rb +24 -0
- data/spec/services/geo_works/discovery/abstract_document_spec.rb +23 -0
- data/spec/services/geo_works/discovery/document_builder/basic_metadata_builder_spec.rb +35 -0
- data/spec/services/geo_works/discovery/document_builder/wxs_spec.rb +71 -0
- data/spec/services/geo_works/discovery/document_builder_spec.rb +220 -0
- data/spec/services/geo_works/discovery/geoblacklight_document_spec.rb +20 -0
- data/spec/services/geo_works/event_generator_spec.rb +18 -0
- data/spec/services/geo_works/events_generator/geoblacklight_event_generator_spec.rb +84 -0
- data/spec/services/geo_works/events_generator/geoserver_event_generator_spec.rb +22 -0
- data/spec/services/geo_works/raster_format_service_spec.rb +13 -0
- data/spec/services/hyrax/derivative_path_spec.rb +26 -0
- data/spec/spec_helper.rb +77 -0
- data/spec/support/backport_test.rb +14 -0
- data/spec/support/controllers/engine_helpers.rb +7 -0
- data/spec/support/database_cleaner.rb +18 -0
- data/spec/support/factory_girl.rb +3 -0
- data/spec/support/features.rb +14 -0
- data/spec/support/features/session_helpers.rb +40 -0
- data/spec/support/fixture_reader.rb +7 -0
- data/spec/support/helpers/controller_level_helpers.rb +27 -0
- data/spec/support/views/test_view_helpers.rb +10 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +24 -0
- data/spec/values/coverage_spec.rb +40 -0
- data/tasks/geo_works.rake +39 -0
- data/template.rb +10 -0
- metadata +789 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module FileSetsControllerBehavior
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
included do
|
|
5
|
+
self.show_presenter = ::FileSetPresenter
|
|
6
|
+
self.form_class = Hyrax::Forms::FileSetEditForm
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# Render geo file sets form if parent is a geo work
|
|
10
|
+
def new
|
|
11
|
+
if geo?
|
|
12
|
+
render 'geo_works/file_sets/new'
|
|
13
|
+
else
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# inject mime_type into permitted params
|
|
19
|
+
def file_set_params
|
|
20
|
+
super.tap do |permitted_params|
|
|
21
|
+
permitted_params[:geo_mime_type] = params[:file_set][:geo_mime_type]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def geo?
|
|
28
|
+
parent.image_work? || parent.raster_work? || parent.vector_work?
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module GeoblacklightControllerBehavior
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
def geoblacklight
|
|
7
|
+
respond_to do |f|
|
|
8
|
+
f.json do
|
|
9
|
+
if builder.to_hash.fetch(:error, nil)
|
|
10
|
+
render json: builder, status: 404
|
|
11
|
+
else
|
|
12
|
+
render json: builder
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def document_class
|
|
22
|
+
Discovery::GeoblacklightDocument
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def builder
|
|
26
|
+
@builder ||= Discovery::DocumentBuilder.new(presenter, document_class.new)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module BoundingBoxHelper
|
|
3
|
+
##
|
|
4
|
+
# Builds HTML string for bounding box selector tool.
|
|
5
|
+
# Calls boundingBoxSelector javascript function and
|
|
6
|
+
# passes the id of the location input element that it binds to.
|
|
7
|
+
# @param [Symbol] name of property that holds bounding box string
|
|
8
|
+
# @return[String]
|
|
9
|
+
def bbox(property)
|
|
10
|
+
markup = ''
|
|
11
|
+
markup << %(<div id='bbox'></div>)
|
|
12
|
+
markup << bbox_display_inputs
|
|
13
|
+
markup << bbox_script_tag(property)
|
|
14
|
+
markup.html_safe
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# Returns markup for a row of read only bounding box inputs.
|
|
19
|
+
# @return[String]
|
|
20
|
+
# rubocop:disable MethodLength
|
|
21
|
+
def bbox_display_inputs
|
|
22
|
+
%(
|
|
23
|
+
<div class="row bbox-inputs">
|
|
24
|
+
<div class="col-md-3">
|
|
25
|
+
<div class="input-group">
|
|
26
|
+
<span class="input-group-addon"><div>North</div></span>
|
|
27
|
+
<input readonly id="bbox-north" type="text" class="form-control bbox-input">
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="col-md-3">
|
|
31
|
+
<div class="input-group">
|
|
32
|
+
<span class="input-group-addon"><div>East</div></span>
|
|
33
|
+
<input readonly id="bbox-east" type="text" class="form-control bbox-input">
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="col-md-3">
|
|
37
|
+
<div class="input-group">
|
|
38
|
+
<span class="input-group-addon"><div>South</div></span>
|
|
39
|
+
<input readonly id="bbox-south" type="text" class="form-control bbox-input">
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="col-md-3">
|
|
43
|
+
<div class="input-group">
|
|
44
|
+
<span class="input-group-addon"><div>West</div></span>
|
|
45
|
+
<input readonly id="bbox-west" type="text" class="form-control bbox-input">
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
# rubocop:enable MethodLength
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# Returns script tag markup for loading the bounding box selector.
|
|
55
|
+
# @param[Symbol] name of property that holds bounding box string
|
|
56
|
+
# @return[String] script tag
|
|
57
|
+
def bbox_script_tag(property)
|
|
58
|
+
%(
|
|
59
|
+
<script>
|
|
60
|
+
boundingBoxSelector({inputId: #{bbox_input_id(property)}});
|
|
61
|
+
</script>
|
|
62
|
+
)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
##
|
|
66
|
+
# Returns id of location input that is bound to bbox selector.
|
|
67
|
+
# @param [Symbol] name of property that holds bounding box string
|
|
68
|
+
# @return[String] id of location input element
|
|
69
|
+
def bbox_input_id(property)
|
|
70
|
+
"#{curation_concern.class.name.underscore}_#{property}"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module FileSetActionsHelper
|
|
3
|
+
def file_set_actions(presenter, locals = {})
|
|
4
|
+
render file_set_actions_partial(presenter),
|
|
5
|
+
locals.merge(file_set: presenter)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def file_set_actions_partial(file_set)
|
|
9
|
+
format = file_set_actions_format(file_set)
|
|
10
|
+
'geo_works/file_sets/actions/' +
|
|
11
|
+
if format
|
|
12
|
+
format
|
|
13
|
+
else
|
|
14
|
+
'default_actions'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def file_set_actions_format(file_set)
|
|
19
|
+
geo_mime_type = file_set.solr_document.fetch(:geo_mime_type_ssim, []).first
|
|
20
|
+
if GeoWorks::ImageFormatService.include?(geo_mime_type)
|
|
21
|
+
'image_actions'
|
|
22
|
+
elsif GeoWorks::VectorFormatService.include?(geo_mime_type)
|
|
23
|
+
'vector_actions'
|
|
24
|
+
elsif GeoWorks::RasterFormatService.include?(geo_mime_type)
|
|
25
|
+
'raster_actions'
|
|
26
|
+
elsif GeoWorks::MetadataFormatService.include?(geo_mime_type)
|
|
27
|
+
'metadata_actions'
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module GeoWorksHelper
|
|
3
|
+
# Returns human readable name of child geo work type.
|
|
4
|
+
# @param [GeoWorksShowPresenter] geo work show presenter
|
|
5
|
+
# @return[String]
|
|
6
|
+
def child_geo_works_type(presenter)
|
|
7
|
+
case presenter.class.to_s
|
|
8
|
+
when /ImageWorkShowPresenter/
|
|
9
|
+
'Raster'
|
|
10
|
+
when /RasterWorkShowPresenter/
|
|
11
|
+
'Vector'
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Returns human readable name of geo work type.
|
|
16
|
+
# @param [GeoWorksShowPresenter] geo work show presenter
|
|
17
|
+
# @return[String]
|
|
18
|
+
def geo_work_type(presenter)
|
|
19
|
+
presenter.human_readable_type.sub('Work', '')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# Delivers derivatives to external services, like GeoServer
|
|
5
|
+
##
|
|
6
|
+
class GeoserverDeliveryJob < ActiveJob::Base
|
|
7
|
+
queue_as Hyrax.config.ingest_queue_name
|
|
8
|
+
|
|
9
|
+
attr_reader :file_set
|
|
10
|
+
|
|
11
|
+
##
|
|
12
|
+
# Precondition is that all derivatives are created and saved.
|
|
13
|
+
# @param [FileSet] file_set
|
|
14
|
+
# @param [String] content_url contains the display copy to deliver
|
|
15
|
+
def perform(message)
|
|
16
|
+
@file_set = ActiveFedora::Base.find(message['id'])
|
|
17
|
+
uri = URI.parse(content_url)
|
|
18
|
+
return if uri.path == ''
|
|
19
|
+
GeoWorks::DeliveryService.new(file_set, uri.path).publish
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def content_url
|
|
23
|
+
case file_set.geo_mime_type
|
|
24
|
+
when *GeoWorks::RasterFormatService.select_options.map(&:last)
|
|
25
|
+
return derivatives_service.send(:derivative_url, 'display_raster')
|
|
26
|
+
when *GeoWorks::VectorFormatService.select_options.map(&:last)
|
|
27
|
+
return derivatives_service.send(:derivative_url, 'display_vector')
|
|
28
|
+
else
|
|
29
|
+
return ''
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def derivatives_service
|
|
34
|
+
GeoWorks::FileSetDerivativesService.new(file_set)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for basic geospatial metadata used by Works
|
|
3
|
+
module BasicGeoMetadata
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
apply_schema ::GeoWorks::BasicGeoMetadataRequired,
|
|
8
|
+
ActiveFedora::SchemaIndexingStrategy.new(
|
|
9
|
+
ActiveFedora::Indexers::GlobalIndexer.new(
|
|
10
|
+
[:stored_searchable, :facetable, :symbol]
|
|
11
|
+
)
|
|
12
|
+
)
|
|
13
|
+
apply_schema ::GeoWorks::BasicGeoMetadataOptional,
|
|
14
|
+
ActiveFedora::SchemaIndexingStrategy.new(
|
|
15
|
+
ActiveFedora::Indexers::GlobalIndexer.new(
|
|
16
|
+
[:stored_searchable, :facetable, :symbol]
|
|
17
|
+
)
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
# Attributes and methods for vector metadata files
|
|
3
|
+
module ExternalMetadataFileBehavior
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
include ::GeoWorks::Extractors::Iso19139Helper
|
|
6
|
+
include ::GeoWorks::Extractors::FgdcHelper
|
|
7
|
+
include ::GeoWorks::Extractors::ModsHelper
|
|
8
|
+
|
|
9
|
+
# Extracts properties from the constitutent external metadata file
|
|
10
|
+
# @example
|
|
11
|
+
# extract_iso19139_metadata
|
|
12
|
+
# extract_fgdc_metadata
|
|
13
|
+
# extract_mods_metadata
|
|
14
|
+
# @return [Hash]
|
|
15
|
+
def extract_metadata
|
|
16
|
+
raise ArgumentError, "MIME type unspecified or not configured" if schema.blank?
|
|
17
|
+
fn = "extract_#{schema.downcase}_metadata"
|
|
18
|
+
raise ArgumentError, "Unsupported metadata standard: #{schema}" unless respond_to?(fn.to_sym)
|
|
19
|
+
send(fn, metadata_xml)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Retrives data from PCDM::File
|
|
23
|
+
def metadata_xml
|
|
24
|
+
Nokogiri::XML(original_file.content)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def schema
|
|
28
|
+
(MetadataFormatService.label(geo_mime_type) || '').parameterize(separator: '_')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Extractors
|
|
3
|
+
class FgdcMetadataExtractor
|
|
4
|
+
attr_reader :doc
|
|
5
|
+
def initialize(doc)
|
|
6
|
+
@doc = doc
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def to_hash
|
|
10
|
+
metadata_required.merge(metadata_optional)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def metadata_required
|
|
14
|
+
{
|
|
15
|
+
coverage: coverage,
|
|
16
|
+
creator: creators,
|
|
17
|
+
description: [doc.at_xpath('//idinfo/descript/abstract').text],
|
|
18
|
+
title: [doc.at_xpath('//idinfo/citation/citeinfo/title').text]
|
|
19
|
+
}.compact
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def metadata_optional
|
|
23
|
+
{
|
|
24
|
+
issued: issued,
|
|
25
|
+
publisher: publishers,
|
|
26
|
+
spatial: placenames,
|
|
27
|
+
subject: keywords,
|
|
28
|
+
temporal: timeperiods
|
|
29
|
+
}.compact
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def coverage
|
|
33
|
+
doc.at_xpath('//idinfo/spdom/bounding').tap do |node|
|
|
34
|
+
return GeoWorks::Coverage.new(
|
|
35
|
+
coverage_coordinate(node, 'north'),
|
|
36
|
+
coverage_coordinate(node, 'east'),
|
|
37
|
+
coverage_coordinate(node, 'south'),
|
|
38
|
+
coverage_coordinate(node, 'west')
|
|
39
|
+
).to_s
|
|
40
|
+
end
|
|
41
|
+
nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def coverage_coordinate(node, direction)
|
|
45
|
+
node.at_xpath("#{direction}bc").text.to_f
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def issued
|
|
49
|
+
doc.at_xpath('//idinfo/citation/citeinfo/pubdate').tap do |node|
|
|
50
|
+
return node.text[0..3].to_i unless node.nil? # extract year only
|
|
51
|
+
end
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def timeperiods
|
|
56
|
+
::GeoWorks::TimePeriod.new(
|
|
57
|
+
extract_multivalued('//idinfo/keywords/temporal/tempkey'), doc
|
|
58
|
+
).value
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def publishers
|
|
62
|
+
extract_multivalued('//idinfo/citation/citeinfo/pubinfo/publish')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def creators
|
|
66
|
+
extract_multivalued('//idinfo/citation/citeinfo/origin')
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def placenames
|
|
70
|
+
extract_multivalued('//idinfo/keywords/place/placekey')
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def keywords
|
|
74
|
+
keywords = extract_multivalued('//idinfo/keywords/theme/themekey')
|
|
75
|
+
keywords.map! { |k| TOPIC_CATEGORIES[k.to_sym].present? ? TOPIC_CATEGORIES[k.to_sym] : k }
|
|
76
|
+
keywords.uniq!
|
|
77
|
+
keywords.present? ? keywords : nil
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# ISO 19115 Topic Category
|
|
81
|
+
TOPIC_CATEGORIES = {
|
|
82
|
+
farming: 'Farming',
|
|
83
|
+
biota: 'Biology and Ecology',
|
|
84
|
+
climatologyMeteorologyAtmosphere: 'Climatology, Meteorology and Atmosphere',
|
|
85
|
+
boundaries: 'Boundaries',
|
|
86
|
+
elevation: 'Elevation',
|
|
87
|
+
environment: 'Environment',
|
|
88
|
+
geoscientificinformation: 'Geoscientific Information',
|
|
89
|
+
health: 'Health',
|
|
90
|
+
imageryBaseMapsEarthCover: 'Imagery and Base Maps',
|
|
91
|
+
intelligenceMilitary: 'Military',
|
|
92
|
+
inlandWaters: 'Inland Waters',
|
|
93
|
+
location: 'Location',
|
|
94
|
+
oceans: 'Oceans',
|
|
95
|
+
planningCadastre: 'Planning and Cadastral',
|
|
96
|
+
structure: 'Structures',
|
|
97
|
+
transportation: 'Transportation',
|
|
98
|
+
utilitiesCommunication: 'Utilities and Communication',
|
|
99
|
+
society: 'Society'
|
|
100
|
+
}.freeze
|
|
101
|
+
|
|
102
|
+
private
|
|
103
|
+
|
|
104
|
+
def extract_multivalued(xpath)
|
|
105
|
+
values = []
|
|
106
|
+
doc.xpath(xpath).each do |node|
|
|
107
|
+
values << node.text.strip
|
|
108
|
+
end
|
|
109
|
+
values.uniq!
|
|
110
|
+
values.present? ? values : nil
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|