StaticMapHelperBuilder::createSubscribers()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 46

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 37
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 46
ccs 37
cts 37
cp 1
rs 9.1781
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
/*
4
 * This file is part of the Ivory Google Map package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\GoogleMap\Helper\Builder;
13
14
use Ivory\GoogleMap\Helper\Collector\Image\EncodedPolylineCollector;
15
use Ivory\GoogleMap\Helper\Collector\Image\ExtendableCollector;
16
use Ivory\GoogleMap\Helper\Collector\Image\MarkerCollector;
17
use Ivory\GoogleMap\Helper\Collector\Image\PolylineCollector;
18
use Ivory\GoogleMap\Helper\Renderer\Image\Base\CoordinateRenderer;
19
use Ivory\GoogleMap\Helper\Renderer\Image\Base\PointRenderer;
20
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\EncodedPolylineRenderer;
21
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\EncodedPolylineStyleRenderer;
22
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\EncodedPolylineValueRenderer;
23
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\ExtendableRenderer;
24
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\MarkerLocationRenderer;
25
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\MarkerRenderer;
26
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\MarkerStyleRenderer;
27
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\PolylineLocationRenderer;
28
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\PolylineRenderer;
29
use Ivory\GoogleMap\Helper\Renderer\Image\Overlay\PolylineStyleRenderer;
30
use Ivory\GoogleMap\Helper\Renderer\Image\SizeRenderer;
31
use Ivory\GoogleMap\Helper\Renderer\Image\StyleRenderer;
32
use Ivory\GoogleMap\Helper\StaticMapHelper;
33
use Ivory\GoogleMap\Helper\Subscriber\Image\CenterSubscriber;
34
use Ivory\GoogleMap\Helper\Subscriber\Image\EncodedPolylineSubscriber;
35
use Ivory\GoogleMap\Helper\Subscriber\Image\ExtendableSubscriber;
36
use Ivory\GoogleMap\Helper\Subscriber\Image\FormatSubscriber;
37
use Ivory\GoogleMap\Helper\Subscriber\Image\KeySubscriber;
38
use Ivory\GoogleMap\Helper\Subscriber\Image\MarkerSubscriber;
39
use Ivory\GoogleMap\Helper\Subscriber\Image\PolylineSubscriber;
40
use Ivory\GoogleMap\Helper\Subscriber\Image\ScaleSubscriber;
41
use Ivory\GoogleMap\Helper\Subscriber\Image\SizeSubscriber;
42
use Ivory\GoogleMap\Helper\Subscriber\Image\StaticSubscriber;
43
use Ivory\GoogleMap\Helper\Subscriber\Image\StyleSubscriber;
44
use Ivory\GoogleMap\Helper\Subscriber\Image\TypeSubscriber;
45
use Ivory\GoogleMap\Helper\Subscriber\Image\ZoomSubscriber;
46
47
/**
48
 * @author GeLo <[email protected]>
49
 */
50
class StaticMapHelperBuilder extends AbstractHelperBuilder
51
{
52
    /**
53
     * @var string|null
54
     */
55
    private $secret;
56
57
    /**
58
     * @var string|null
59
     */
60
    private $clientId;
61
62
    /**
63
     * @var string|null
64
     */
65
    private $channel;
66
67
    /**
68
     * @param string|null $key
69
     * @param string|null $secret
70
     * @param string|null $clientId
71
     * @param string|null $channel
72
     */
73 12
    public function __construct($key = null, $secret = null, $clientId = null, $channel = null)
74
    {
75 12
        $this->setKey($key);
76 12
        $this->setSecret($secret);
77 12
        $this->setClientId($clientId);
78 12
        $this->setChannel($channel);
79 12
    }
80
81
    /**
82
     * @return bool
83
     */
84
    public function hasSecret()
85
    {
86
        return null !== $this->secret;
87
    }
88
89
    /**
90
     * @return string|null
91
     */
92 4
    public function getSecret()
93
    {
94 4
        return $this->secret;
95
    }
96
97
    /**
98
     * @param string|null $secret
99
     *
100
     * @return $this
101
     */
102 12
    public function setSecret($secret)
103
    {
104 12
        $this->secret = $secret;
105
106 12
        return $this;
107
    }
108
109
    /**
110
     * @return bool
111
     */
112
    public function hasClientId()
113
    {
114
        return null !== $this->clientId;
115
    }
116
117
    /**
118
     * @return string|null
119
     */
120 4
    public function getClientId()
121
    {
122 4
        return $this->clientId;
123
    }
124
125
    /**
126
     * @param string|null $clientId
127
     *
128
     * @return $this
129
     */
130 12
    public function setClientId($clientId)
131
    {
132 12
        $this->clientId = $clientId;
133
134 12
        return $this;
135
    }
136
137
    /**
138
     * @return bool
139
     */
140
    public function hasChannel()
141
    {
142
        return null !== $this->channel;
143
    }
144
145
    /**
146
     * @return string|null
147
     */
148 4
    public function getChannel()
149
    {
150 4
        return $this->channel;
151
    }
152
153
    /**
154
     * @param string|null $channel
155
     *
156
     * @return $this
157
     */
158 12
    public function setChannel($channel)
159
    {
160 12
        $this->channel = $channel;
161
162 12
        return $this;
163
    }
164
165
    /**
166
     * @return StaticMapHelper
167
     */
168 4
    public function build()
169
    {
170 4
        return new StaticMapHelper(
171 4
            $this->createEventDispatcher(),
172 4
            $this->getSecret(),
173 4
            $this->getClientId(),
174 4
            $this->getChannel()
175
        );
176
    }
177
178
    /**
179
     * {@inheritdoc}
180
     */
181 4
    protected function createSubscribers()
182
    {
183
        // Pre-loaded Renderers
184 4
        $pointRenderer = new PointRenderer();
185 4
        $markerStyleRenderer = new MarkerStyleRenderer($pointRenderer);
186
187
        // Collectors
188 4
        $encodedPolylineCollector = new EncodedPolylineCollector();
189 4
        $extendableCollector = new ExtendableCollector();
190 4
        $markerCollector = new MarkerCollector($markerStyleRenderer);
191 4
        $polylineCollector = new PolylineCollector();
192
193
        // Renderers
194 4
        $coordinateRenderer = new CoordinateRenderer();
195 4
        $sizeRenderer = new SizeRenderer();
196 4
        $styleRenderer = new StyleRenderer();
197 4
        $encodedPolylineValueRenderer = new EncodedPolylineValueRenderer();
198 4
        $encodedPolylineStyleRenderer = new EncodedPolylineStyleRenderer();
199 4
        $encodedPolylineRenderer = new EncodedPolylineRenderer($encodedPolylineStyleRenderer, $encodedPolylineValueRenderer);
200 4
        $markerLocationRenderer = new MarkerLocationRenderer($coordinateRenderer);
201 4
        $markerRenderer = new MarkerRenderer($markerStyleRenderer, $markerLocationRenderer);
202 4
        $polylineLocationRenderer = new PolylineLocationRenderer($coordinateRenderer);
203 4
        $polylineStyleRenderer = new PolylineStyleRenderer();
204 4
        $polylineRenderer = new PolylineRenderer($polylineStyleRenderer, $polylineLocationRenderer);
205 4
        $extendableRenderer = new ExtendableRenderer(
206 4
            $coordinateRenderer,
207 3
            $markerLocationRenderer,
208 3
            $polylineLocationRenderer
209
        );
210
211 4
        return array_merge([
212 4
            new CenterSubscriber($coordinateRenderer),
213 4
            new EncodedPolylineSubscriber($encodedPolylineCollector, $encodedPolylineRenderer),
214 4
            new ExtendableSubscriber($extendableCollector, $extendableRenderer),
215 4
            new FormatSubscriber(),
216 4
            new KeySubscriber($this->key),
217 4
            new MarkerSubscriber($markerCollector, $markerRenderer),
218 4
            new PolylineSubscriber($polylineCollector, $polylineRenderer),
219 4
            new ScaleSubscriber(),
220 4
            new SizeSubscriber($sizeRenderer),
221 4
            new StyleSubscriber($styleRenderer),
222 4
            new StaticSubscriber(),
223 4
            new TypeSubscriber(),
224 4
            new ZoomSubscriber(),
225 4
        ], parent::createSubscribers());
226
    }
227
}
228