class Libis::Services::Scope::Search
Attributes
oracle[R]
Public Class Methods
new()
click to toggle source
# File lib/libis/services/scope/search.rb, line 14 def initialize @doc = nil end
Public Instance Methods
connect(name, password, database = nil)
click to toggle source
# File lib/libis/services/scope/search.rb, line 18 def connect(name, password, database = nil) database ||= 'libis-db-scope.cc.kuleuven.be:1556/SCOPEP.kuleuven.be' @oracle = OracleClient.new("#{name}/#{password}@#{database}") self end
connect_url(url)
click to toggle source
# File lib/libis/services/scope/search.rb, line 24 def connect_url(url) @oracle = OracleClient.new(url) self end
each(_ = {}) { |doc| ... }
click to toggle source
# File lib/libis/services/scope/search.rb, line 62 def each(_ = {}) yield @doc end
find(term, options = {})
click to toggle source
Calls superclass method
Libis::Services::GenericSearch#find
# File lib/libis/services/scope/search.rb, line 29 def find(term, options = {}) super end
next_record(_ = {}) { |doc| ... }
click to toggle source
# File lib/libis/services/scope/search.rb, line 66 def next_record(_ = {}) yield @doc end
query(term, options = {})
click to toggle source
# File lib/libis/services/scope/search.rb, line 33 def query(term, options = {}) case options[:type] || 'REPCODE' when 'REPCODE' @oracle.call('kul_packages.scope_xml_meta_file_ed', [term.upcase]) when 'ID' @oracle.call('kul_packages.scope_xml_meta_file_by_id', [term.to_i]) else raise RuntimeError, "Invalid Scope search type '#{options[:type]}'" end term = term.gsub(/[-\/]/, '_') err_file = "/nas/vol03/oracle/#{options[:dir] || 'SCOPEP'}/#{term}_err.XML" md_file = "/nas/vol03/oracle/#{options[:dir] || 'SCOPEP'}/#{term}_md.XML" if File.exist? err_file doc = Libis::Tools::XmlDocument.open(err_file) msg = doc['/error/error_msg'] detail = doc['/error/error_'] File.delete(err_file) rescue nil @doc = nil raise RuntimeError, "Scope search failed: '#{msg}'. Details: '#{detail}'" elsif File.exist? md_file @doc = Libis::Tools::XmlDocument.open(md_file) File.delete(md_file) rescue nil @doc else raise RuntimeError, 'Scope search did not generate expected result file.' end end