geo_concerns 0.0.1

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 (220) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rubocop.yml +101 -0
  4. data/.travis.yml +17 -0
  5. data/Gemfile +46 -0
  6. data/LICENSE +202 -0
  7. data/README.md +46 -0
  8. data/Rakefile +21 -0
  9. data/app/actors/geo_concerns/file_actor.rb +20 -0
  10. data/app/actors/geo_concerns/file_set_actor.rb +7 -0
  11. data/app/assets/images/geo_concerns/.keep +0 -0
  12. data/app/assets/images/geo_concerns/images/geocoder.png +0 -0
  13. data/app/assets/images/geo_concerns/images/throbber.gif +0 -0
  14. data/app/assets/images/geo_concerns/img/filter-icon.png +0 -0
  15. data/app/assets/images/geo_concerns/img/move-handle.png +0 -0
  16. data/app/assets/images/geo_concerns/img/resize-handle.png +0 -0
  17. data/app/assets/javascripts/geo_concerns/Control.Geocoder.js +1056 -0
  18. data/app/assets/javascripts/geo_concerns/application.js +5 -0
  19. data/app/assets/javascripts/geo_concerns/bounding_box_selector.js +100 -0
  20. data/app/assets/javascripts/geo_concerns/leaflet-boundingbox.js +467 -0
  21. data/app/assets/stylesheets/geo_concerns/Control.Geocoder.css +104 -0
  22. data/app/assets/stylesheets/geo_concerns/application.css +18 -0
  23. data/app/assets/stylesheets/geo_concerns/bounding_box.scss +7 -0
  24. data/app/assets/stylesheets/geo_concerns/leaflet-boundingbox.css +17 -0
  25. data/app/controllers/concerns/geo_concerns/file_sets_controller_behavior.rb +19 -0
  26. data/app/controllers/concerns/geo_concerns/image_works_controller_behavior.rb +13 -0
  27. data/app/controllers/concerns/geo_concerns/raster_works_controller_behavior.rb +23 -0
  28. data/app/controllers/concerns/geo_concerns/vector_works_controller_behavior.rb +23 -0
  29. data/app/forms/geo_concerns/basic_geo_metadata_form.rb +8 -0
  30. data/app/forms/geo_concerns/external_metadata_file_form.rb +8 -0
  31. data/app/forms/geo_concerns/georeferenced_form.rb +9 -0
  32. data/app/forms/geo_concerns/image_work_form.rb +9 -0
  33. data/app/forms/geo_concerns/raster_work_form.rb +8 -0
  34. data/app/forms/geo_concerns/vector_work_form.rb +8 -0
  35. data/app/helpers/bounding_box_helper.rb +24 -0
  36. data/app/helpers/geo_concerns/application_helper.rb +4 -0
  37. data/app/models/concerns/geo_concerns/basic_geo_metadata.rb +21 -0
  38. data/app/models/concerns/geo_concerns/external_metadata_file_behavior.rb +31 -0
  39. data/app/models/concerns/geo_concerns/extractors/fgdc_helper.rb +9 -0
  40. data/app/models/concerns/geo_concerns/extractors/fgdc_metadata_extractor.rb +114 -0
  41. data/app/models/concerns/geo_concerns/extractors/iso19139_helper.rb +50 -0
  42. data/app/models/concerns/geo_concerns/extractors/mods_helper.rb +15 -0
  43. data/app/models/concerns/geo_concerns/file_set/derivatives.rb +60 -0
  44. data/app/models/concerns/geo_concerns/file_set_presenter_behavior.rb +7 -0
  45. data/app/models/concerns/geo_concerns/geo_file_format_behavior.rb +37 -0
  46. data/app/models/concerns/geo_concerns/geo_file_set_behavior.rb +11 -0
  47. data/app/models/concerns/geo_concerns/georeferenced_behavior.rb +18 -0
  48. data/app/models/concerns/geo_concerns/image_file_behavior.rb +14 -0
  49. data/app/models/concerns/geo_concerns/image_work_behavior.rb +69 -0
  50. data/app/models/concerns/geo_concerns/metadata_extraction_helper.rb +28 -0
  51. data/app/models/concerns/geo_concerns/raster_file_behavior.rb +14 -0
  52. data/app/models/concerns/geo_concerns/raster_work_behavior.rb +82 -0
  53. data/app/models/concerns/geo_concerns/solr_document_behavior.rb +25 -0
  54. data/app/models/concerns/geo_concerns/vector_file_behavior.rb +14 -0
  55. data/app/models/concerns/geo_concerns/vector_work_behavior.rb +78 -0
  56. data/app/presenters/geo_concerns/geo_concerns_show_presenter.rb +30 -0
  57. data/app/presenters/geo_concerns/image_work_show_presenter.rb +18 -0
  58. data/app/presenters/geo_concerns/raster_work_show_presenter.rb +18 -0
  59. data/app/presenters/geo_concerns/vector_work_show_presenter.rb +10 -0
  60. data/app/processors/geo_concerns/processors/base_geo_processor.rb +86 -0
  61. data/app/processors/geo_concerns/processors/raster.rb +11 -0
  62. data/app/processors/geo_concerns/processors/raster/aig.rb +44 -0
  63. data/app/processors/geo_concerns/processors/raster/base.rb +74 -0
  64. data/app/processors/geo_concerns/processors/raster/dem.rb +46 -0
  65. data/app/processors/geo_concerns/processors/raster/processor.rb +27 -0
  66. data/app/processors/geo_concerns/processors/vector.rb +11 -0
  67. data/app/processors/geo_concerns/processors/vector/base.rb +68 -0
  68. data/app/processors/geo_concerns/processors/vector/processor.rb +25 -0
  69. data/app/processors/geo_concerns/processors/vector/shapefile.rb +20 -0
  70. data/app/processors/geo_concerns/processors/zip.rb +31 -0
  71. data/app/renderers/coverage_renderer.rb +34 -0
  72. data/app/runners/geo_concerns/runners/raster_derivatives.rb +9 -0
  73. data/app/runners/geo_concerns/runners/vector_derivatives.rb +9 -0
  74. data/app/schemas/geo_concerns/basic_geo_metadata_optional.rb +39 -0
  75. data/app/schemas/geo_concerns/basic_geo_metadata_required.rb +25 -0
  76. data/app/services/authority_service.rb +23 -0
  77. data/app/services/geo_concerns/derivative_path.rb +16 -0
  78. data/app/services/image_format_service.rb +4 -0
  79. data/app/services/metadata_format_service.rb +4 -0
  80. data/app/services/raster_format_service.rb +4 -0
  81. data/app/services/vector_format_service.rb +4 -0
  82. data/app/values/geo_concerns/coverage.rb +36 -0
  83. data/app/values/geo_concerns/time_period.rb +31 -0
  84. data/app/views/curation_concerns/file_sets/_form.html.erb +48 -0
  85. data/app/views/curation_concerns/image_works/_form.html.erb +23 -0
  86. data/app/views/curation_concerns/image_works/_image_work.html.erb +2 -0
  87. data/app/views/curation_concerns/image_works/_members.html.erb +30 -0
  88. data/app/views/curation_concerns/image_works/_related_image_files.html.erb +24 -0
  89. data/app/views/curation_concerns/image_works/_show_actions.html.erb +16 -0
  90. data/app/views/curation_concerns/image_works/show.html.erb +17 -0
  91. data/app/views/curation_concerns/raster_works/_form.html.erb +25 -0
  92. data/app/views/curation_concerns/raster_works/_members.html.erb +30 -0
  93. data/app/views/curation_concerns/raster_works/_raster_work.html.erb +2 -0
  94. data/app/views/curation_concerns/raster_works/_related_raster_files.html.erb +24 -0
  95. data/app/views/curation_concerns/raster_works/_show_actions.html.erb +16 -0
  96. data/app/views/curation_concerns/raster_works/show.html.erb +17 -0
  97. data/app/views/curation_concerns/vector_works/_form.html.erb +25 -0
  98. data/app/views/curation_concerns/vector_works/_related_vector_files.html.erb +24 -0
  99. data/app/views/curation_concerns/vector_works/_show_actions.html.erb +15 -0
  100. data/app/views/curation_concerns/vector_works/_vector_work.html.erb +2 -0
  101. data/app/views/curation_concerns/vector_works/show.html.erb +15 -0
  102. data/app/views/geo_concerns/_attribute_rows.html.erb +11 -0
  103. data/app/views/geo_concerns/_attributes.html.erb +13 -0
  104. data/app/views/geo_concerns/_form_additional_information.html.erb +11 -0
  105. data/app/views/geo_concerns/_form_bounding_box.html.erb +9 -0
  106. data/app/views/geo_concerns/_form_descriptive_fields.html.erb +9 -0
  107. data/app/views/geo_concerns/_form_files_and_links.html.erb +0 -0
  108. data/app/views/geo_concerns/_form_populate_metadata.html.erb +8 -0
  109. data/app/views/geo_concerns/_form_required_information.html.erb +12 -0
  110. data/app/views/geo_concerns/_form_supplementary_fields.html.erb +15 -0
  111. data/app/views/geo_concerns/_related_external_metadata_files.html.erb +24 -0
  112. data/app/vocabs/geo_concerns/geo_terms.rb +12 -0
  113. data/bin/rails +12 -0
  114. data/config/routes.rb +6 -0
  115. data/geo_concerns.gemspec +36 -0
  116. data/lib/generators/geo_concerns/install_generator.rb +119 -0
  117. data/lib/generators/geo_concerns/templates/actors/curation_concerns/image_work_actor.rb +4 -0
  118. data/lib/generators/geo_concerns/templates/actors/curation_concerns/raster_work_actor.rb +4 -0
  119. data/lib/generators/geo_concerns/templates/actors/curation_concerns/vector_work_actor.rb +4 -0
  120. data/lib/generators/geo_concerns/templates/config/authorities/image_formats.yml +5 -0
  121. data/lib/generators/geo_concerns/templates/config/authorities/metadata_formats.yml +7 -0
  122. data/lib/generators/geo_concerns/templates/config/authorities/raster_formats.yml +9 -0
  123. data/lib/generators/geo_concerns/templates/config/authorities/vector_formats.yml +5 -0
  124. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/file_sets_controller.rb +6 -0
  125. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/image_works_controller.rb +5 -0
  126. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/raster_works_controller.rb +6 -0
  127. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/vector_works_controller.rb +6 -0
  128. data/lib/generators/geo_concerns/templates/geo_concerns.js +1 -0
  129. data/lib/generators/geo_concerns/templates/geo_concerns.scss +3 -0
  130. data/lib/generators/geo_concerns/templates/jobs/characterize_job.rb +12 -0
  131. data/lib/generators/geo_concerns/templates/models/file_set.rb +4 -0
  132. data/lib/generators/geo_concerns/templates/models/image_work.rb +6 -0
  133. data/lib/generators/geo_concerns/templates/models/raster_work.rb +7 -0
  134. data/lib/generators/geo_concerns/templates/models/vector_work.rb +7 -0
  135. data/lib/generators/geo_concerns/templates/presenters/file_set_presenter.rb +3 -0
  136. data/lib/generators/geo_concerns/templates/spec/actor_spec.rb.erb +9 -0
  137. data/lib/generators/geo_concerns/templates/spec/controller_spec.rb.erb +9 -0
  138. data/lib/generators/geo_concerns/templates/spec/model_spec.rb.erb +9 -0
  139. data/lib/geo_concerns.rb +6 -0
  140. data/lib/geo_concerns/engine.rb +4 -0
  141. data/lib/geo_concerns/version.rb +3 -0
  142. data/lib/tasks/geo_concerns_tasks.rake +4 -0
  143. data/solr/config/_rest_managed.json +3 -0
  144. data/solr/config/admin-extra.html +31 -0
  145. data/solr/config/elevate.xml +36 -0
  146. data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
  147. data/solr/config/protwords.txt +21 -0
  148. data/solr/config/schema.xml +372 -0
  149. data/solr/config/scripts.conf +24 -0
  150. data/solr/config/solrconfig.xml +312 -0
  151. data/solr/config/spellings.txt +2 -0
  152. data/solr/config/stopwords.txt +58 -0
  153. data/solr/config/stopwords_en.txt +58 -0
  154. data/solr/config/synonyms.txt +31 -0
  155. data/solr/config/xslt/example.xsl +132 -0
  156. data/solr/config/xslt/example_atom.xsl +67 -0
  157. data/solr/config/xslt/example_rss.xsl +66 -0
  158. data/solr/config/xslt/luke.xsl +337 -0
  159. data/spec/actors/geo_concerns/file_actor_spec.rb +26 -0
  160. data/spec/controllers/image_works_controller_spec.rb +25 -0
  161. data/spec/controllers/raster_works_controller_spec.rb +50 -0
  162. data/spec/controllers/vector_works_controller_spec.rb +50 -0
  163. data/spec/factories/external_metadata_files.rb +20 -0
  164. data/spec/factories/image_files.rb +32 -0
  165. data/spec/factories/image_works.rb +68 -0
  166. data/spec/factories/raster_files.rb +35 -0
  167. data/spec/factories/raster_works.rb +86 -0
  168. data/spec/factories/users.rb +26 -0
  169. data/spec/factories/vector_files.rb +31 -0
  170. data/spec/factories/vector_works.rb +83 -0
  171. data/spec/features/create_raster_work_spec.rb +49 -0
  172. data/spec/forms/geo_concerns/basic_geo_metadata_form_spec.rb +27 -0
  173. data/spec/forms/geo_concerns/external_metadata_file_form_spec.rb +27 -0
  174. data/spec/forms/geo_concerns/georeferenced_form_spec.rb +29 -0
  175. data/spec/forms/geo_concerns/image_work_form_spec.rb +11 -0
  176. data/spec/forms/geo_concerns/raster_work_form_spec.rb +15 -0
  177. data/spec/forms/geo_concerns/vector_work_form_spec.rb +15 -0
  178. data/spec/helpers/bounding_box_helper_spec.rb +34 -0
  179. data/spec/models/concerns/basic_geo_metadata_spec.rb +21 -0
  180. data/spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb +108 -0
  181. data/spec/models/concerns/geo_concerns/file_set/geo_file_format_behavior_spec.rb +56 -0
  182. data/spec/models/external_metadata_file_spec.rb +118 -0
  183. data/spec/models/file_set_spec.rb +9 -0
  184. data/spec/models/image_file_spec.rb +48 -0
  185. data/spec/models/image_work_spec.rb +71 -0
  186. data/spec/models/raster_file_spec.rb +48 -0
  187. data/spec/models/raster_work_spec.rb +122 -0
  188. data/spec/models/solr_document_spec.rb +35 -0
  189. data/spec/models/vector_file_spec.rb +48 -0
  190. data/spec/models/vector_work_spec.rb +113 -0
  191. data/spec/presenters/file_set_presenter_spec.rb +13 -0
  192. data/spec/presenters/geo_concerns_show_presenter_spec.rb +56 -0
  193. data/spec/presenters/image_work_show_presenter_spec.rb +52 -0
  194. data/spec/presenters/raster_work_show_presenter_spec.rb +52 -0
  195. data/spec/presenters/vector_work_show_presenter_spec.rb +41 -0
  196. data/spec/processors/geo_concerns/processors/base_geo_processor_spec.rb +109 -0
  197. data/spec/processors/geo_concerns/processors/raster/aig_spec.rb +28 -0
  198. data/spec/processors/geo_concerns/processors/raster/base_spec.rb +86 -0
  199. data/spec/processors/geo_concerns/processors/raster/dem_spec.rb +26 -0
  200. data/spec/processors/geo_concerns/processors/raster/processor_spec.rb +39 -0
  201. data/spec/processors/geo_concerns/processors/vector/base_spec.rb +67 -0
  202. data/spec/processors/geo_concerns/processors/vector/processor_spec.rb +28 -0
  203. data/spec/processors/geo_concerns/processors/vector/shapefile_spec.rb +17 -0
  204. data/spec/processors/geo_concerns/processors/zip_spec.rb +39 -0
  205. data/spec/renderers/coverage_renderer_spec.rb +21 -0
  206. data/spec/services/derivative_path_spec.rb +12 -0
  207. data/spec/services/raster_format_service_spec.rb +13 -0
  208. data/spec/spec_helper.rb +34 -0
  209. data/spec/support/controllers/engine_helpers.rb +7 -0
  210. data/spec/support/database_cleaner.rb +18 -0
  211. data/spec/support/devise.rb +10 -0
  212. data/spec/support/devise_helpers.rb +6 -0
  213. data/spec/support/factory_girl.rb +3 -0
  214. data/spec/support/features.rb +14 -0
  215. data/spec/support/features/session_helpers.rb +40 -0
  216. data/spec/support/fixture_reader.rb +7 -0
  217. data/spec/test_app_templates/lib/generators/test_app_generator.rb +20 -0
  218. data/spec/values/coverage_spec.rb +40 -0
  219. data/tasks/ci.rake +49 -0
  220. metadata +527 -0
@@ -0,0 +1,8 @@
1
+ <div class="row with-headroom">
2
+ <div class="col-md-12">
3
+ <fieldset id="set-populate-metadata">
4
+ <legend>Automatically Populate Metadata</legend>
5
+ <%= f.input :should_populate_metadata, as: :select, input_html: { class: 'form-control' }, label: 'Populate Metadata from External Metadata File', selected: false %>
6
+ </fieldset>
7
+ </div>
8
+ </div>
@@ -0,0 +1,12 @@
1
+ <fieldset class="required">
2
+ <legend>Required Information</legend>
3
+
4
+ <%= f.input :title, as: :multi_value %>
5
+
6
+ <%= f.input :creator, as: :multi_value %>
7
+
8
+ <%= f.input :contributor, as: :multi_value, input_html: { class: 'form-control' } %>
9
+
10
+ <%= f.input :description, as: :multi_value, input_html: { rows: '14', type: 'textarea'} %>
11
+
12
+ </fieldset>
@@ -0,0 +1,15 @@
1
+ <%= render "geo_concerns/form_bounding_box", f: f %>
2
+ <%= render "geo_concerns/form_files_and_links", f: f %>
3
+ <%= render "form_media", f: f %>
4
+
5
+ <div class="row with-headroom">
6
+ <div class="col-md-12">
7
+ <%= render "form_permission", f: f %>
8
+ </div>
9
+ </div>
10
+
11
+ <%= render "form_rights", f: f %>
12
+
13
+ <% unless curation_concern.new_record? %>
14
+ <%= render "geo_concerns/form_populate_metadata", f: f %>
15
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <% if presenter.external_metadata_file_formats_presenters.present? %>
2
+ <div class="panel panel-default related_files">
3
+ <div class="panel-heading">
4
+ <h2>Metadata Files</h2>
5
+ </div>
6
+ <table class="table table-striped">
7
+ <thead>
8
+ <tr>
9
+ <th>File</th>
10
+ <th>Filename</th>
11
+ <th>Date Uploaded</th>
12
+ <th>Visibility</th>
13
+ <th>Actions</th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+ <%= render partial: 'member', collection: presenter.external_metadata_file_formats_presenters %>
18
+ </tbody>
19
+ </table>
20
+ </div>
21
+ <% elsif can? :edit, presenter.id %>
22
+ <h2>Metadata Files</h2>
23
+ <p class="center"><em>This <%= presenter.human_readable_type %> has no metadata files associated with it. You can add one using the "Attach a File" button below.</em></p>
24
+ <% end %>
@@ -0,0 +1,12 @@
1
+ require 'rdf'
2
+ module GeoConcerns
3
+ class GeoTerms < RDF::Vocabulary('http://projecthydra.org/geoconcerns/models#')
4
+ term :ImageWork
5
+ term :RasterWork
6
+ term :VectorWork
7
+ term :ImageFile
8
+ term :RasterFile
9
+ term :VectorFile
10
+ term :ExternalMetadataFile
11
+ end
12
+ end
data/bin/rails ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/geo_concerns/engine', __FILE__)
6
+
7
+ # Set up gems listed in the Gemfile.
8
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
9
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
10
+
11
+ require 'rails/all'
12
+ require 'rails/engine/commands'
data/config/routes.rb ADDED
@@ -0,0 +1,6 @@
1
+ GeoConcerns::Engine.routes.draw do
2
+ namespace :curation_concerns, 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
+ end
6
+ end
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'geo_concerns/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'geo_concerns'
8
+ spec.version = GeoConcerns::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_concerns'
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.add_dependency 'rails', '~> 4.2.6'
22
+ spec.add_dependency 'curation_concerns', '~> 0.14.0.pre1'
23
+ spec.add_dependency 'leaflet-rails'
24
+
25
+ spec.add_development_dependency 'sqlite3'
26
+ spec.add_development_dependency 'rspec-rails'
27
+ spec.add_development_dependency 'engine_cart'
28
+ spec.add_development_dependency 'solr_wrapper'
29
+ spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
30
+ spec.add_development_dependency 'pry-byebug'
31
+ spec.add_development_dependency 'database_cleaner', '< 1.1.0'
32
+ spec.add_development_dependency 'rubocop'
33
+ spec.add_development_dependency 'rubocop-rspec'
34
+ spec.add_development_dependency 'factory_girl'
35
+ spec.add_development_dependency 'capybara'
36
+ end
@@ -0,0 +1,119 @@
1
+ require 'rails/generators'
2
+
3
+ module GeoConcerns
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 GeoConcerns::Engine => '/'\n"\
11
+ end
12
+ end
13
+
14
+ def register_work
15
+ inject_into_file 'config/initializers/curation_concerns.rb', after: "CurationConcerns.configure do |config|\n" do
16
+ " # Injected via `rails g geo_concerns:install`\n" \
17
+ " config.register_curation_concern :vector_work\n" \
18
+ " config.register_curation_concern :raster_work\n" \
19
+ " config.register_curation_concern :image_work\n"
20
+ end
21
+ end
22
+
23
+ def install_raster_work
24
+ @class_name = 'RasterWork'
25
+ install_work
26
+ install_specs
27
+ end
28
+
29
+ def install_vector_work
30
+ @class_name = 'VectorWork'
31
+ install_work
32
+ install_specs
33
+ end
34
+
35
+ def install_image_work
36
+ @class_name = 'ImageWork'
37
+ install_work
38
+ install_specs
39
+ end
40
+
41
+ def install_file_sets_controller
42
+ file_path = 'app/controllers/curation_concerns/file_sets_controller.rb'
43
+ copy_file 'controllers/curation_concerns/file_sets_controller.rb', file_path
44
+ end
45
+
46
+ def install_authorities
47
+ %w(metadata image vector raster).each do |type|
48
+ file_path = "config/authorities/#{type}_formats.yml"
49
+ copy_file file_path, file_path
50
+ end
51
+ end
52
+
53
+ def override_characterize_job
54
+ file_path = 'app/jobs/characterize_job.rb'
55
+ copy_file 'jobs/characterize_job.rb', file_path
56
+ end
57
+
58
+ def inject_into_file_set
59
+ file_path = 'app/models/file_set.rb'
60
+ if File.exist?(file_path)
61
+ inject_into_file file_path, after: /include ::CurationConcerns::FileSetBehavior.*$/ do
62
+ "\n # GeoConcerns behavior to FileSet.\n" \
63
+ " include ::GeoConcerns::GeoFileSetBehavior\n"
64
+ end
65
+ else
66
+ copy_file 'models/file_set.rb', file_path
67
+ end
68
+ end
69
+
70
+ def file_set_presenter
71
+ file_path = 'app/presenters/file_set_presenter.rb'
72
+ if File.exist?(file_path)
73
+ inject_into_file file_path, after: /class FileSetPresenter.*$/ do
74
+ "\n # GeoConcerns FileSetPresenter behavior\n" \
75
+ " include ::GeoConcerns::FileSetPresenterBehavior\n"
76
+ end
77
+ else
78
+ copy_file 'presenters/file_set_presenter.rb', file_path
79
+ end
80
+ end
81
+
82
+ # Add behaviors to the SolrDocument model
83
+ def inject_solr_document_behavior
84
+ file_path = 'app/models/solr_document.rb'
85
+ if File.exist?(file_path)
86
+ inject_into_file file_path, after: /include Blacklight::Solr::Document.*$/ do
87
+ "\n # Adds GeoConcerns behaviors to the SolrDocument.\n" \
88
+ " include GeoConcerns::SolrDocumentBehavior\n"
89
+ end
90
+ else
91
+ Rails.logger.info " \e[31mFailure\e[0m GeoConcerns requires a SolrDocument object. This generators assumes that the model is defined in the file #{file_path}, which does not exist."
92
+ end
93
+ end
94
+
95
+ def install_assets
96
+ copy_file 'geo_concerns.js', 'app/assets/javascripts/geo_concerns.js'
97
+ copy_file 'geo_concerns.scss', 'app/assets/stylesheets/geo_concerns.scss'
98
+ end
99
+
100
+ private
101
+
102
+ def install_work
103
+ name = @class_name.underscore
104
+ model_path = "app/models/#{name}.rb"
105
+ actor_path = "app/actors/curation_concerns/#{name}_actor.rb"
106
+ controller_path = "app/controllers/curation_concerns/#{name.pluralize}_controller.rb"
107
+ copy_file "models/#{name}.rb", model_path
108
+ copy_file "actors/curation_concerns/#{name}_actor.rb", actor_path
109
+ copy_file "controllers/curation_concerns/#{name.pluralize}_controller.rb", controller_path
110
+ end
111
+
112
+ def install_specs
113
+ name = @class_name.underscore
114
+ template 'spec/model_spec.rb.erb', "spec/models/#{name}_spec.rb"
115
+ template 'spec/actor_spec.rb.erb', "spec/actors/#{name}_actor_spec.rb"
116
+ template 'spec/controller_spec.rb.erb', "spec/controllers/#{name.pluralize}_controller_spec_spec.rb"
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,4 @@
1
+ module CurationConcerns
2
+ class ImageWorkActor < CurationConcerns::BaseActor
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module CurationConcerns
2
+ class RasterWorkActor < CurationConcerns::BaseActor
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module CurationConcerns
2
+ class VectorWorkActor < CurationConcerns::BaseActor
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ terms:
2
+ - id: image/jpeg
3
+ term: JPEG
4
+ - id: image/tiff
5
+ term: TIFF
@@ -0,0 +1,7 @@
1
+ terms:
2
+ - id: application/xml; schema=fgdc
3
+ term: FGDC
4
+ - id: application/xml; schema=iso19139
5
+ term: ISO19139
6
+ - id: application/mods+xml
7
+ term: MODS
@@ -0,0 +1,9 @@
1
+ terms:
2
+ - id: image/tiff; gdal-format=GTiff
3
+ term: GeoTIFF
4
+ - id: text/plain; gdal-format=AAIGrid
5
+ term: Arc/Info ASCII Grid
6
+ - id: application/octet-stream; gdal-format=AIG
7
+ term: Arc/Info Binary Grid
8
+ - id: text/plain; gdal-format=USGSDEM
9
+ term: USGS ASCII DEM
@@ -0,0 +1,5 @@
1
+ terms:
2
+ - id: application/zip; ogr-format="ESRI Shapefile"
3
+ term: ESRI Shapefile
4
+ - id: application/vnd.geo+json
5
+ term: GeoJSON
@@ -0,0 +1,6 @@
1
+ module CurationConcerns
2
+ class FileSetsController < ApplicationController
3
+ include CurationConcerns::FileSetsControllerBehavior
4
+ include GeoConcerns::FileSetsControllerBehavior
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class CurationConcerns::ImageWorksController < ApplicationController
2
+ include CurationConcerns::CurationConcernController
3
+ include GeoConcerns::ImageWorksControllerBehavior
4
+ self.curation_concern_type = ImageWork
5
+ end
@@ -0,0 +1,6 @@
1
+ class CurationConcerns::RasterWorksController < ApplicationController
2
+ include CurationConcerns::CurationConcernController
3
+ include CurationConcerns::ParentContainer
4
+ include GeoConcerns::RasterWorksControllerBehavior
5
+ self.curation_concern_type = RasterWork
6
+ end
@@ -0,0 +1,6 @@
1
+ class CurationConcerns::VectorWorksController < ApplicationController
2
+ include CurationConcerns::CurationConcernController
3
+ include CurationConcerns::ParentContainer
4
+ include GeoConcerns::VectorWorksControllerBehavior
5
+ self.curation_concern_type = VectorWork
6
+ end
@@ -0,0 +1 @@
1
+ //= require geo_concerns/application
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require geo_concerns/application
3
+ */
@@ -0,0 +1,12 @@
1
+ class CharacterizeJob < ActiveJob::Base
2
+ queue_as :characterize
3
+
4
+ # @param [FileSet] file_set
5
+ # @param [String] filename a local path for the file to characterize.
6
+ def perform(file_set, filename)
7
+ Hydra::Works::CharacterizationService.run(file_set, filename)
8
+ file_set.mime_type = file_set.original_file.mime_type
9
+ file_set.save!
10
+ CreateDerivativesJob.perform_later(file_set, filename)
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ class FileSet < ActiveFedora::Base
2
+ include ::CurationConcerns::FileSetBehavior
3
+ include ::GeoConcerns::GeoFileSetBehavior
4
+ end
@@ -0,0 +1,6 @@
1
+ class ImageWork < ActiveFedora::Base
2
+ include ::CurationConcerns::WorkBehavior
3
+ include ::GeoConcerns::ImageWorkBehavior
4
+ include ::CurationConcerns::BasicMetadata
5
+ include ::GeoConcerns::BasicGeoMetadata
6
+ end
@@ -0,0 +1,7 @@
1
+ class RasterWork < ActiveFedora::Base
2
+ include ::CurationConcerns::WorkBehavior
3
+ include ::GeoConcerns::RasterWorkBehavior
4
+ include ::CurationConcerns::BasicMetadata
5
+ include ::GeoConcerns::BasicGeoMetadata
6
+ include ::GeoConcerns::GeoreferencedBehavior
7
+ end
@@ -0,0 +1,7 @@
1
+ class VectorWork < ActiveFedora::Base
2
+ include ::CurationConcerns::WorkBehavior
3
+ include ::GeoConcerns::VectorWorkBehavior
4
+ include ::CurationConcerns::BasicMetadata
5
+ include ::GeoConcerns::BasicGeoMetadata
6
+ include ::GeoConcerns::GeoreferencedBehavior
7
+ end
@@ -0,0 +1,3 @@
1
+ class FileSetPresenter < CurationConcerns::FileSetPresenter
2
+ include ::GeoConcerns::FileSetPresenterBehavior
3
+ end
@@ -0,0 +1,9 @@
1
+ # Generated via
2
+ # `rails generate geo_concerns:install`
3
+ require 'rails_helper'
4
+
5
+ describe CurationConcerns::<%= class_name %>Actor do
6
+ it "has tests" do
7
+ skip "Add your tests here"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # Generated via
2
+ # `rails generate geo_concerns:install`
3
+ require 'rails_helper'
4
+
5
+ describe CurationConcerns::<%= class_name.pluralize %>Controller do
6
+ it "has tests" do
7
+ skip "Add your tests here"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # Generated via
2
+ # `rails generate geo_concerns:install`
3
+ require 'rails_helper'
4
+
5
+ describe <%= class_name %> do
6
+ it "has tests" do
7
+ skip "Add your tests here"
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ require 'curation_concerns'
2
+ require "geo_concerns/engine"
3
+ require 'leaflet-rails'
4
+
5
+ module GeoConcerns
6
+ end