Completed
Push — 2.0 ( 143803...4e64fa )
by grégoire
08:42 queued 04:22
created

SessionBuilder   C

Complexity

Total Complexity 3

Size/Duplication

Total Lines 151
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 22

Importance

Changes 7
Bugs 0 Features 6
Metric Value
wmc 3
c 7
b 0
f 6
lcom 2
cbo 22
dl 0
loc 151
rs 5.7894

3 Methods

Rating   Name   Duplication   Size   Complexity  
A postConfigure() 0 13 1
A createSession() 0 6 1
B initializeConverterHolder() 0 110 1
1
<?php
2
/*
3
 * This file is part of the Pomm's Foundation package.
4
 *
5
 * (c) 2014 - 2015 Grégoire HUBERT <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace PommProject\Foundation;
11
12
use PommProject\Foundation\Session as FoundationSession;
13
use PommProject\Foundation\Session\Session;
14
use PommProject\Foundation\Session\Connection;
15
use PommProject\Foundation\Client\ClientHolder;
16
use PommProject\Foundation\Session\SessionBuilder as VanillaSessionBuilder;
17
use PommProject\Foundation\Observer\ObserverPooler;
18
use PommProject\Foundation\Listener\ListenerPooler;
19
use PommProject\Foundation\Inspector\InspectorPooler;
20
use PommProject\Foundation\Converter\ConverterPooler;
21
use PommProject\Foundation\Converter\ConverterHolder;
22
use PommProject\Foundation\QueryManager\QueryManagerPooler;
23
use PommProject\Foundation\PreparedQuery\PreparedQueryPooler;
24
25
/**
26
 * FoundationSessionBuilder
27
 *
28
 * Pre configured session builder.
29
 *
30
 * @package   Foundation
31
 * @copyright 2014 - 2015 Grégoire HUBERT
32
 * @author    Grégoire HUBERT
33
 * @license   X11 {@link http://opensource.org/licenses/mit-license.php}
34
 * @see       SessionBuilder
35
 */
36
class SessionBuilder extends VanillaSessionBuilder
37
{
38
    /**
39
     * postConfigure
40
     *
41
     * @see SessionBuilder
42
     */
43
    protected function postConfigure(Session $session)
44
    {
45
        $session
46
            ->registerClientPooler(new PreparedQueryPooler)
47
            ->registerClientPooler(new QueryManagerPooler)
48
            ->registerClientPooler(new ConverterPooler(clone $this->converter_holder))
49
            ->registerClientPooler(new ObserverPooler)
50
            ->registerClientPooler(new InspectorPooler)
51
            ->registerClientPooler(new ListenerPooler)
52
            ;
53
54
        return $this;
55
    }
56
57
58
    /**
59
     * createSession
60
     *
61
     * @return  FoundationSession
62
     * @see     VanillaSessionBuilder
63
     */
64
    protected function createSession(Connection $connection, ClientHolder $client_holder, $stamp)
65
    {
66
        $this->configuration->setDefaultValue('class:session', '\PommProject\Foundation\Session');
67
68
        return parent::createSession($connection, $client_holder, $stamp);
69
    }
70
71
    /**
72
     * initializeConverterHolder
73
     *
74
     * @see SessionBuilder
75
     */
76
    protected function initializeConverterHolder(ConverterHolder $converter_holder)
77
    {
78
        $converter_holder
79
            ->registerConverter('Array', new Converter\PgArray(), ['array'], false)
80
            ->registerConverter(
81
                'Boolean',
82
                new Converter\PgBoolean(),
83
                [
84
                    'bool',
85
                    'pg_catalog.bool',
86
                    'boolean',
87
                ],
88
                false
89
            )
90
            ->registerConverter(
91
                'Number',
92
                new Converter\PgNumber(),
93
                [
94
                    'int2', 'pg_catalog.int2',
95
                    'int4', 'pg_catalog.int4', 'int', 'integer',
96
                    'int8', 'pg_catalog.int8',
97
                    'numeric', 'pg_catalog.numeric',
98
                    'float4', 'pg_catalog.float4', 'float',
99
                    'float8', 'pg_catalog.float8',
100
                    'oid', 'pg_catalog.oid',
101
                ],
102
                false
103
            )
104
            ->registerConverter(
105
                'String',
106
                new Converter\PgString(),
107
                [
108
                    'varchar', 'pg_catalog.varchar',
109
                    'char', 'pg_catalog.char',
110
                    'text', 'pg_catalog.text',
111
                    'uuid', 'pg_catalog.uuid',
112
                    'tsvector', 'pg_catalog.tsvector',
113
                    'xml', 'pg_catalog.xml',
114
                    'bpchar', 'pg_catalog.bpchar',
115
                    'name', 'pg_catalog.name',
116
                    'character varying',
117
                    'regclass', 'pg_catalog.regclass',
118
                    'regproc', 'pg_catalog.regproc',
119
                    'regprocedure', 'pg_catalog.regprocedure',
120
                    'regoper', 'pg_catalog.regoper',
121
                    'regoperator', 'pg_catalog.regoperator',
122
                    'regtype', 'pg_catalog.regtype',
123
                    'regrole', 'pg_catalog.regrole',
124
                    'regnamespace', 'pg_catalog.regnamespace',
125
                    'regconfig', 'pg_catalog.regconfig',
126
                    'regdictionary', 'pg_catalog.regdictionary',
127
                    'inet', 'pg_catalog.inet',
128
                    'cidr', 'pg_catalog.cidr',
129
                    'macaddr', 'pg_catalog.macaddr',
130
                ],
131
                false
132
            )
133
            ->registerConverter(
134
                'Timestamp',
135
                new Converter\PgTimestamp(),
136
                [
137
                    'timestamp', 'pg_catalog.timestamp',
138
                    'date', 'pg_catalog.date',
139
                    'time', 'pg_catalog.time',
140
                    'timestamptz', 'pg_catalog.timestamptz',
141
                ],
142
                false
143
            )
144
            ->registerConverter('Interval', new Converter\PgInterval(), ['interval', 'pg_catalog.interval'], false)
145
            ->registerConverter('Binary', new Converter\PgBytea(), ['bytea', 'pg_catalog.bytea'], false)
146
            ->registerConverter('Point', new Converter\Geometry\PgPoint(), ['point', 'pg_catalog.point'], false)
147
            ->registerConverter('Circle', new Converter\Geometry\PgCircle(), ['circle', 'pg_catalog.circle'], false)
148
            ->registerConverter(
149
                'JSON',
150
                new Converter\PgJson(),
151
                [
152
                    'json',
153
                    'jsonb',
154
                    'pg_catalog.json',
155
                    'pg_catalog.jsonb'
156
                ],
157
                false
158
            )
159
            ->registerConverter(
160
                'NumberRange',
161
                new Converter\PgNumRange(),
162
                [
163
                    'int4range', 'pg_catalog.int4range',
164
                    'int8range', 'pg_catalog.int8range',
165
                    'numrange', 'pg_catalog.numrange',
166
                ],
167
                false
168
            )
169
            ->registerConverter(
170
                'TsRange',
171
                new Converter\PgTsRange(),
172
                [
173
                    'tsrange',
174
                    'pg_catalog.tsrange',
175
                    'daterange',
176
                    'pg_catalog.daterange',
177
                    'tstzrange',
178
                    'pg_catalog.tstzrange',
179
                ],
180
                false
181
            )
182
            ;
183
184
        return $this;
185
    }
186
}
187