parsing.rb revision 5cad3e82e8c017bc189c4cecc00541ec19a2a6e2
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoomodule OntologyVersion::Parsing
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo extend ActiveSupport::Concern
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo included do
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo after_create :parse_async, :if => :raw_file?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo def parse
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo raise ArgumentError.new('No raw_file set.') unless raw_file?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# do_or_set_failed do
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# condition = ['checksum = ? and id != ?', self.checksum, self.id]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# if OntologyVersion.where(condition).any?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# raise Exception.new('Another file with same checksum already exists.')
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo# end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo update_state! :processing
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo do_or_set_failed do
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo @path = Hets.parse(self.raw_file.current_path)
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo self.xml_file = File.open(@path)
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo save!
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo File.delete(@path)
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo self.ontology.import_latest_version self.user
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo update_state! :done
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo def parse_async
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo async :parse
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo end
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yooend
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo