Sha256: befa0a3b103f0b3df9bedba4818a9197850d63a07266f2ada3dfe7cd509dad24

Contents?: true

Size: 1.1 KB

Versions: 8

Compression:

Stored size: 1.1 KB

Contents

module GeoConcerns
  module Discovery
    class DocumentBuilder
      class SpatialBuilder
        attr_reader :geo_concern

        def initialize(geo_concern)
          @geo_concern = geo_concern
        end

        # Builds spatial fields such as bounding box and solr geometry.
        # @param [AbstractDocument] discovery document
        def build(document)
          document.solr_coverage = to_solr
        end

        private

          # Parses coverage field from geo work and instantiates a coverage object.
          # @return [GeoConcerns::Coverage] coverage object
          def coverage
            @coverage ||= GeoConcerns::Coverage.parse(geo_concern.coverage.first)
          end

          # Returns the coverage in solr format. For example:
          # `ENVELOPE(minX, maxX, maxY, minY)`
          # @see 'https://cwiki.apache.org/confluence/display/solr/Spatial+Search'
          # @return [String] coverage in solr format
          def to_solr
            "ENVELOPE(#{coverage.w}, #{coverage.e}, #{coverage.n}, #{coverage.s})"
          rescue
            ''
          end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
geo_concerns-0.3.4 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.3.3 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.3.2 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.3.1 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.3.0 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.2.0 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.1.1 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.1.0 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb