parsing.rb revision 72dcd95a7306d346b649144736b8634f8b9cf9af
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenmodule OntologyVersion::Parsing
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen extend ActiveSupport::Concern
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen included do
b780aa272b742a43579cdb523cc79cc8d4521306Timo Sirainen @queue = 'hets'
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainen async_method :parse
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainen after_create :async_parse, :if => :commit_oid?
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen end
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen def parse
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen# do_or_set_failed do
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen# condition = ['checksum = ? and id != ?', self.checksum, self.id]
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen# if OntologyVersion.where(condition).any?
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen# raise Exception.new('Another file with same checksum already exists.')
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen# end
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen# end
62041dfb7d6ac6e9c633a557075999cdfcff7bd5Timo Sirainen
e15b305e90c9834734ccf35ed78f0ad29d570ee9Timo Sirainen update_state! :processing
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
872d122a6f570e462f40341b7dd581dbd7d59f90Timo Sirainen do_or_set_failed do
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen refresh_checksum! unless checksum?
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen @path = Hets.parse(self.raw_path!, File.dirname(self.xml_path))
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
036626b19f14bef582f96e556913ae91b1d67881Timo Sirainen # move generated file to destination
68b5e132f1f8bb2528482310daffcc06c2f019d3Timo Sirainen File.rename @path, self.xml_path
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
b780aa272b742a43579cdb523cc79cc8d4521306Timo Sirainen self.ontology.import_latest_version self.user
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen update_state! :done
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen end
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen end
dc53fff3700362b544dcba166ff81420db227a60Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen