DatabaseBusinessFactory::createPropelProvider()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\Database\Business;
6
7
8
use Propel\Runtime\Connection\ConnectionManagerInterface;
9
use Propel\Runtime\Connection\ConnectionManagerSingle;
10
use Propel\Runtime\Propel;
11
use Propel\Runtime\ServiceContainer\ServiceContainerInterface;
12
use Xervice\Core\Business\Model\Factory\AbstractBusinessFactory;
13
use Xervice\Database\Business\Model\Config\Converter\ConverterInterface;
14
use Xervice\Database\Business\Model\Config\Converter\Json;
15
use Xervice\Database\Business\Model\Config\Generator;
16
use Xervice\Database\Business\Model\Config\GeneratorInterface;
17
use Xervice\Database\Business\Model\Model\BuildModel;
18
use Xervice\Database\Business\Model\Model\BuildModelInterface;
19
use Xervice\Database\Business\Model\Provider\PropelCommandProvider;
20
use Xervice\Database\Business\Model\Provider\PropelCommandProviderInterface;
21
use Xervice\Database\Business\Model\Provider\PropelProvider;
22
use Xervice\Database\Business\Model\Provider\PropelProviderInterface;
23
24
/**
25
 * @method \Xervice\Database\DatabaseConfig getConfig()
26
 */
27
class DatabaseBusinessFactory extends AbstractBusinessFactory
28
{
29
    /**
30
     * @return \Xervice\Database\Business\Model\Model\BuildModelInterface
31
     */
32 1
    public function createBuildModel(): BuildModelInterface
33
    {
34 1
        return new BuildModel(
35 1
            $this->createPropelCommandProvider(),
36 1
            $this->getConfig()->getSchemaPaths(),
37 1
            $this->getConfig()->getSchemaTarget(),
38 1
            $this->getConfig()->getSchemaPattern()
39
        );
40
    }
41
42
43
    /**
44
     * @return \Xervice\Database\Business\Model\Provider\PropelProviderInterface
45
     */
46 1
    public function createPropelProvider(): PropelProviderInterface
47
    {
48 1
        return new PropelProvider(
49 1
            $this->getConfig()->getPropelConfig(),
50 1
            $this->getPropelServiceContainer(),
51 1
            $this->createPropelConnectionManager()
52
        );
53
    }
54
55
    /**
56
     * @return \Propel\Runtime\Connection\ConnectionManagerSingle
57
     */
58 1
    public function createPropelConnectionManager(): ConnectionManagerInterface
59
    {
60 1
        return new ConnectionManagerSingle();
61
    }
62
63
    /**
64
     * @return \Xervice\Database\Business\Model\Config\GeneratorInterface
65
     */
66 1
    public function createConfigGenerator(): GeneratorInterface
67
    {
68 1
        return new Generator(
69 1
            $this->getConfig()->getPropelConfig(),
70 1
            $this->getConfig()->getConfDir(),
71 1
            $this->createConfigConverter()
72
        );
73
    }
74
75
    /**
76
     * @return \Xervice\Database\Business\Model\Provider\PropelCommandProviderInterface
77
     */
78 2
    public function createPropelCommandProvider(): PropelCommandProviderInterface
79
    {
80 2
        return new PropelCommandProvider(
81 2
            $this->getConfig()->getPropelCommand(),
82 2
            $this->getConfig()->getApplicationPath(),
83 2
            $this->getConfig()->getConfDir()
84
        );
85
    }
86
87
    /**
88
     * @return \Xervice\Database\Business\Model\Config\Converter\ConverterInterface
89
     */
90 1
    public function createConfigConverter(): ConverterInterface
91
    {
92 1
        return new Json();
93
    }
94
95
    /**
96
     * @return \Propel\Runtime\ServiceContainer\ServiceContainerInterface
97
     */
98 1
    public function getPropelServiceContainer(): ServiceContainerInterface
99
    {
100 1
        return Propel::getServiceContainer();
101
    }
102
}
103