Sha256: 423a5c5be978b598436bb52297aa91572e569cba27dead88558441bf5de5bc57
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
require 'libis/services/generic_search' require 'libis/services/oracle_client' require 'libis/tools/xml_document' module Libis module Services module Scope class Search include ::Libis::Services::GenericSearch attr_reader :oracle def initialize @doc = nil end def connect(name, password) @oracle = OracleClient.new( 'libis-db-scope.cc.kuleuven.be:1556/SCOPEP.kuleuven.be', name, password ) end def find(term, options = {}) super end 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/SCOPEP/#{term}_err.XML" md_file = "/nas/vol03/oracle/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 def each(_ = {}) yield @doc end def next_record(_ = {}) yield @doc end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
libis-services-0.1.12 | lib/libis/services/scope/search.rb |