module TavernaPlayer::Concerns::Models::RunPort
Constants
- MAXIMUM_DATABASE_VALUE_SIZE
Public Instance Methods
deep_value(index)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 84 def deep_value(index) # Need to mangle the path here in two ways: # * Files are indexed from 1 (not zero) in the output zip files. # * Errors are saved to a file with a '.error' suffix. path = index.map { |i| i + 1 }.join("/") path += ".error" if value_is_error?(index) read_file_from_zip(file.path, path) end
delete_value()
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 57 def delete_value self[:value] = nil end
display_name()
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 112 def display_name name.gsub('_', ' ') end
filename()
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 116 def filename port_file = depth == 0 ? name : "#{name}.zip" "#{run.name}-#{port_file}" end
path(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 168 def path(*indices) index = [*indices].flatten path = index.empty? ? "" : "/" + index.join("/") file_url_via_run + path end
process_value()
click to toggle source
If the value is too big to fit in the database then overflow it into a file.
# File lib/taverna_player/concerns/models/run_port.rb, line 63 def process_value v = self[:value] if !v.blank? && v.size > MAXIMUM_DATABASE_VALUE_SIZE self[:value] = v[0...MAXIMUM_DATABASE_VALUE_SIZE] save_value_to_file(v) else self.file = nil unless file.path.blank? end end
save_value_to_file(v)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 74 def save_value_to_file(v) Dir.mktmpdir("#{id}", Rails.root.join("tmp")) do |tmp_dir| tmp_file_name = File.join(tmp_dir, "#{name}.txt") File.write(tmp_file_name, v.force_encoding("UTF-8")) self.file = File.new(tmp_file_name) end end
set_value_metadata(field, value)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 100 def set_value_metadata(field, value) return unless depth == list_depth(value) md = metadata md = Hash.new if md.nil? md[field] = value self.metadata = md save end
value(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 150 def value(*indices) file_path = file.path if depth == 0 if file_path.blank? self[:value] else value_is_text? ? File.read(file_path) : File.binread(file_path) end else index = [*indices].flatten index.empty? ? File.binread(file_path) : deep_value(index) end end
value=(v)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 164 def value=(v) self[:value] = v.force_encoding("BINARY") end
value_is_error?(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 134 def value_is_error?(*indices) value_type(*indices) == "application/x-error" end
value_is_text?(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 129 def value_is_text?(*indices) type = value_type(*indices) type.starts_with?("text") end
value_metadata(field, *indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 94 def value_metadata(field, *indices) return if metadata.nil? index = [*indices].flatten recurse_into_lists(metadata[field], index) end
value_preview()
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 146 def value_preview self[:value] end
value_size(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 138 def value_size(*indices) value_metadata(:size, *indices) end
value_size=(size)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 142 def value_size=(size) set_value_metadata(:size, size) end
value_type(*indices)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 121 def value_type(*indices) value_metadata(:type, *indices) || "text/plain" end
value_type=(type)
click to toggle source
# File lib/taverna_player/concerns/models/run_port.rb, line 125 def value_type=(type) set_value_metadata(:type, type) end