class EBSCO::EDS::Options

Attributes

Actions[RW]
Comment[RW]
RetrievalCriteria[RW]
SearchCriteria[RW]

Public Class Methods

new(options = {}, info) click to toggle source
# File lib/ebsco/eds/options.rb, line 10
def initialize(options = {}, info)
  
  @SearchCriteria = EBSCO::EDS::SearchCriteria.new(options, info)

  @RetrievalCriteria = EBSCO::EDS::RetrievalCriteria.new(options, info)
  
  @Actions = []

  @Comment = ''

  # add DefaultOn=y Type=select limiters
  # info.available_limiters.each do |limiter|
  #   if limiter['DefaultOn'] == 'n' and limiter['Type'] == 'select'
  #     @Actions.push "addLimiter(#{limiter['Id']}:y)"
  #   end
  # end

  # add page default of 1
  unless options.has_key?('page') || options.has_key?('page_number')
    options['page'] = 1
  end

  options.each do |key, value|

    case key

      when :actions
        add_actions(options[:actions], info)

      # SOLR: Need to add page actions whenever other actions are present since the other actions
      # will always reset the page to 1 even though a PageNumber is present in RetrievalCriteria.
      when 'page', 'page_number'
        @Actions.push "GoToPage(#{value.to_i})"

    end
  end
  
end

Public Instance Methods

add_actions(actions, info) click to toggle source
# File lib/ebsco/eds/options.rb, line 49
def add_actions(actions, info)
  if actions.kind_of?(Array) && actions.count > 0
    actions.each do |item|
      #if is_valid_action(item, info)
      @Actions.push item
      #end
    end
  else
    #if is_valid_action(actions, info)
    @Actions = [actions]
    #else
    #end
  end
end
to_query_string() click to toggle source

Caution: experimental, not ready for production query-1=AND,volcano&sort=relevance&includefacets=y&searchmode=all&autosuggest=n&view=brief&resultsperpage=20&pagenumber=1&highlight=y

# File lib/ebsco/eds/options.rb, line 85
def to_query_string
  qs = ''

  # SEARCH CRITERIA:

  # query
  #  if @SearchCriteria.Queries[0].has_key? :BooleanOperator
  #   qs << 'query=' + @SearchCriteria.Queries[0][:BooleanOperator]
  # else
  #   qs << 'query=AND'
  # end
  # if @SearchCriteria.Queries[0].has_key? :FieldCode
  #   qs << ',' + @SearchCriteria.Queries[0][:FieldCode]
  # end
  qs << 'query=' + @SearchCriteria.Queries[0][:Term]

  # mode
  qs << '&searchmode=' + @SearchCriteria.SearchMode

  # facets
  qs << '&includefacets=' + @SearchCriteria.IncludeFacets

  # sort
  qs << '&sort=' + @SearchCriteria.Sort

  # auto-suggest
  qs << '&autosuggest=' + @SearchCriteria.AutoSuggest

  # auto-correct
  qs << '&autocorrect=' + @SearchCriteria.AutoCorrect

  # limiters
  unless @SearchCriteria.Limiters.nil?
    qs << '&limiter=' + @SearchCriteria.Limiters.join(',')
  end

  # expanders
  qs << '&expander=' + @SearchCriteria.Expanders.join(',')

  # facet filters
  unless @SearchCriteria.FacetFilters.nil?
    qs << '&facetfilter=1,' + @SearchCriteria.FacetFilters.join(',')
  end

  # related content
  unless @SearchCriteria.RelatedContent.nil?
    qs << '&relatedcontent=' + @SearchCriteria.RelatedContent.join(',')
  end

  # Retrieval Criteria
  unless @RetrievalCriteria.View.nil?
    qs << '&view=' + @RetrievalCriteria.View
  end
  unless @RetrievalCriteria.ResultsPerPage.nil?
    qs << '&resultsperpage=' + @RetrievalCriteria.ResultsPerPage.to_s
  end
  unless @RetrievalCriteria.PageNumber.nil?
    qs << '&pagenumber=' + @RetrievalCriteria.PageNumber.to_s
  end
  unless @RetrievalCriteria.Highlight.nil?
    qs << '&highlight=' + @RetrievalCriteria.Highlight.to_s
  end

  unless @Actions.nil?
    @Actions.each do |action|
      qs << '&action=' + action
    end
  end
  qs

end