Code Duplication    Length = 87-87 lines in 4 locations

src/Observers/EeBundleOptionObserver.php 1 location

@@ 42-128 (lines=87) @@
39
 * @link      https://github.com/techdivision/import-product-bundle-ee
40
 * @link      http://www.techdivision.com
41
 */
42
class EeBundleOptionObserver extends BundleOptionObserver
43
{
44
45
    /**
46
     * The sequence product bundle option action instance.
47
     *
48
     * @var \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface
49
     */
50
    protected $sequenceProductBundleOptionAction;
51
52
    /**
53
     * Initialize the observer with the passed product bundle processor instance.
54
     *
55
     * @param \TechDivision\Import\Product\Bundle\Services\ProductBundleProcessorInterface              $productBundleProcessor            The product bundle processor instance
56
     * @param \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface $sequenceProductBundleOptionAction The action instance
57
     * @param \TechDivision\Import\Observers\AttributeLoaderInterface|null                              $attributeLoader                   The attribute loader instance
58
     * @param \TechDivision\Import\Observers\EntityMergers\EntityMergerInterface                        $entityMerger                      The entity merger instance
59
     * @param \TechDivision\Import\Observers\StateDetectorInterface|null                                $stateDetector                     The state detector instance
60
     */
61
    public function __construct(
62
        ProductBundleProcessorInterface $productBundleProcessor,
63
        SequenceProductBundleOptionActionInterface $sequenceProductBundleOptionAction,
64
        AttributeLoaderInterface $attributeLoader = null,
65
        EntityMergerInterface $entityMerger = null,
66
        StateDetectorInterface $stateDetector = null
67
    ) {
68
69
        // initialize the parent instance
70
        parent::__construct($productBundleProcessor, $attributeLoader, $entityMerger, $stateDetector);
71
72
        // set the passed sequence product bundle option action instance
73
        $this->sequenceProductBundleOptionAction = $sequenceProductBundleOptionAction;
74
    }
75
76
    /**
77
     * Prepare the attributes of the entity that has to be persisted.
78
     *
79
     * @return array The prepared attributes
80
     */
81
    protected function prepareAttributes()
82
    {
83
84
        // prepare the attributes
85
        $attr = parent::prepareAttributes();
86
87
        // query whether or not, we found a new product bundle option
88
        if ($attr[EntityStatus::MEMBER_NAME] === EntityStatus::STATUS_CREATE) {
89
            $attr[MemberNames::OPTION_ID] = $this->nextIdentifier();
90
        }
91
92
        // return the attributes
93
        return $attr;
94
    }
95
96
    /**
97
     * Returns the sequence product bundle option action instance.
98
     *
99
     * @return \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface The action instance
100
     */
101
    protected function getSequenceProductBundleOptionAction()
102
    {
103
        return $this->sequenceProductBundleOptionAction;
104
    }
105
106
    /**
107
     * Returns the next available product bundle option ID.
108
     *
109
     * @return integer The next available product bundle option ID
110
     */
111
    protected function nextIdentifier()
112
    {
113
        return $this->getSequenceProductBundleOptionAction()->nextIdentifier();
114
    }
115
116
    /**
117
     * Returns the row ID for the passed SKU.
118
     *
119
     * @param string $sku The SKU to return the row ID for
120
     *
121
     * @return integer The mapped row ID
122
     * @throws \Exception Is thrown if the SKU is not mapped yet
123
     */
124
    protected function mapSku($sku)
125
    {
126
        return $this->getSubject()->mapSkuToRowId($sku);
127
    }
128
}
129

src/Observers/EeBundleOptionUpdateObserver.php 1 location

@@ 42-128 (lines=87) @@
39
 * @link      https://github.com/techdivision/import-product-bundle-ee
40
 * @link      http://www.techdivision.com
41
 */
42
class EeBundleOptionUpdateObserver extends BundleOptionUpdateObserver
43
{
44
45
    /**
46
     * The sequence product bundle option action instance.
47
     *
48
     * @var \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface
49
     */
50
    protected $sequenceProductBundleOptionAction;
51
52
    /**
53
     * Initialize the observer with the passed product bundle processor instance.
54
     *
55
     * @param \TechDivision\Import\Product\Bundle\Services\ProductBundleProcessorInterface              $productBundleProcessor            The product bundle processor instance
56
     * @param \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface $sequenceProductBundleOptionAction The action instance
57
     * @param \TechDivision\Import\Observers\AttributeLoaderInterface|null                              $attributeLoader                   The attribute loader instance
58
     * @param \TechDivision\Import\Observers\EntityMergers\EntityMergerInterface                        $entityMerger                      The entity merger instance
59
     * @param \TechDivision\Import\Observers\StateDetectorInterface|null                                $stateDetector                     The state detector instance
60
     */
61
    public function __construct(
62
        ProductBundleProcessorInterface $productBundleProcessor,
63
        SequenceProductBundleOptionActionInterface $sequenceProductBundleOptionAction,
64
        AttributeLoaderInterface $attributeLoader = null,
65
        EntityMergerInterface $entityMerger = null,
66
        StateDetectorInterface $stateDetector = null
67
    ) {
68
69
        // initialize the parent instance
70
        parent::__construct($productBundleProcessor, $attributeLoader, $entityMerger, $stateDetector);
71
72
        // set the passed sequence product bundle option action instance
73
        $this->sequenceProductBundleOptionAction = $sequenceProductBundleOptionAction;
74
    }
75
76
    /**
77
     * Prepare the attributes of the entity that has to be persisted.
78
     *
79
     * @return array The prepared attributes
80
     */
81
    protected function prepareAttributes()
82
    {
83
84
        // prepare the attributes
85
        $attr = parent::prepareAttributes();
86
87
        // query whether or not, we found a new product bundle option
88
        if ($attr[EntityStatus::MEMBER_NAME] === EntityStatus::STATUS_CREATE) {
89
            $attr[MemberNames::OPTION_ID] = $this->nextIdentifier();
90
        }
91
92
        // return the attributes
93
        return $attr;
94
    }
95
96
    /**
97
     * Returns the sequence product bundle option action instance.
98
     *
99
     * @return \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleOptionActionInterface The action instance
100
     */
101
    protected function getSequenceProductBundleOptionAction()
102
    {
103
        return $this->sequenceProductBundleOptionAction;
104
    }
105
106
    /**
107
     * Returns the next available product bundle option ID.
108
     *
109
     * @return integer The next available product bundle option ID
110
     */
111
    protected function nextIdentifier()
112
    {
113
        return $this->getSequenceProductBundleOptionAction()->nextIdentifier();
114
    }
115
116
    /**
117
     * Return the row ID for the passed SKU.
118
     *
119
     * @param string $sku The SKU to return the row ID for
120
     *
121
     * @return integer The mapped row ID
122
     * @throws \Exception Is thrown if the SKU is not mapped yet
123
     */
124
    protected function mapSku($sku)
125
    {
126
        return $this->getSubject()->mapSkuToRowId($sku);
127
    }
128
}
129

src/Observers/EeBundleSelectionObserver.php 1 location

@@ 42-128 (lines=87) @@
39
 * @link      https://github.com/techdivision/import-product-bundle-ee
40
 * @link      http://www.techdivision.com
41
 */
42
class EeBundleSelectionObserver extends BundleSelectionObserver
43
{
44
45
    /**
46
     * The sequence product bundle selection action instance.
47
     *
48
     * @var \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface
49
     */
50
    protected $sequenceProductBundleSelectionAction;
51
52
    /**
53
     * Initialize the observer with the passed product bundle processor instance.
54
     *
55
     * @param \TechDivision\Import\Product\Bundle\Services\ProductBundleProcessorInterface                 $productBundleProcessor               The product bundle processor instance
56
     * @param \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface $sequenceProductBundleSelectionAction The action instance
57
     * @param \TechDivision\Import\Observers\AttributeLoaderInterface|null                                 $attributeLoader                      The attribute loader instance
58
     * @param \TechDivision\Import\Observers\EntityMergers\EntityMergerInterface                           $entityMerger                         The entity merger instance
59
     * @param \TechDivision\Import\Observers\StateDetectorInterface|null                                   $stateDetector                        The state detector instance
60
     */
61
    public function __construct(
62
        ProductBundleProcessorInterface $productBundleProcessor,
63
        SequenceProductBundleSelectionActionInterface $sequenceProductBundleSelectionAction,
64
        AttributeLoaderInterface $attributeLoader = null,
65
        EntityMergerInterface $entityMerger = null,
66
        StateDetectorInterface $stateDetector = null
67
    ) {
68
69
        // initialize the parent instance
70
        parent::__construct($productBundleProcessor, $attributeLoader, $entityMerger, $stateDetector);
71
72
        // set the passed sequence product bundle selection action instance
73
        $this->sequenceProductBundleSelectionAction = $sequenceProductBundleSelectionAction;
74
    }
75
76
    /**
77
     * Prepare the attributes of the entity that has to be persisted.
78
     *
79
     * @return array The prepared attributes
80
     */
81
    protected function prepareAttributes()
82
    {
83
84
        // prepare the attributes
85
        $attr = parent::prepareAttributes();
86
87
        // query whether or not, we found a new product bundle selection
88
        if ($attr[EntityStatus::MEMBER_NAME] === EntityStatus::STATUS_CREATE) {
89
            $attr[MemberNames::SELECTION_ID] = $this->nextIdentifier();
90
        }
91
92
        // return the attributes
93
        return $attr;
94
    }
95
96
    /**
97
     * Returns the sequence product bundle selection action instance.
98
     *
99
     * @return \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface The action instance
100
     */
101
    protected function getSequenceProductBundleSelectionAction()
102
    {
103
        return $this->sequenceProductBundleSelectionAction;
104
    }
105
106
    /**
107
     * Returns the next available product bundle option ID.
108
     *
109
     * @return integer The next available product bundle option ID
110
     */
111
    protected function nextIdentifier()
112
    {
113
        return $this->getSequenceProductBundleSelectionAction()->nextIdentifier();
114
    }
115
116
    /**
117
     * Returns the row ID for the passed SKU.
118
     *
119
     * @param string $sku The SKU to return the row ID for
120
     *
121
     * @return integer The mapped row ID
122
     * @throws \Exception Is thrown if the SKU is not mapped yet
123
     */
124
    protected function mapSku($sku)
125
    {
126
        return $this->getSubject()->mapSkuToRowId($sku);
127
    }
128
}
129

src/Observers/EeBundleSelectionUpdateObserver.php 1 location

@@ 42-128 (lines=87) @@
39
 * @link      https://github.com/techdivision/import-product-bundle-ee
40
 * @link      http://www.techdivision.com
41
 */
42
class EeBundleSelectionUpdateObserver extends BundleSelectionUpdateObserver
43
{
44
45
    /**
46
     * The sequence product bundle selection action instance.
47
     *
48
     * @var \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface
49
     */
50
    protected $sequenceProductBundleSelectionAction;
51
52
    /**
53
     * Initialize the observer with the passed product bundle processor instance.
54
     *
55
     * @param \TechDivision\Import\Product\Bundle\Services\ProductBundleProcessorInterface                 $productBundleProcessor               The product bundle processor instance
56
     * @param \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface $sequenceProductBundleSelectionAction The action instance
57
     * @param \TechDivision\Import\Observers\AttributeLoaderInterface|null                                 $attributeLoader                      The attribute loader instance
58
     * @param \TechDivision\Import\Observers\EntityMergers\EntityMergerInterface                           $entityMerger                         The entity merger instance
59
     * @param \TechDivision\Import\Observers\StateDetectorInterface|null                                   $stateDetector                        The state detector instance
60
     */
61
    public function __construct(
62
        ProductBundleProcessorInterface $productBundleProcessor,
63
        SequenceProductBundleSelectionActionInterface $sequenceProductBundleSelectionAction,
64
        AttributeLoaderInterface $attributeLoader = null,
65
        EntityMergerInterface $entityMerger = null,
66
        StateDetectorInterface $stateDetector = null
67
    ) {
68
69
        // initialize the parent instance
70
        parent::__construct($productBundleProcessor, $attributeLoader, $entityMerger, $stateDetector);
71
72
        // set the passed sequence product bundle selection action instance
73
        $this->sequenceProductBundleSelectionAction = $sequenceProductBundleSelectionAction;
74
    }
75
76
    /**
77
     * Prepare the attributes of the entity that has to be persisted.
78
     *
79
     * @return array The prepared attributes
80
     */
81
    protected function prepareAttributes()
82
    {
83
84
        // prepare the attributes
85
        $attr = parent::prepareAttributes();
86
87
        // query whether or not, we found a new product bundle selection
88
        if ($attr[EntityStatus::MEMBER_NAME] === EntityStatus::STATUS_CREATE) {
89
            $attr[MemberNames::SELECTION_ID] = $this->nextIdentifier();
90
        }
91
92
        // return the attributes
93
        return $attr;
94
    }
95
96
    /**
97
     * Returns the sequence product bundle selection action instance.
98
     *
99
     * @return \TechDivision\Import\Product\Bundle\Ee\Actions\SequenceProductBundleSelectionActionInterface The action instance
100
     */
101
    protected function getSequenceProductBundleSelectionAction()
102
    {
103
        return $this->sequenceProductBundleSelectionAction;
104
    }
105
106
    /**
107
     * Returns the next available product bundle option ID.
108
     *
109
     * @return integer The next available product bundle option ID
110
     */
111
    protected function nextIdentifier()
112
    {
113
        return $this->getSequenceProductBundleSelectionAction()->nextIdentifier();
114
    }
115
116
    /**
117
     * Returns the row ID for the passed SKU.
118
     *
119
     * @param string $sku The SKU to return the row ID for
120
     *
121
     * @return integer The mapped row ID
122
     * @throws \Exception Is thrown if the SKU is not mapped yet
123
     */
124
    protected function mapSku($sku)
125
    {
126
        return $this->getSubject()->mapSkuToRowId($sku);
127
    }
128
}
129