class DataAnon::Strategy::MongoDB::AnonymizeField

Public Class Methods

new(field, field_strategy, anonymization_strategy) click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 6
def initialize field, field_strategy, anonymization_strategy
  @field = field
  @field_strategy = field_strategy
  @anonymization_strategy = anonymization_strategy
end

Public Instance Methods

anonymize() click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 12
def anonymize
  if sub_document?
    @anonymization_strategy.anonymize_document(@field.value, @field.row_number, @field_strategy)
  elsif sub_documents?
    anonymize_sub_documents
  else
    anonymize_field
  end
end
anonymize_field() click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 26
def anonymize_field
  @field_strategy = @field_strategy || @anonymization_strategy.default_strategy(@field.name)
  raise "Improper fields strategy defined for '#{@field.name}' within document \n #{@field.ar_record}" unless @field_strategy.respond_to?(:anonymize)
  @field_strategy.anonymize(@field)
end
anonymize_sub_documents() click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 22
def anonymize_sub_documents
  @field.value.collect { |value| @anonymization_strategy.anonymize_document(value, @field.row_number, @field_strategy) }
end
sub_document?() click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 36
def sub_document?
  @field.value.kind_of?(Hash)
end
sub_documents?() click to toggle source
# File lib/strategy/mongodb/anonymize_field.rb, line 32
def sub_documents?
  @field.value.kind_of?(Array) && (@field_strategy.kind_of?(Hash) || @field.value[0].kind_of?(Hash))
end