geo_concerns 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.travis.yml +8 -4
  4. data/README.md +23 -8
  5. data/app/controllers/concerns/geo_concerns/messenger_behavior.rb +29 -0
  6. data/app/jobs/delivery_job.rb +15 -2
  7. data/app/jobs/geoblacklight_job.rb +10 -0
  8. data/app/models/concerns/geo_concerns/file_set/derivatives.rb +11 -9
  9. data/app/models/concerns/geo_concerns/solr_document_behavior.rb +5 -0
  10. data/app/presenters/geo_concerns/geo_concerns_show_presenter.rb +1 -1
  11. data/app/processors/geo_concerns/processors/base_geo_processor.rb +9 -24
  12. data/app/processors/geo_concerns/processors/image.rb +59 -0
  13. data/app/processors/geo_concerns/processors/ogr.rb +1 -1
  14. data/app/processors/geo_concerns/processors/raster.rb +18 -3
  15. data/app/processors/geo_concerns/processors/raster/base.rb +1 -0
  16. data/app/processors/geo_concerns/processors/rendering.rb +79 -0
  17. data/app/processors/geo_concerns/processors/vector.rb +16 -3
  18. data/app/processors/geo_concerns/processors/vector/base.rb +3 -2
  19. data/app/processors/geo_concerns/processors/vector/info.rb +21 -3
  20. data/app/services/geo_concerns/delivery/geoserver.rb +43 -6
  21. data/app/services/geo_concerns/discovery/abstract_document.rb +2 -1
  22. data/app/services/geo_concerns/discovery/document_builder.rb +2 -3
  23. data/app/services/geo_concerns/discovery/document_builder/basic_metadata_builder.rb +13 -2
  24. data/app/services/geo_concerns/discovery/document_builder/date_builder.rb +2 -0
  25. data/app/services/geo_concerns/discovery/document_builder/document_path.rb +12 -7
  26. data/app/services/geo_concerns/discovery/document_builder/references_builder.rb +20 -1
  27. data/app/services/geo_concerns/discovery/document_builder/spatial_builder.rb +2 -0
  28. data/app/services/geo_concerns/discovery/document_builder/wxs.rb +81 -0
  29. data/app/services/geo_concerns/discovery/geoblacklight_document.rb +9 -3
  30. data/app/services/geo_concerns/events_generator.rb +25 -0
  31. data/app/services/geo_concerns/events_generator/base_events_generator.rb +22 -0
  32. data/app/services/geo_concerns/events_generator/composite_generator.rb +18 -0
  33. data/app/services/geo_concerns/events_generator/geoblacklight_event_generator.rb +44 -0
  34. data/app/services/geo_concerns/events_generator/geoserver_event_generator.rb +30 -0
  35. data/app/services/geo_concerns/local_messaging_client.rb +18 -0
  36. data/app/services/geo_concerns/rabbit_messaging_client.rb +38 -0
  37. data/app/values/geo_concerns/time_period.rb +4 -5
  38. data/app/views/geo_concerns/_attribute_rows.html.erb +1 -0
  39. data/app/views/geo_concerns/_form_additional_information.html.erb +1 -0
  40. data/app/views/geo_concerns/file_sets/actions/_default_actions.html.erb +1 -1
  41. data/app/views/geo_concerns/file_sets/actions/_image_actions.html.erb +1 -1
  42. data/app/views/geo_concerns/file_sets/actions/_metadata_actions.html.erb +1 -1
  43. data/app/views/geo_concerns/file_sets/actions/_raster_actions.html.erb +2 -2
  44. data/app/views/geo_concerns/file_sets/actions/_vector_actions.html.erb +2 -2
  45. data/app/views/geo_concerns/file_sets/media_display/_geo.html.erb +2 -1
  46. data/docker-compose-full.yml +30 -0
  47. data/docker-compose.yml +4 -5
  48. data/geo_concerns.gemspec +5 -4
  49. data/lib/generators/geo_concerns/install_generator.rb +19 -25
  50. data/lib/generators/geo_concerns/templates/config/geoblacklight.yml +12 -0
  51. data/lib/generators/geo_concerns/templates/config/geoserver.yml +2 -0
  52. data/lib/generators/geo_concerns/templates/config/initializers/geoblacklight_config.rb +13 -0
  53. data/lib/generators/geo_concerns/templates/config/initializers/messaging_config.rb +34 -0
  54. data/lib/generators/geo_concerns/templates/config/initializers/simpler_tiles.rb +65 -0
  55. data/lib/generators/geo_concerns/templates/config/messaging.yml +15 -0
  56. data/lib/generators/geo_concerns/templates/config/simpler_tiles.yml +24 -0
  57. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/file_sets_controller.rb +1 -0
  58. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/image_works_controller.rb +1 -0
  59. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/raster_works_controller.rb +1 -0
  60. data/lib/generators/geo_concerns/templates/controllers/curation_concerns/vector_works_controller.rb +1 -0
  61. data/lib/geo_concerns/version.rb +1 -1
  62. data/run-docker.sh +11 -1
  63. data/spec/controllers/file_sets_controller_spec.rb +50 -0
  64. data/spec/jobs/delivery_job_spec.rb +30 -7
  65. data/spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb +9 -3
  66. data/spec/models/solr_document_spec.rb +6 -0
  67. data/spec/processors/geo_concerns/processors/base_geo_processor_spec.rb +15 -22
  68. data/spec/processors/geo_concerns/processors/image_spec.rb +71 -0
  69. data/spec/processors/geo_concerns/processors/rendering_spec.rb +64 -0
  70. data/spec/processors/geo_concerns/processors/vector/base_spec.rb +1 -1
  71. data/spec/processors/geo_concerns/processors/vector/info_spec.rb +10 -1
  72. data/spec/services/geo_concerns/delivery/geoserver_spec.rb +30 -6
  73. data/spec/services/{derivative_path_spec.rb → geo_concerns/derivative_path_spec.rb} +0 -0
  74. data/spec/services/geo_concerns/discovery/document_builder/wxs_spec.rb +69 -0
  75. data/spec/services/geo_concerns/discovery/document_builder_spec.rb +48 -32
  76. data/spec/services/geo_concerns/discovery/geoblacklight_document_spec.rb +1 -0
  77. data/spec/services/geo_concerns/events_generator/geoblacklight_event_generator_spec.rb +87 -0
  78. data/spec/services/geo_concerns/events_generator/geoserver_event_generator_spec.rb +40 -0
  79. data/spec/services/geo_concerns/local_messaging_client_spec.rb +35 -0
  80. data/spec/services/geo_concerns/rabbit_messaging_client_spec.rb +35 -0
  81. data/spec/services/{raster_format_service_spec.rb → geo_concerns/raster_format_service_spec.rb} +0 -0
  82. data/template.rb +1 -1
  83. metadata +85 -31
  84. data/app/processors/geo_concerns/processors/mapnik.rb +0 -35
  85. data/app/processors/geo_concerns/processors/raster/processor.rb +0 -26
  86. data/app/processors/geo_concerns/processors/vector/processor.rb +0 -24
  87. data/lib/generators/geo_concerns/templates/config/locales/geo_concerns.en.yml +0 -4
  88. data/lib/generators/geo_concerns/templates/config/mapnik.yml +0 -24
  89. data/spec/processors/geo_concerns/processors/mapnik_spec.rb +0 -70
@@ -1,35 +0,0 @@
1
- require 'simple_mapnik'
2
-
3
- module GeoConcerns
4
- module Processors
5
- module Mapnik
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- def self.mapnik_vector_thumbnail(in_path, out_path, options)
10
- vector_info = GeoConcerns::Processors::Vector::Info.new(in_path)
11
- options[:name] = vector_info.name
12
- SimpleMapnik.register_datasources mapnik_datasources
13
- map = SimpleMapnik::Map.new(*mapnik_size(options))
14
- map.load_string(mapnik_config(in_path, options).xml)
15
- map.zoom_all
16
- map.to_file out_path
17
- end
18
-
19
- def self.mapnik_size(options)
20
- options[:output_size].split(' ').map(&:to_i)
21
- end
22
-
23
- def self.mapnik_config(in_path, options)
24
- path_name = "#{in_path}/#{options[:name]}"
25
- SimpleMapnik::Config.new(path_name)
26
- end
27
-
28
- def self.mapnik_datasources
29
- standard = '/usr/local/lib/mapnik/input'
30
- Dir.exist?(standard) ? standard : '/usr/lib/mapnik/input'
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,26 +0,0 @@
1
- module GeoConcerns
2
- module Processors
3
- module Raster
4
- class Processor < Hydra::Derivatives::Processors::Processor
5
- def process
6
- raster_processor_class.new(source_path,
7
- directives,
8
- output_file_service: output_file_service).process
9
- end
10
-
11
- # Returns a raster processor class based on mime type passed in the directives object.
12
- # @return raster processing class
13
- def raster_processor_class
14
- case directives.fetch(:input_format)
15
- when 'text/plain; gdal-format=USGSDEM'
16
- GeoConcerns::Processors::Raster::Dem
17
- when 'application/octet-stream; gdal-format=AIG'
18
- GeoConcerns::Processors::Raster::Aig
19
- else
20
- GeoConcerns::Processors::Raster::Base
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,24 +0,0 @@
1
- module GeoConcerns
2
- module Processors
3
- module Vector
4
- class Processor < Hydra::Derivatives::Processors::Processor
5
- def process
6
- vector_processor_class.new(source_path,
7
- directives,
8
- output_file_service: output_file_service).process
9
- end
10
-
11
- # Returns a vector processor class based on mime type passed in the directives object.
12
- # @return vector processing class
13
- def vector_processor_class
14
- case directives.fetch(:input_format)
15
- when 'application/zip; ogr-format="ESRI Shapefile"'
16
- GeoConcerns::Processors::Vector::Shapefile
17
- else
18
- GeoConcerns::Processors::Vector::Base
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,4 +0,0 @@
1
- en:
2
- geo_concerns:
3
- institution:
4
- uri: "https://your-institution"
@@ -1,24 +0,0 @@
1
- # Basic Mapnik style settings. Values are explained here:
2
- # https://github.com/mapnik/mapnik/wiki/XMLConfigReference
3
-
4
- # Use '#ffffff' for a solid white background.
5
- # Add two zeros to a six digit hex color code
6
- # for a png (does not work with jpeg) image
7
- # with a transparent background.
8
- background_color: '#ffffff00'
9
-
10
- # Polygon feature settings
11
- polygon_fill_color: '#fffff0'
12
-
13
- # Line feature settings
14
- line_stroke_color: '#483d8b'
15
- line_stroke_width: '0.3'
16
-
17
- # Point feature settings
18
- marker_fill: '#0000ff'
19
- marker_width: '5'
20
- marker_height: '5'
21
- marker_stroke_color: '#483d8b'
22
- marker_stroke_width: '0.2'
23
- marker_placement: 'point'
24
- marker_allow_overlap-overlap: 'true'
@@ -1,70 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe GeoConcerns::Processors::Mapnik do
4
- before do
5
- class TestProcessor
6
- include GeoConcerns::Processors::Mapnik
7
- end
8
- end
9
-
10
- after { Object.send(:remove_const, :TestProcessor) }
11
-
12
- subject { TestProcessor.new }
13
-
14
- let(:output_file) { 'output/geo.png' }
15
- let(:file_name) { 'files' }
16
- let(:options) { { output_size: '150 150' } }
17
-
18
- describe '#mapnik_vector_thumbnail' do
19
- let(:map) { double }
20
- let(:info) { double }
21
-
22
- before do
23
- allow(GeoConcerns::Processors::Vector::Info).to receive(:new).and_return(info)
24
- allow(SimpleMapnik::Map).to receive(:new).and_return(map)
25
- end
26
-
27
- it 'saves a vector thumbnail using simple_mapnik' do
28
- expect(info).to receive(:name).and_return('test')
29
- expect(map).to receive(:load_string)
30
- expect(map).to receive(:zoom_all)
31
- expect(map).to receive(:to_file).with(output_file)
32
- subject.class.mapnik_vector_thumbnail(file_name, output_file, options)
33
- end
34
-
35
- describe '#mapnik_size' do
36
- it 'returns an array of width and height' do
37
- expect(subject.class.mapnik_size(options)).to eq([150, 150])
38
- end
39
- end
40
-
41
- describe '#mapnik_config' do
42
- it 'returns a mapnik config object' do
43
- options[:name] = 'test'
44
- expect(subject.class.mapnik_config(file_name, options)).to be_a(SimpleMapnik::Config)
45
- end
46
- end
47
-
48
- describe '#mapnik_datasources' do
49
- context 'with a mapnik plugin directory in a standard location' do
50
- before do
51
- allow(Dir).to receive(:exist?).and_return(true)
52
- end
53
-
54
- it 'returns a path to the standard input pugin directory' do
55
- expect(subject.class.mapnik_datasources).to eq('/usr/local/lib/mapnik/input')
56
- end
57
- end
58
-
59
- context 'with a mapnik plugin directory that is not in a standard location' do
60
- before do
61
- allow(Dir).to receive(:exist?).and_return(false)
62
- end
63
-
64
- it 'returns an alternate path to the input pugin directory' do
65
- expect(subject.class.mapnik_datasources).to eq('/usr/lib/mapnik/input')
66
- end
67
- end
68
- end
69
- end
70
- end