1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\EntityManager;
use Magento\Framework\ObjectManagerInterface as ObjectManager;
use Magento\Framework\EntityManager\Operation\CheckIfExists;
use Magento\Framework\EntityManager\Operation\Read;
use Magento\Framework\EntityManager\Operation\Create;
use Magento\Framework\EntityManager\Operation\Update;
use Magento\Framework\EntityManager\Operation\Delete;
/**
* Class OperationPool
*/
class OperationPool
{
/**
* @var array
*/
private $defaultOperations = [
'checkIfExists' => CheckIfExists::class,
'read' => Read::class,
'create' => Create::class,
'update' => Update::class,
'delete' => Delete::class,
];
/**
* @var array
*/
private $operations;
/**
* @var ObjectManager
*/
private $objectManager;
/**
* OperationPool constructor.
* @param ObjectManager $objectManager
* @param string[] $operations
*/
public function __construct(
ObjectManager $objectManager,
$operations = []
) {
$this->objectManager = $objectManager;
$this->operations = array_replace_recursive(
['default' => $this->defaultOperations],
$operations
);
}
/**
* Returns operation by name by entity type
*
* @param string $entityType
* @param string $operationName
* @return OperationInterface
*/
public function getOperation($entityType, $operationName)
{
if (!isset($this->operations[$entityType][$operationName])) {
return $this->objectManager->get($this->operations['default'][$operationName]);
}
return $this->objectManager->get($this->operations[$entityType][$operationName]);
}
}