LockManager::save()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 0
cts 5
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Itkg\DelayEventBundle\DomainManager;
4
5
use Doctrine\Common\Persistence\ObjectManager;
6
use Itkg\DelayEventBundle\Model\Lock;
7
use Itkg\DelayEventBundle\Repository\LockRepository;
8
9
/**
10
 * Class LockManager
11
 */
12
class LockManager implements LockManagerInterface
13
{
14
    /**
15
     * @var string
16
     */
17
    protected $class;
18
19
    /**
20
     * @var ObjectManager
21
     */
22
    protected $om;
23
24
    /**
25
     * @var LockRepository
26
     */
27
    protected $lockRepository;
28
29
    /**
30
     * @param string         $class
31
     * @param ObjectManager  $om
32
     * @param LockRepository $lockRepository
33
     */
34
    public function __construct($class, ObjectManager $om, LockRepository $lockRepository)
35
    {
36
        $this->class = $class;
37
        $this->om = $om;
38
        $this->lockRepository = $lockRepository;
39
    }
40
41
    /**
42
     * @param Lock $Lock
43
     */
44
    public function save(Lock $Lock)
45
    {
46
        $this->om->persist($Lock);
47
        $this->om->flush($Lock);
48
    }
49
50
    /**
51
     * @param Lock $Lock
52
     */
53
    public function delete(Lock $Lock)
54
    {
55
        $this->om->remove($Lock);
56
        $this->om->flush($Lock);
57
    }
58
59
    /**
60
     * @return Lock
61
     */
62
    public function createNew()
63
    {
64
        $class = $this->class;
65
66
        return new $class;
67
    }
68
69
    /**
70
     * @param string $channel
71
     *
72
     * @return Lock
73
     */
74
    public function getLock($channel)
75
    {
76
        $lock = $this->lockRepository->findByChannel($channel);
77
78
        if (!$lock) {
79
            $lock = $this->createNew();
80
            $lock->setChannel($channel);
81
        }
82
83
        return $lock;
84
    }
85
}
86