Sha256: 0f2085d49ebcec45693aa61ce4444fee6d06ba11a07f3deb90fd63989b225165

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

include_class Java::OrgApacheSolrClientSolrjImpl::StreamingUpdateSolrServer
include_class Java::OrgApacheSolrCommon::SolrInputDocument

class  StreamingUpdateSolrServer
  alias_method :susadd, :add 
  
  def add doc
    if doc.is_a? org.apache.solr.common.SolrInputDocument
      susadd doc
    elsif doc.respond_to? :each_pair
      newdoc = SolrInputDocument.new
      doc.each_pair do |f,v|
        newdoc << [f,v]
      end
      susadd newdoc
    else
      puts "ERROR: Need to pass either a org.apache.solr.common.SolrInputDocument or a hash"
    end
  end
  
  alias_method :<<, :add
  
end


class SolrInputDocument
  def << fv
    field = fv[0]
    value = fv[1]
    if field.is_a?(Symbol)
      field = field.to_s
    end
    if value.respond_to?(:each)
      value.each do |v|
        self.addField(field, v)
      end
    else
      self.addField(field, value)
    end
    self[field]
  end
  
  def [] field
    if field.is_a?(Symbol)
      field = field.to_s
    end
    f = self.get(field)
    return nil if (f == nil)
    
    v = f.value
    if v.class == Java::JavaUtil::ArrayList
      return v.to_a
    else 
      return v
    end
  end
  
  def []= field, value
    if field.is_a?(Symbol)
      field = field.to_s
    end
    self.setField(field, value)
    self[field]
  end
  
  def merge! h
    # throw an error unless h.respond_to?(:each_pair)
    h.each_pair do |k,v|
      self << [k,v]
    end
  end
end




Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jruby_streaming_update_solr_server-0.0.0 lib/jruby_streaming_update_solr_server.rb