Sha256: df8f92c1201b0f01859d37b3259f75e75370238aad6a27761918a518b22025f6

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 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})"
          end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
geo_concerns-0.0.10 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.0.9 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb
geo_concerns-0.0.8 app/services/geo_concerns/discovery/document_builder/spatial_builder.rb