From ab0e64d3a933eef3aefd565885c39e0cd01c45fe Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Fri, 1 Sep 2017 14:07:42 +0200 Subject: [PATCH] Refactoring: Splitted up instance_action statistics diff for different usages. --- .../import/common/model/statistics/diff.rb | 4 +-- .../common/model/statistics/mixin/common.rb | 29 +++++++++++++++++++ .../model/statistics/mixin/empty_diff.rb | 25 ++++++++++++++++ .../{diff.rb => instance_action_diff.rb} | 19 ++++-------- .../folder_contact/statistics/diff.rb | 2 +- 5 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 lib/sequencer/unit/import/common/model/statistics/mixin/common.rb create mode 100644 lib/sequencer/unit/import/common/model/statistics/mixin/empty_diff.rb rename lib/sequencer/unit/import/common/model/statistics/mixin/{diff.rb => instance_action_diff.rb} (64%) diff --git a/lib/sequencer/unit/import/common/model/statistics/diff.rb b/lib/sequencer/unit/import/common/model/statistics/diff.rb index 787123b1d..e66302b0d 100644 --- a/lib/sequencer/unit/import/common/model/statistics/diff.rb +++ b/lib/sequencer/unit/import/common/model/statistics/diff.rb @@ -1,4 +1,4 @@ -require 'sequencer/unit/import/common/model/statistics/mixin/diff' +require 'sequencer/unit/import/common/model/statistics/mixin/instance_action_diff' class Sequencer class Unit @@ -7,7 +7,7 @@ class Sequencer module Model module Statistics class Diff < Sequencer::Unit::Base - include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::Diff + include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::InstanceActionDiff def process state.provide(:statistics_diff, diff) diff --git a/lib/sequencer/unit/import/common/model/statistics/mixin/common.rb b/lib/sequencer/unit/import/common/model/statistics/mixin/common.rb new file mode 100644 index 000000000..7d7202624 --- /dev/null +++ b/lib/sequencer/unit/import/common/model/statistics/mixin/common.rb @@ -0,0 +1,29 @@ +class Sequencer + class Unit + module Import + module Common + module Model + module Statistics + module Mixin + module Common + private + + def actions + %i[skipped created updated unchanged failed deactivated] + end + + def empty_diff + possible_actions.collect { |key| [key, 0] }.to_h + end + + def possible_actions + @possible_actions ||= actions + end + end + end + end + end + end + end + end +end diff --git a/lib/sequencer/unit/import/common/model/statistics/mixin/empty_diff.rb b/lib/sequencer/unit/import/common/model/statistics/mixin/empty_diff.rb new file mode 100644 index 000000000..3e610bc67 --- /dev/null +++ b/lib/sequencer/unit/import/common/model/statistics/mixin/empty_diff.rb @@ -0,0 +1,25 @@ +require 'sequencer/unit/import/common/model/statistics/mixin/common' + +class Sequencer + class Unit + module Import + module Common + module Model + module Statistics + module Mixin + module EmptyDiff + include Sequencer::Unit::Import::Common::Model::Statistics::Mixin::Common + + def self.included(base) + base.provides :statistics_diff + end + + alias diff empty_diff + end + end + end + end + end + end + end +end diff --git a/lib/sequencer/unit/import/common/model/statistics/mixin/diff.rb b/lib/sequencer/unit/import/common/model/statistics/mixin/instance_action_diff.rb similarity index 64% rename from lib/sequencer/unit/import/common/model/statistics/mixin/diff.rb rename to lib/sequencer/unit/import/common/model/statistics/mixin/instance_action_diff.rb index 7411709bc..c112910ae 100644 --- a/lib/sequencer/unit/import/common/model/statistics/mixin/diff.rb +++ b/lib/sequencer/unit/import/common/model/statistics/mixin/instance_action_diff.rb @@ -1,3 +1,5 @@ +require 'sequencer/unit/import/common/model/statistics/mixin/common' + class Sequencer class Unit module Import @@ -5,7 +7,8 @@ class Sequencer module Model module Statistics module Mixin - module Diff + module InstanceActionDiff + include Sequencer::Unit::Import::Common::Model::Statistics::Mixin::Common def self.included(base) base.uses :instance_action @@ -14,13 +17,9 @@ class Sequencer private - def actions - %i[skipped created updated unchanged failed deactivated] - end - def diff raise "Unknown action '#{instance_action}'" if !possible? - defaults.merge( + empty_diff.merge( instance_action => 1, sum: 1, ) @@ -29,14 +28,6 @@ class Sequencer def possible? possible_actions.include?(instance_action) end - - def defaults - possible_actions.collect { |key| [key, 0] }.to_h - end - - def possible_actions - @possible_actions ||= actions - end end end end diff --git a/lib/sequencer/unit/import/exchange/folder_contact/statistics/diff.rb b/lib/sequencer/unit/import/exchange/folder_contact/statistics/diff.rb index 55c127d2c..7d86fff4d 100644 --- a/lib/sequencer/unit/import/exchange/folder_contact/statistics/diff.rb +++ b/lib/sequencer/unit/import/exchange/folder_contact/statistics/diff.rb @@ -5,7 +5,7 @@ class Sequencer module FolderContact module Statistics class Diff < Sequencer::Unit::Base - include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::Diff + include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::InstanceActionDiff uses :ews_folder_name