Class: Eco::API::UseCases::OozeSamples::HelpersMigration::TypedFieldsPairing

Inherits:
Object
  • Object
show all
Includes:
Eco::API::UseCases::OozeSamples::Helpers::Shortcuts
Defined in:
lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb

Constant Summary collapse

EXCLUDED_TYPES =
["tag_field", "chart", "frequency_rate_chart"]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Eco::API::UseCases::OozeSamples::Helpers::Shortcuts

#bracked_regex, #clean_question, #is_number?, #non_letters_regex, #normalize_string, #object_reference, #same_string?, #simplify_string, #titleize, #to_i

Constructor Details

#initialize(source, destination, src_excluded: nil, dst_excluded: nil, exclude_ximport: false) ⇒ TypedFieldsPairing

Returns a new instance of TypedFieldsPairing.



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 21

def initialize(source, destination, src_excluded: nil, dst_excluded: nil,
    exclude_ximport: false)
  @src = source
  @dst = destination
  @src_excluded = src_excluded || []
  @dst_excluded = dst_excluded || []
  @exclude_ximport = !!exclude_ximport
  reset!
  process(exact: true)
  process
end

Instance Attribute Details

#dstObject (readonly)

Returns the value of attribute dst.



17
18
19
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 17

def dst
  @dst
end

#dst_unpairedObject (readonly)

Returns the value of attribute dst_unpaired.



18
19
20
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 18

def dst_unpaired
  @dst_unpaired
end

#srcObject (readonly)

Returns the value of attribute src.



17
18
19
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 17

def src
  @src
end

#src_dst_multiObject (readonly)

Returns the value of attribute src_dst_multi.



19
20
21
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 19

def src_dst_multi
  @src_dst_multi
end

#src_dst_pairsObject (readonly)

Returns the value of attribute src_dst_pairs.



19
20
21
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 19

def src_dst_pairs
  @src_dst_pairs
end

#src_unpairedObject (readonly)

Returns the value of attribute src_unpaired.



18
19
20
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 18

def src_unpaired
  @src_unpaired
end

Instance Method Details

#each_pairObject



33
34
35
36
37
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 33

def each_pair
  src_dst_pairs.each do |(src_field, dst_field)|
    yield(src_field, dst_field) if block_given?
  end
end

#report_dst_unpaired(only_required: false, exclude_ximport: true) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 53

def report_dst_unpaired(only_required: false, exclude_ximport: true)
  return nil if dst_unpaired.empty?
  msg  = "Destination entry with unpaired fields (#{object_reference(src)}):\n"
  dst_filtered = dst_unpaired.values.flatten.reject do |dst_fld|
    only_required && !dst_fld.required
  end.reject do |dst_fld|
    exclude_ximport && ximport?(dst_fld)
  end
  return nil if dst_filtered.empty?
  msg << dst_filtered.map do |dst_fld|
    "#{object_reference(dst_fld)}"
  end.join("\n")
end

#report_multi_pairs(only_present: true, only_indexed: false, dst_exclude_ximport: true) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 67

def report_multi_pairs(only_present: true, only_indexed: false, dst_exclude_ximport: true)
  return nil if src_dst_multi.empty?
  "".tap do |msg|
    msg << "Source fields in (#{object_reference(src)}) paired with multiple destination fields:\n"
    msg_flds = ""
    src_dst_multi.each do |type, pairs|
      pairs.each do |(src_fld, dst_flds)|
        next if (only_present && src_fld.empty?) || (only_indexed && src_fld.deindex)
        dst_filtered = dst_flds.reject do |dst_fld|
          dst_exclude_ximport && ximport?(dst_fld)
        end
        next if dst_filtered.empty?
        msg_flds << "#{object_reference(src_fld)}\n"
        msg_flds << dst_filtered.map do |dst_fld|
          "#{object_reference(dst_fld)}"
        end.compact.join("\n")
      end
    end
    return nil if msg_flds.empty?
    msg << msg_flds
  end
end

#report_src_unpaired(only_present: true, only_indexed: false) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 39

def report_src_unpaired(only_present: true, only_indexed: false)
  return nil if src_unpaired.empty?
  msg  = "Source entry with unpaired fields (#{object_reference(src)}):\n"
  src_filtered = src_unpaired.values.flatten.reject do |src_fld|
    only_present && src_fld.empty?
  end.reject do |src_fld|
    only_indexed && src_fld.deindex
  end
  return nil if src_filtered.empty?
  msg << src_filtered.map do |src_fld|
    "#{object_reference(src_fld)}"
  end.join("\n")
end

#resolve(*flds) ⇒ Object

Remove from unpaired tracking those flds.



91
92
93
94
95
96
97
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 91

def resolve(*flds)
  flds.each do |fld|
    next if unpaired_delete(fld, src_unpaired)
    unpaired_delete(fld, dst_unpaired)
  end
  multi_delete(*flds)
end

#some_multi?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/eco/api/usecases/ooze_samples/helpers_migration/typed_fields_pairing.rb', line 99

def some_multi?
  !src_dst_multi.empty?
end