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,53 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class DateBuilder
|
|
5
|
+
attr_reader :geo_concern
|
|
6
|
+
|
|
7
|
+
def initialize(geo_concern)
|
|
8
|
+
@geo_concern = geo_concern
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Builds date fields such as layer year and modified date.
|
|
12
|
+
# @param [AbstractDocument] discovery document
|
|
13
|
+
def build(document)
|
|
14
|
+
document.layer_year = layer_year
|
|
15
|
+
document.layer_modified = layer_modified
|
|
16
|
+
document.issued = issued
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
# Returns a year associated with the layer. Taken from first
|
|
22
|
+
# value in temporal.
|
|
23
|
+
# @return [Integer] year
|
|
24
|
+
def layer_year
|
|
25
|
+
date = geo_concern.temporal.first
|
|
26
|
+
year = date.match(/(?<=\D|^)(\d{4})(?=\D|$)/)
|
|
27
|
+
year ? year[0].to_i : nil
|
|
28
|
+
rescue
|
|
29
|
+
''
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Returns the date the work was modified.
|
|
33
|
+
# @return [String] date in XMLSchema format.
|
|
34
|
+
def layer_modified
|
|
35
|
+
datetime = geo_concern.layer_modified
|
|
36
|
+
# TODO: Rails 4 doesn't implement the timezone correctly -- it adds "+00:00" not "Z"
|
|
37
|
+
Rails::VERSION::MAJOR == 4 ? datetime.utc.strftime('%FT%TZ') : datetime.utc.xmlschema
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Returns the date the layer was issued.
|
|
41
|
+
# @return [String] date in XMLSchema format.
|
|
42
|
+
def issued
|
|
43
|
+
datetime = geo_concern.issued.first
|
|
44
|
+
datetime = DateTime.parse(datetime.to_s).utc
|
|
45
|
+
# TODO: Rails 4 doesn't implement the timezone correctly -- it adds "+00:00" not "Z"
|
|
46
|
+
Rails::VERSION::MAJOR == 4 ? datetime.utc.strftime('%FT%TZ') : datetime.utc.xmlschema
|
|
47
|
+
rescue
|
|
48
|
+
''
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class DocumentPath
|
|
5
|
+
attr_reader :geo_concern
|
|
6
|
+
def initialize(geo_concern)
|
|
7
|
+
@geo_concern = geo_concern
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Returns url for geo concern show page.
|
|
11
|
+
# @return [String] geo concern show page url
|
|
12
|
+
def to_s
|
|
13
|
+
document_helper.polymorphic_url(geo_concern, host: host, protocol: protocol)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns url for downloading the original file.
|
|
17
|
+
# @return [String] original file download url
|
|
18
|
+
def file_download
|
|
19
|
+
return unless file_set
|
|
20
|
+
hyrax_url_helpers.download_url(file_set, host: host, protocol: protocol)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Returns url for downloading the metadata file.
|
|
24
|
+
# @param [String] metadata file format to download
|
|
25
|
+
# @return [String] metadata download url
|
|
26
|
+
def metadata_download(format)
|
|
27
|
+
return unless metadata_file_set
|
|
28
|
+
path = hyrax_url_helpers.download_url(metadata_file_set, host: host, protocol: protocol)
|
|
29
|
+
mime_type = metadata_file_set.solr_document[:geo_mime_type_ssim].first
|
|
30
|
+
path if MetadataFormatService.label(mime_type) == format
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Returns url for thumbnail image.
|
|
34
|
+
# @return [String] thumbnail url
|
|
35
|
+
def thumbnail
|
|
36
|
+
return unless file_download
|
|
37
|
+
"#{file_download}?file=thumbnail"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
# Returns the first geo file set presenter attached to work.
|
|
43
|
+
# @return [FileSetPresenter] geo file set presenter
|
|
44
|
+
def file_set
|
|
45
|
+
return unless geo_concern.geo_file_set_presenters
|
|
46
|
+
geo_concern.geo_file_set_presenters.first
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Returns the first metadata file set presenter attached to work.
|
|
50
|
+
# @return [FileSetPresenter] metadata file set presenter
|
|
51
|
+
def metadata_file_set
|
|
52
|
+
return unless geo_concern.external_metadata_file_set_presenters
|
|
53
|
+
geo_concern.external_metadata_file_set_presenters.first
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Instantiates a DocumentHelper object.
|
|
57
|
+
# Used for access to rails url_helpers and poymorphic routes.
|
|
58
|
+
# @return [DocumentHelper] document helper
|
|
59
|
+
def document_helper
|
|
60
|
+
@helper ||= DocumentHelper.new
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def hyrax_url_helpers
|
|
64
|
+
Hyrax::Engine.routes.url_helpers
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Indicates if the ssl is enabled.
|
|
68
|
+
# @return [Boolean] use ssl
|
|
69
|
+
def ssl?
|
|
70
|
+
geo_concern.request.protocol == 'https://'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Returns protocol to use in url. Depends on ssl status.
|
|
74
|
+
# @return [Boolean] http protocol
|
|
75
|
+
def protocol
|
|
76
|
+
if ssl?
|
|
77
|
+
:https
|
|
78
|
+
else
|
|
79
|
+
:http
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Returns hostname (with port) to use in url.
|
|
84
|
+
# @return [String] hostname
|
|
85
|
+
def host
|
|
86
|
+
geo_concern.request.host_with_port
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class LayerInfoBuilder
|
|
5
|
+
attr_reader :geo_concern
|
|
6
|
+
|
|
7
|
+
def initialize(geo_concern)
|
|
8
|
+
@geo_concern = geo_concern
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Builds fields about the geospatial file such as geometry and format.
|
|
12
|
+
# @param [AbstractDocument] discovery document
|
|
13
|
+
def build(document)
|
|
14
|
+
document.geom_type = geom_type
|
|
15
|
+
document.format = format
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
# Uses parent work class to determine file geometry type.
|
|
21
|
+
# These geom types are used in geoblacklight documents.
|
|
22
|
+
# @return [String] file geometry type
|
|
23
|
+
def geom_type
|
|
24
|
+
case geo_concern.class.to_s
|
|
25
|
+
when /ImageWorkShowPresenter/
|
|
26
|
+
'Scanned Map'
|
|
27
|
+
when /RasterWorkShowPresenter/
|
|
28
|
+
'Raster'
|
|
29
|
+
when /VectorWorkShowPresenter/
|
|
30
|
+
vector_geom_type
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Uses file mime type to determine file format.
|
|
35
|
+
# @return [String] file format code
|
|
36
|
+
def format
|
|
37
|
+
if ImageFormatService.include? geo_mime_type
|
|
38
|
+
ImageFormatService.code(geo_mime_type)
|
|
39
|
+
elsif RasterFormatService.include? geo_mime_type
|
|
40
|
+
RasterFormatService.code(geo_mime_type)
|
|
41
|
+
elsif VectorFormatService.include? geo_mime_type
|
|
42
|
+
VectorFormatService.code(geo_mime_type)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Returns the geometry for a vector file.
|
|
47
|
+
# @return [String] vector geometry
|
|
48
|
+
def vector_geom_type
|
|
49
|
+
# TODO: Get the geom type as part of a geo characterization service.
|
|
50
|
+
# "Point, Line, Polygon, Mixed"
|
|
51
|
+
'Mixed'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Returns the 'geo' mime type of the first file attached to the work.
|
|
55
|
+
# @return [String] file mime type
|
|
56
|
+
def geo_mime_type
|
|
57
|
+
file_sets = geo_concern.geo_file_set_presenters
|
|
58
|
+
return if file_sets.nil? || file_sets.empty?
|
|
59
|
+
return unless (mime_types = file_sets.first.solr_document[:geo_mime_type_ssim])
|
|
60
|
+
mime_types.first
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class ReferencesBuilder
|
|
5
|
+
attr_reader :geo_concern, :path
|
|
6
|
+
|
|
7
|
+
def initialize(geo_concern)
|
|
8
|
+
@geo_concern = geo_concern
|
|
9
|
+
@path = DocumentBuilder.root_path_class.new(geo_concern)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Builds service reference fields such as thumbnail and download url.
|
|
13
|
+
# @param [AbstractDocument] discovery document
|
|
14
|
+
def build(document)
|
|
15
|
+
document.wxs_identifier = wxs_identifier
|
|
16
|
+
build_metadata_refs(document)
|
|
17
|
+
build_download_refs(document)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
# Builds metadata file references.
|
|
23
|
+
# @param [AbstractDocument] discovery document
|
|
24
|
+
def build_metadata_refs(document)
|
|
25
|
+
document.fgdc = fgdc
|
|
26
|
+
document.iso19139 = iso19139
|
|
27
|
+
document.mods = mods
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Builds geospatial file download references.
|
|
31
|
+
# @param [AbstractDocument] discovery document
|
|
32
|
+
def build_download_refs(document)
|
|
33
|
+
document.download = download
|
|
34
|
+
document.url = url
|
|
35
|
+
document.thumbnail = thumbnail
|
|
36
|
+
document.wxs_identifier = wxs_identifier
|
|
37
|
+
document.wms_path = wms_path
|
|
38
|
+
document.wfs_path = wfs_path
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Returns the identifier to use with WMS/WFS/WCS services.
|
|
42
|
+
# @return [String] wxs indentifier
|
|
43
|
+
def wxs_identifier
|
|
44
|
+
wxs.identifier
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns the wms server url.
|
|
48
|
+
# @return [String] wms server url
|
|
49
|
+
def wms_path
|
|
50
|
+
wxs.wms_path
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Returns the wfs server url.
|
|
54
|
+
# @return [String] wfs server url
|
|
55
|
+
def wfs_path
|
|
56
|
+
wxs.wfs_path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Returns a url to access further descriptive information.
|
|
60
|
+
# @return [String] work show page url
|
|
61
|
+
def url
|
|
62
|
+
path.to_s
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Returns a direct file download url
|
|
66
|
+
# @return [String] direct file url
|
|
67
|
+
def download
|
|
68
|
+
path.file_download
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Returns an FGDC metadata document download url
|
|
72
|
+
# @return [String] FGDC metadata document url
|
|
73
|
+
def fgdc
|
|
74
|
+
path.metadata_download('FGDC')
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Returns an ISO19139 metadata document download url
|
|
78
|
+
# @return [String] ISO19139 metadata document url
|
|
79
|
+
def iso19139
|
|
80
|
+
path.metadata_download('ISO19139')
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Returns an MODS metadata document download url
|
|
84
|
+
# @return [String] MODS metadata document url
|
|
85
|
+
def mods
|
|
86
|
+
path.metadata_download('MODS')
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns a thumbnail file url
|
|
90
|
+
# @return [String] thumbnail url
|
|
91
|
+
def thumbnail
|
|
92
|
+
path.thumbnail
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def wxs
|
|
96
|
+
@wxs ||= Wxs.new(geo_concern)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class SlugBuilder
|
|
5
|
+
attr_reader :geo_concern
|
|
6
|
+
|
|
7
|
+
def initialize(geo_concern)
|
|
8
|
+
@geo_concern = geo_concern
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def build(document)
|
|
12
|
+
document.slug = slug
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Returns the document slug for use in discovery systems.
|
|
16
|
+
# @return [String] document slug
|
|
17
|
+
def slug
|
|
18
|
+
return geo_concern.id unless geo_concern.provenance
|
|
19
|
+
"#{geo_concern.provenance.parameterize}-#{geo_concern.id}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module GeoWorks
|
|
2
|
+
module Discovery
|
|
3
|
+
class DocumentBuilder
|
|
4
|
+
class SpatialBuilder
|
|
5
|
+
attr_reader :geo_concern
|
|
6
|
+
|
|
7
|
+
def initialize(geo_concern)
|
|
8
|
+
@geo_concern = geo_concern
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Builds spatial fields such as bounding box and solr geometry.
|
|
12
|
+
# @param [AbstractDocument] discovery document
|
|
13
|
+
def build(document)
|
|
14
|
+
document.solr_coverage = to_solr
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
# Parses coverage field from geo work and instantiates a coverage object.
|
|
20
|
+
# @return [GeoWorks::Coverage] coverage object
|
|
21
|
+
def coverage
|
|
22
|
+
@coverage ||= GeoWorks::Coverage.parse(geo_concern.coverage.first)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Returns the coverage in solr format. For example:
|
|
26
|
+
# `ENVELOPE(minX, maxX, maxY, minY)`
|
|
27
|
+
# @see 'https://cwiki.apache.org/confluence/display/solr/Spatial+Search'
|
|
28
|
+
# @return [String] coverage in solr format
|
|
29
|
+
def to_solr
|
|
30
|
+
"ENVELOPE(#{coverage.w}, #{coverage.e}, #{coverage.n}, #{coverage.s})"
|
|
31
|
+
rescue
|
|
32
|
+
''
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
|
2
|
+
|
|
3
|
+
module GeoWorks
|
|
4
|
+
module Discovery
|
|
5
|
+
class DocumentBuilder
|
|
6
|
+
class Wxs
|
|
7
|
+
attr_reader :geo_concern
|
|
8
|
+
def initialize(geo_concern)
|
|
9
|
+
@geo_concern = geo_concern
|
|
10
|
+
@config = GeoWorks::GeoServer.config[visibility].try(:with_indifferent_access)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Returns the identifier to use with WMS/WFS/WCS services.
|
|
14
|
+
# @return [String] wxs indentifier
|
|
15
|
+
def identifier
|
|
16
|
+
return unless geo_file_set?
|
|
17
|
+
return file_set.id unless @config && visibility
|
|
18
|
+
"#{@config[:workspace]}:#{file_set.id}" if @config[:workspace]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Returns the wms server url.
|
|
22
|
+
# @return [String] wms server url
|
|
23
|
+
def wms_path
|
|
24
|
+
return unless @config && visibility && geo_file_set?
|
|
25
|
+
"#{path}/#{@config[:workspace]}/wms"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Returns the wfs server url.
|
|
29
|
+
# @return [String] wfs server url
|
|
30
|
+
def wfs_path
|
|
31
|
+
return unless @config && visibility && geo_file_set?
|
|
32
|
+
"#{path}/#{@config[:workspace]}/wfs"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# Gets the representative file set.
|
|
38
|
+
# @return [FileSet] representative file set
|
|
39
|
+
def file_set
|
|
40
|
+
@file_set ||= begin
|
|
41
|
+
representative_id = geo_concern.solr_document.representative_id
|
|
42
|
+
file_set_id = [representative_id]
|
|
43
|
+
geo_concern.member_presenters(file_set_id).first
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Tests if the file set is a geo file set.
|
|
48
|
+
# @return [Bool]
|
|
49
|
+
def geo_file_set?
|
|
50
|
+
return false unless file_set
|
|
51
|
+
@file_set_ids ||= geo_concern.geo_file_set_presenters.map(&:id)
|
|
52
|
+
@file_set_ids.include? file_set.id
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Returns the file set visibility if it's open and authenticated.
|
|
56
|
+
# @return [String] file set visibility
|
|
57
|
+
def visibility
|
|
58
|
+
return unless file_set
|
|
59
|
+
visibility = file_set.solr_document.visibility
|
|
60
|
+
visibility if valid_visibilities.include? visibility
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def valid_visibilities
|
|
64
|
+
[Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC,
|
|
65
|
+
Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Geoserver base url.
|
|
69
|
+
# @return [String] geoserver base url
|
|
70
|
+
def path
|
|
71
|
+
@config[:url].chomp('/rest')
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|