SpeciesFileGroup/taxonworks

View on GitHub
lib/batch_load/row_parse.rb

Summary

Maintainability
A
0 mins
Test Coverage
# The result of parsing a row.
class BatchLoad::RowParse


  # @return [Integer]
  #   The row this parse is from
  attr_accessor :row_number

  # @return [Boolean]
  #   whether the row was parsed or not
  attr_accessor :parsed

  # @return [Array]
  attr_accessor :parse_errors

  # @return [Hash]
  #   all the objects created, indexed by class name
  attr_accessor :objects

  def initialize
    @created = false
    @parsed = false
    @parse_errors = []
    @objects = {}
  end

  # @return [Boolean]
  def has_parse_errors?
    parse_errors.size > 0
  end

  # @return [Boolean]
  def has_object_errors?
    objects.select { |o| !o.valid? } > 0
  end

  # @return [Array]
  def persisted_objects
    objects.collect { |type, objs| objs.select { |o| o.persisted? } }.flatten
  end

  # @return [Boolean]
  def has_persisted_objects?
    persisted_objects.size > 0
  end

  # @return [Boolean]
  def has_errored_objects?
    errored_objects.size > 0
  end

  # @return [Array]
  def errored_objects
    objects.collect { |type, objs| objs.select { |o| !o.valid? } }.flatten
  end

  # @return [Array]
  def all_objects
    objects.collect { |type, objs| objs }.flatten.compact
  end

  # @return [Integer]
  def total_objects
    all_objects.size
  end

  # @return [Boolean]
  def has_valid_objects?
    valid_objects.size > 0
  end

  # @return [Array]
  def valid_objects
    objects.collect { |type, objs| objs.select { |o| o.valid? } }.flatten
  end

end