DirectionResponse   A
last analyzed

Complexity

Total Complexity 36

Size/Duplication

Total Lines 248
Duplicated Lines 0 %

Coupling/Cohesion

Components 5
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 36
lcom 5
cbo 0
dl 0
loc 248
ccs 80
cts 80
cp 1
rs 9.52
c 0
b 0
f 0

27 Methods

Rating   Name   Duplication   Size   Complexity  
A hasStatus() 0 4 1
A getStatus() 0 4 1
A setStatus() 0 4 1
A hasRequest() 0 4 1
A getRequest() 0 4 1
A setRequest() 0 4 1
A hasRoutes() 0 4 1
A getRoutes() 0 4 1
A setRoutes() 0 5 1
A addRoutes() 0 6 2
A hasRoute() 0 4 1
A addRoute() 0 6 2
A removeRoute() 0 5 2
A hasGeocodedWaypoints() 0 4 1
A getGeocodedWaypoints() 0 4 1
A setGeocodedWaypoints() 0 5 1
A addGeocodedWaypoints() 0 6 2
A hasGeocodedWaypoint() 0 4 1
A addGeocodedWaypoint() 0 6 2
A removeGeocodedWaypoint() 0 5 2
A hasAvailableTravelModes() 0 4 1
A getAvailableTravelModes() 0 4 1
A setAvailableTravelModes() 0 5 1
A addAvailableTravelModes() 0 6 2
A hasAvailableTravelMode() 0 4 1
A addAvailableTravelMode() 0 6 2
A removeAvailableTravelMode() 0 5 2
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\Service\Direction\Response;
13
14
use Ivory\GoogleMap\Service\Direction\Request\DirectionRequestInterface;
15
16
/**
17
 * @author GeLo <[email protected]>
18
 */
19
class DirectionResponse
20
{
21
    /**
22
     * @var string|null
23
     */
24
    private $status;
25
26
    /**
27
     * @var DirectionRequestInterface|null
28
     */
29
    private $request;
30
31
    /**
32
     * @var DirectionRoute[]
33
     */
34
    private $routes = [];
35
36
    /**
37
     * @var DirectionGeocoded[]
38
     */
39
    private $geocodedWaypoints = [];
40
41
    /**
42
     * @var string[]
43
     */
44
    private $availableTravelModes = [];
45
46
    /**
47
     * @return bool
48
     */
49 8
    public function hasStatus()
50
    {
51 8
        return null !== $this->status;
52
    }
53
54
    /**
55
     * @return string|null
56
     */
57 8
    public function getStatus()
58
    {
59 8
        return $this->status;
60
    }
61
62
    /**
63
     * @param string|null $status
64
     */
65 4
    public function setStatus($status = null)
66
    {
67 4
        $this->status = $status;
68 4
    }
69
70
    /**
71
     * @return bool
72
     */
73 8
    public function hasRequest()
74
    {
75 8
        return null !== $this->request;
76
    }
77
78
    /**
79
     * @return DirectionRequestInterface|null
80
     */
81 8
    public function getRequest()
82
    {
83 8
        return $this->request;
84
    }
85
86 4
    public function setRequest(DirectionRequestInterface $request = null)
87
    {
88 4
        $this->request = $request;
89 4
    }
90
91
    /**
92
     * @return bool
93
     */
94 20
    public function hasRoutes()
95
    {
96 20
        return !empty($this->routes);
97
    }
98
99
    /**
100
     * @return DirectionRoute[]
101
     */
102 20
    public function getRoutes()
103
    {
104 20
        return $this->routes;
105
    }
106
107
    /**
108
     * @param DirectionRoute[] $routes
109
     */
110 8
    public function setRoutes(array $routes)
111
    {
112 8
        $this->routes = [];
113 8
        $this->addRoutes($routes);
114 8
    }
115
116
    /**
117
     * @param DirectionRoute[] $routes
118
     */
119 8
    public function addRoutes(array $routes)
120
    {
121 8
        foreach ($routes as $route) {
122 8
            $this->addRoute($route);
123
        }
124 8
    }
125
126
    /**
127
     * @return bool
128
     */
129 16
    public function hasRoute(DirectionRoute $route)
130
    {
131 16
        return in_array($route, $this->routes, true);
132
    }
133
134 16
    public function addRoute(DirectionRoute $route)
135
    {
136 16
        if (!$this->hasRoute($route)) {
137 16
            $this->routes[] = $route;
138
        }
139 16
    }
140
141 4
    public function removeRoute(DirectionRoute $route)
142
    {
143 4
        unset($this->routes[array_search($route, $this->routes, true)]);
144 4
        $this->routes = empty($this->routes) ? [] : array_values($this->routes);
145 4
    }
146
147
    /**
148
     * @return bool
149
     */
150 20
    public function hasGeocodedWaypoints()
151
    {
152 20
        return !empty($this->geocodedWaypoints);
153
    }
154
155
    /**
156
     * @return DirectionGeocoded[]
157
     */
158 20
    public function getGeocodedWaypoints()
159
    {
160 20
        return $this->geocodedWaypoints;
161
    }
162
163
    /**
164
     * @param DirectionGeocoded[] $geocodedWaypoints
165
     */
166 8
    public function setGeocodedWaypoints(array $geocodedWaypoints)
167
    {
168 8
        $this->geocodedWaypoints = [];
169 8
        $this->addGeocodedWaypoints($geocodedWaypoints);
170 8
    }
171
172
    /**
173
     * @param DirectionGeocoded[] $geocodedWaypoints
174
     */
175 8
    public function addGeocodedWaypoints(array $geocodedWaypoints)
176
    {
177 8
        foreach ($geocodedWaypoints as $geocodedWaypoint) {
178 8
            $this->addGeocodedWaypoint($geocodedWaypoint);
179
        }
180 8
    }
181
182
    /**
183
     * @return bool
184
     */
185 16
    public function hasGeocodedWaypoint(DirectionGeocoded $geocodedWaypoint)
186
    {
187 16
        return in_array($geocodedWaypoint, $this->geocodedWaypoints, true);
188
    }
189
190 16
    public function addGeocodedWaypoint(DirectionGeocoded $geocodedWaypoint)
191
    {
192 16
        if (!$this->hasGeocodedWaypoint($geocodedWaypoint)) {
193 16
            $this->geocodedWaypoints[] = $geocodedWaypoint;
194
        }
195 16
    }
196
197 4
    public function removeGeocodedWaypoint(DirectionGeocoded $geocodedWaypoint)
198
    {
199 4
        unset($this->geocodedWaypoints[array_search($geocodedWaypoint, $this->geocodedWaypoints, true)]);
200 4
        $this->geocodedWaypoints = empty($this->geocodedWaypoints) ? [] : array_values($this->geocodedWaypoints);
201 4
    }
202
203
    /**
204
     * @return bool
205
     */
206 20
    public function hasAvailableTravelModes()
207
    {
208 20
        return !empty($this->availableTravelModes);
209
    }
210
211
    /**
212
     * @return string[]
213
     */
214 20
    public function getAvailableTravelModes()
215
    {
216 20
        return $this->availableTravelModes;
217
    }
218
219
    /**
220
     * @param string[] $availableTravelModes
221
     */
222 8
    public function setAvailableTravelModes(array $availableTravelModes)
223
    {
224 8
        $this->availableTravelModes = [];
225 8
        $this->addAvailableTravelModes($availableTravelModes);
226 8
    }
227
228
    /**
229
     * @param string[] $availableTravelModes
230
     */
231 8
    public function addAvailableTravelModes(array $availableTravelModes)
232
    {
233 8
        foreach ($availableTravelModes as $availableTravelMode) {
234 8
            $this->addAvailableTravelMode($availableTravelMode);
235
        }
236 8
    }
237
238
    /**
239
     * @param string $availableTravelMode
240
     *
241
     * @return bool
242
     */
243 16
    public function hasAvailableTravelMode($availableTravelMode)
244
    {
245 16
        return in_array($availableTravelMode, $this->availableTravelModes, true);
246
    }
247
248
    /**
249
     * @param string $availableTravelMode
250
     */
251 16
    public function addAvailableTravelMode($availableTravelMode)
252
    {
253 16
        if (!$this->hasAvailableTravelMode($availableTravelMode)) {
254 16
            $this->availableTravelModes[] = $availableTravelMode;
255
        }
256 16
    }
257
258
    /**
259
     * @param string $availableTravelMode
260
     */
261 4
    public function removeAvailableTravelMode($availableTravelMode)
262
    {
263 4
        unset($this->availableTravelModes[array_search($availableTravelMode, $this->availableTravelModes, true)]);
264 4
        $this->availableTravelModes = empty($this->availableTravelModes) ? [] : array_values($this->availableTravelModes);
265 4
    }
266
}
267