class Teneo::DataModel::ConversionTask

noinspection RailsParamDefResolve

Public Class Methods

from_hash(hash, id_tags = [:conversion_workflow_id, :name]) click to toggle source
Calls superclass method Teneo::DataModel::Base::from_hash
# File lib/teneo/data_model/conversion_task.rb, line 28
def self.from_hash(hash, id_tags = [:conversion_workflow_id, :name])
  workflow_name = hash.delete(:conversion_workflow)
  query = workflow_name ? {name: workflow_name} : {id: hash[:conversion_workflow_id]}
  conversion_workflow = record_finder Teneo::DataModel::ConversionWorkflow, query
  hash[:conversion_workflow_id] = conversion_workflow.id

  params = hash.delete(:values)

  item = super(hash, id_tags) do |item, h|
    item.position = (position = h.delete(:position)) ? position : item.position = item.conversion_workflow.conversion_tasks.count
    if (converter = h.delete(:converter))
      item.converter = record_finder Teneo::DataModel::Converter, name: converter
    end
  end

  if params
    item.parameter_values.clear
    params.each do |name, value|
      item.parameter_values <<
          Teneo::DataModel::ParameterValue.from_hash(name: name, value: value,
                                                     with_values_id: item.id,
                                                     with_values_type: item.class.name)
    end
    item.save!
  end
  item
end

Public Instance Methods

init_position() click to toggle source
# File lib/teneo/data_model/conversion_task.rb, line 23
def init_position
  # noinspection RubyResolve
  self.position ||= self.class.where(conversion_workflow_id: conversion_workflow_id).pluck(:position).max + 1
end