Completed
Pull Request — master (#145)
by Graham
09:30
created

PhoneMetadata   D

Complexity

Total Complexity 164

Size/Duplication

Total Lines 963
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 97.73%

Importance

Changes 0
Metric Value
wmc 164
c 0
b 0
f 0
lcom 1
cbo 2
dl 0
loc 963
rs 4.4444
ccs 388
cts 397
cp 0.9773

107 Methods

Rating   Name   Duplication   Size   Complexity  
A isMainCountryForCode() 0 4 1
A setMainCountryForCode() 0 5 1
A hasCountryCode() 0 4 1
A getMainCountryForCode() 0 4 1
A hasId() 0 4 1
A hasMainCountryForCode() 0 4 1
A hasInternationalPrefix() 0 4 1
A clearMainCountryForCode() 0 5 1
A hasLeadingZeroPossible() 0 4 1
A hasMobileNumberPortableRegion() 0 4 1
A hasSameMobileAndFixedLinePattern() 0 4 1
A numberFormatSize() 0 4 1
A getNumberFormat() 0 4 1
A intlNumberFormatSize() 0 4 1
A getIntlNumberFormat() 0 4 1
A clearIntlNumberFormat() 0 5 1
F toArray() 0 131 31
A hasGeneralDesc() 0 4 1
A getGeneralDesc() 0 4 1
A setGeneralDesc() 0 5 1
A hasFixedLine() 0 4 1
A getFixedLine() 0 4 1
A setFixedLine() 0 5 1
A hasMobile() 0 4 1
A getMobile() 0 4 1
A setMobile() 0 5 1
A hasTollFree() 0 4 1
A getTollFree() 0 4 1
A setTollFree() 0 5 1
A hasPremiumRate() 0 4 1
A getPremiumRate() 0 4 1
A setPremiumRate() 0 5 1
A hasSharedCost() 0 4 1
A getSharedCost() 0 4 1
A setSharedCost() 0 5 1
A hasPersonalNumber() 0 4 1
A getPersonalNumber() 0 4 1
A setPersonalNumber() 0 5 1
A hasVoip() 0 4 1
A getVoip() 0 4 1
A setVoip() 0 5 1
A hasPager() 0 4 1
A getPager() 0 4 1
A setPager() 0 5 1
A hasUan() 0 4 1
A getUan() 0 4 1
A setUan() 0 5 1
A hasEmergency() 0 4 1
A getEmergency() 0 4 1
A setEmergency() 0 5 1
A hasVoicemail() 0 4 1
A getVoicemail() 0 4 1
A setVoicemail() 0 5 1
A hasShortCode() 0 4 1
A getShortCode() 0 4 1
A setShortCode() 0 5 1
A hasStandardRate() 0 4 1
A getStandardRate() 0 4 1
A setStandardRate() 0 5 1
A hasCarrierSpecific() 0 4 1
A getCarrierSpecific() 0 4 1
A setCarrierSpecific() 0 5 1
A hasNoInternationalDialling() 0 4 1
A getNoInternationalDialling() 0 4 1
A setNoInternationalDialling() 0 5 1
A getId() 0 4 1
A setId() 0 5 1
A getCountryCode() 0 4 1
A setCountryCode() 0 5 1
A getInternationalPrefix() 0 4 1
A setInternationalPrefix() 0 5 1
A hasPreferredInternationalPrefix() 0 4 1
A getPreferredInternationalPrefix() 0 4 1
A setPreferredInternationalPrefix() 0 5 1
A clearPreferredInternationalPrefix() 0 5 1
A hasNationalPrefix() 0 4 1
A getNationalPrefix() 0 4 1
A setNationalPrefix() 0 5 1
A clearNationalPrefix() 0 5 1
A hasPreferredExtnPrefix() 0 4 1
A getPreferredExtnPrefix() 0 4 1
A setPreferredExtnPrefix() 0 5 1
A clearPreferredExtnPrefix() 0 5 1
A hasNationalPrefixForParsing() 0 4 1
A getNationalPrefixForParsing() 0 4 1
A setNationalPrefixForParsing() 0 5 1
A hasNationalPrefixTransformRule() 0 4 1
A getNationalPrefixTransformRule() 0 4 1
A setNationalPrefixTransformRule() 0 5 1
A clearNationalPrefixTransformRule() 0 5 1
A isSameMobileAndFixedLinePattern() 0 4 1
A setSameMobileAndFixedLinePattern() 0 5 1
A clearSameMobileAndFixedLinePattern() 0 5 1
A numberFormats() 0 4 1
A intlNumberFormats() 0 4 1
A hasLeadingDigits() 0 4 1
A getLeadingDigits() 0 4 1
A setLeadingDigits() 0 5 1
A isLeadingZeroPossible() 0 4 1
A setLeadingZeroPossible() 0 5 1
A clearLeadingZeroPossible() 0 5 1
A isMobileNumberPortableRegion() 0 4 1
A setMobileNumberPortableRegion() 0 5 1
A clearMobileNumberPortableRegion() 0 5 1
F fromArray() 0 136 28
A addNumberFormat() 0 5 1
A addIntlNumberFormat() 0 5 1

How to fix   Complexity   

Complex Class

Complex classes like PhoneMetadata often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use PhoneMetadata, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
namespace libphonenumber;
4
5
/**
6
 * Class PhoneMetadata
7
 * @package libphonenumber
8
 * @internal Used internally, and can change at any time
9
 */
10
class PhoneMetadata
11
{
12
    /**
13
     * @var string
14
     */
15
    protected $id = null;
16
    /**
17
     * @var int
18
     */
19
    protected $countryCode = null;
20
    protected $leadingDigits = null;
21
    protected $internationalPrefix = null;
22
    protected $preferredInternationalPrefix = null;
23
    protected $nationalPrefixForParsing = null;
24
    protected $nationalPrefixTransformRule = null;
25
    protected $nationalPrefix = null;
26
    protected $preferredExtnPrefix = null;
27
    protected $mainCountryForCode = false;
28
    protected $leadingZeroPossible = false;
29
    protected $mobileNumberPortableRegion = false;
30
    protected $generalDesc = null;
31
    /**
32
     * @var PhoneNumberDesc
33
     */
34
    protected $mobile = null;
35
    protected $premiumRate = null;
36
    protected $fixedLine = null;
37
    protected $sameMobileAndFixedLinePattern = false;
38
    protected $numberFormat = array();
39
    protected $tollFree = null;
40
    protected $sharedCost = null;
41
    protected $personalNumber;
42
    protected $voip;
43
    protected $pager;
44
    protected $uan;
45
    protected $emergency;
46
    protected $voicemail;
47
    /**
48
     * @var PhoneNumberDesc
49
     */
50
    protected $short_code;
51
    /**
52
     * @var PhoneNumberDesc
53
     */
54
    protected $standard_rate;
55
    /**
56
     * @var PhoneNumberDesc
57
     */
58
    protected $carrierSpecific;
59
    /**
60
     * @var PhoneNumberDesc
61
     */
62
    protected $noInternationalDialling = null;
63
    /**
64
     *
65
     * @var NumberFormat[]
66
     */
67
    protected $intlNumberFormat = array();
68
69
    /**
70
     * @return boolean
71
     */
72
    public function hasId()
73
    {
74
        return isset($this->id);
75
    }
76
77
    /**
78
     * @return boolean
79
     */
80 482
    public function hasCountryCode()
81
    {
82 482
        return isset($this->countryCode);
83
    }
84
85 482
    public function hasInternationalPrefix()
86
    {
87 482
        return isset($this->internationalPrefix);
88
    }
89
90
    public function hasMainCountryForCode()
91
    {
92
        return isset($this->mainCountryForCode);
93
    }
94
95 2
    public function isMainCountryForCode()
96
    {
97 2
        return $this->mainCountryForCode;
98
    }
99
100 482
    public function getMainCountryForCode()
101
    {
102 482
        return $this->mainCountryForCode;
103
    }
104
105 1349
    public function setMainCountryForCode($value)
106
    {
107 1349
        $this->mainCountryForCode = $value;
108 1349
        return $this;
109
    }
110
111 1
    public function clearMainCountryForCode()
112
    {
113 1
        $this->mainCountryForCode = false;
114 1
        return $this;
115
    }
116
117 482
    public function hasLeadingZeroPossible()
118
    {
119 482
        return isset($this->leadingZeroPossible);
120
    }
121
122 482
    public function hasMobileNumberPortableRegion()
123
    {
124 482
        return isset($this->mobileNumberPortableRegion);
125
    }
126
127 483
    public function hasSameMobileAndFixedLinePattern()
128
    {
129 483
        return isset($this->sameMobileAndFixedLinePattern);
130
    }
131
132 2
    public function numberFormatSize()
133
    {
134 2
        return count($this->numberFormat);
135
    }
136
137
    /**
138
     * @param int $index
139
     * @return NumberFormat
140
     */
141 11
    public function getNumberFormat($index)
142
    {
143 11
        return $this->numberFormat[$index];
144
    }
145
146
    public function intlNumberFormatSize()
147
    {
148
        return count($this->intlNumberFormat);
149
    }
150
151 6
    public function getIntlNumberFormat($index)
152
    {
153 6
        return $this->intlNumberFormat[$index];
154
    }
155
156 7
    public function clearIntlNumberFormat()
157
    {
158 7
        $this->intlNumberFormat = array();
159 7
        return $this;
160
    }
161
162 482
    public function toArray()
163
    {
164 482
        $output = array();
165
166 482
        if ($this->hasGeneralDesc()) {
167 482
            $output['generalDesc'] = $this->getGeneralDesc()->toArray();
168
        }
169
170 482
        if ($this->hasFixedLine()) {
171 244
            $output['fixedLine'] = $this->getFixedLine()->toArray();
172
        }
173
174 482
        if ($this->hasMobile()) {
175 244
            $output['mobile'] = $this->getMobile()->toArray();
176
        }
177
178 482
        if ($this->hasTollFree()) {
179 482
            $output['tollFree'] = $this->getTollFree()->toArray();
180
        }
181
182 482
        if ($this->hasPremiumRate()) {
183 482
            $output['premiumRate'] = $this->getPremiumRate()->toArray();
184
        }
185
186 482
        if ($this->hasPremiumRate()) {
187 482
            $output['premiumRate'] = $this->getPremiumRate()->toArray();
188
        }
189
190 482
        if ($this->hasSharedCost()) {
191 244
            $output['sharedCost'] = $this->getSharedCost()->toArray();
192
        }
193
194 482
        if ($this->hasPersonalNumber()) {
195 244
            $output['personalNumber'] = $this->getPersonalNumber()->toArray();
196
        }
197
198 482
        if ($this->hasVoip()) {
199 244
            $output['voip'] = $this->getVoip()->toArray();
200
        }
201
202 482
        if ($this->hasPager()) {
203 244
            $output['pager'] = $this->getPager()->toArray();
204
        }
205
206 482
        if ($this->hasUan()) {
207 244
            $output['uan'] = $this->getUan()->toArray();
208
        }
209
210 482
        if ($this->hasEmergency()) {
211 238
            $output['emergency'] = $this->getEmergency()->toArray();
212
        }
213
214 482
        if ($this->hasVoicemail()) {
215 244
            $output['voicemail'] = $this->getVoicemail()->toArray();
216
        }
217
218 482
        if ($this->hasShortCode()) {
219 238
            $output['shortCode'] = $this->getShortCode()->toArray();
220
        }
221
222 482
        if ($this->hasStandardRate()) {
223 238
            $output['standardRate'] = $this->getStandardRate()->toArray();
224
        }
225
226 482
        if ($this->hasCarrierSpecific()) {
227 238
            $output['carrierSpecific'] = $this->getCarrierSpecific()->toArray();
228
        }
229
230 482
        if ($this->hasNoInternationalDialling()) {
231 244
            $output['noInternationalDialling'] = $this->getNoInternationalDialling()->toArray();
232
        }
233
234 482
        $output['id'] = $this->getId();
235 482
        if ($this->hasCountryCode()) {
236 482
            $output['countryCode'] = $this->getCountryCode();
237
        }
238
239 482
        if ($this->hasInternationalPrefix()) {
240 482
            $output['internationalPrefix'] = $this->getInternationalPrefix();
241
        }
242
243 482
        if ($this->hasPreferredInternationalPrefix()) {
244 22
            $output['preferredInternationalPrefix'] = $this->getPreferredInternationalPrefix();
245
        }
246
247 482
        if ($this->hasNationalPrefix()) {
248 146
            $output['nationalPrefix'] = $this->getNationalPrefix();
249
        }
250
251 482
        if ($this->hasPreferredExtnPrefix()) {
252 8
            $output['preferredExtnPrefix'] = $this->getPreferredExtnPrefix();
253
        }
254
255 482
        if ($this->hasNationalPrefixForParsing()) {
256 151
            $output['nationalPrefixForParsing'] = $this->getNationalPrefixForParsing();
257
        }
258
259 482
        if ($this->hasNationalPrefixTransformRule()) {
260 4
            $output['nationalPrefixTransformRule'] = $this->getNationalPrefixTransformRule();
261
        }
262
263 482
        if ($this->hasSameMobileAndFixedLinePattern()) {
264 482
            $output['sameMobileAndFixedLinePattern'] = $this->isSameMobileAndFixedLinePattern();
265
        }
266
267 482
        $output['numberFormat'] = array();
268 482
        foreach ($this->numberFormats() as $numberFormat) {
269 198
            $output['numberFormat'][] = $numberFormat->toArray();
270
        }
271
272 482
        $output['intlNumberFormat'] = array();
273 482
        foreach ($this->intlNumberFormats() as $intlNumberFormat) {
274 15
            $output['intlNumberFormat'][] = $intlNumberFormat->toArray();
275
        }
276
277 482
        $output['mainCountryForCode'] = $this->getMainCountryForCode();
278
279 482
        if ($this->hasLeadingDigits()) {
280 26
            $output['leadingDigits'] = $this->getLeadingDigits();
281
        }
282
283 482
        if ($this->hasLeadingZeroPossible()) {
284 482
            $output['leadingZeroPossible'] = $this->isLeadingZeroPossible();
285
        }
286
287 482
        if ($this->hasMobileNumberPortableRegion()) {
288 482
            $output['mobileNumberPortableRegion'] = $this->isMobileNumberPortableRegion();
289
        }
290
291 482
        return $output;
292
    }
293
294 485
    public function hasGeneralDesc()
295
    {
296 485
        return isset($this->generalDesc);
297
    }
298
299
    /**
300
     * @return PhoneNumberDesc
301
     */
302 3269
    public function getGeneralDesc()
303
    {
304 3269
        return $this->generalDesc;
305
    }
306
307 1357
    public function setGeneralDesc(PhoneNumberDesc $value)
308
    {
309 1357
        $this->generalDesc = $value;
310 1357
        return $this;
311
    }
312
313 485
    public function hasFixedLine()
314
    {
315 485
        return isset($this->fixedLine);
316
    }
317
318
    /**
319
     * @return PhoneNumberDesc
320
     */
321 1768
    public function getFixedLine()
322
    {
323 1768
        return $this->fixedLine;
324
    }
325
326 860
    public function setFixedLine(PhoneNumberDesc $value)
327
    {
328 860
        $this->fixedLine = $value;
329 860
        return $this;
330
    }
331
332 485
    public function hasMobile()
333
    {
334 485
        return isset($this->mobile);
335
    }
336
337
    /**
338
     * @return PhoneNumberDesc
339
     */
340 1383
    public function getMobile()
341
    {
342 1383
        return $this->mobile;
343
    }
344
345 860
    public function setMobile(PhoneNumberDesc $value)
346
    {
347 860
        $this->mobile = $value;
348 860
        return $this;
349
    }
350
351 485
    public function hasTollFree()
352
    {
353 485
        return isset($this->tollFree);
354
    }
355
356
    /**
357
     * @return PhoneNumberDesc
358
     */
359 2638
    public function getTollFree()
360
    {
361 2638
        return $this->tollFree;
362
    }
363
364 1354
    public function setTollFree(PhoneNumberDesc $value)
365
    {
366 1354
        $this->tollFree = $value;
367 1354
        return $this;
368
    }
369
370 485
    public function hasPremiumRate()
371
    {
372 485
        return isset($this->premiumRate);
373
    }
374
375
    /**
376
     * @return PhoneNumberDesc
377
     */
378 2868
    public function getPremiumRate()
379
    {
380 2868
        return $this->premiumRate;
381
    }
382
383 1354
    public function setPremiumRate(PhoneNumberDesc $value)
384
    {
385 1354
        $this->premiumRate = $value;
386 1354
        return $this;
387
    }
388
389 485
    public function hasSharedCost()
390
    {
391 485
        return isset($this->sharedCost);
392
    }
393
394
    /**
395
     * @return PhoneNumberDesc
396
     */
397 1855
    public function getSharedCost()
398
    {
399 1855
        return $this->sharedCost;
400
    }
401
402 860
    public function setSharedCost(PhoneNumberDesc $value)
403
    {
404 860
        $this->sharedCost = $value;
405 860
        return $this;
406
    }
407
408 485
    public function hasPersonalNumber()
409
    {
410 485
        return isset($this->personalNumber);
411
    }
412
413
    /**
414
     * @return PhoneNumberDesc
415
     */
416 1708
    public function getPersonalNumber()
417
    {
418 1708
        return $this->personalNumber;
419
    }
420
421 860
    public function setPersonalNumber(PhoneNumberDesc $value)
422
    {
423 860
        $this->personalNumber = $value;
424 860
        return $this;
425
    }
426
427 485
    public function hasVoip()
428
    {
429 485
        return isset($this->voip);
430
    }
431
432
    /**
433
     * @return PhoneNumberDesc
434
     */
435 1774
    public function getVoip()
436
    {
437 1774
        return $this->voip;
438
    }
439
440 860
    public function setVoip(PhoneNumberDesc $value)
441
    {
442 860
        $this->voip = $value;
443 860
        return $this;
444
    }
445
446 485
    public function hasPager()
447
    {
448 485
        return isset($this->pager);
449
    }
450
451
    /**
452
     * @return PhoneNumberDesc
453
     */
454 1683
    public function getPager()
455
    {
456 1683
        return $this->pager;
457
    }
458
459 860
    public function setPager(PhoneNumberDesc $value)
460
    {
461 860
        $this->pager = $value;
462 860
        return $this;
463
    }
464
465 485
    public function hasUan()
466
    {
467 485
        return isset($this->uan);
468
    }
469
470
    /**
471
     * @return PhoneNumberDesc
472
     */
473 1635
    public function getUan()
474
    {
475 1635
        return $this->uan;
476
    }
477
478 860
    public function setUan(PhoneNumberDesc $value)
479
    {
480 860
        $this->uan = $value;
481 860
        return $this;
482
    }
483
484 759
    public function hasEmergency()
485
    {
486 759
        return isset($this->emergency);
487
    }
488
489
    /**
490
     * @return PhoneNumberDesc
491
     */
492 513
    public function getEmergency()
493
    {
494 513
        return $this->emergency;
495
    }
496
497 501
    public function setEmergency(PhoneNumberDesc $value)
498
    {
499 501
        $this->emergency = $value;
500 501
        return $this;
501
    }
502
503 485
    public function hasVoicemail()
504
    {
505 485
        return isset($this->voicemail);
506
    }
507
508
    /**
509
     * @return PhoneNumberDesc
510
     */
511 1620
    public function getVoicemail()
512
    {
513 1620
        return $this->voicemail;
514
    }
515
516 860
    public function setVoicemail(PhoneNumberDesc $value)
517
    {
518 860
        $this->voicemail = $value;
519 860
        return $this;
520
    }
521
522 485
    public function hasShortCode()
523
    {
524 485
        return isset($this->short_code);
525
    }
526
527 489
    public function getShortCode()
528
    {
529 489
        return $this->short_code;
530
    }
531
532 501
    public function setShortCode(PhoneNumberDesc $value)
533
    {
534 501
        $this->short_code = $value;
535 501
        return $this;
536
    }
537
538 485
    public function hasStandardRate()
539
    {
540 485
        return isset($this->standard_rate);
541
    }
542
543 767
    public function getStandardRate()
544
    {
545 767
        return $this->standard_rate;
546
    }
547
548 501
    public function setStandardRate(PhoneNumberDesc $value)
549
    {
550 501
        $this->standard_rate = $value;
551 501
        return $this;
552
    }
553
554 485
    public function hasCarrierSpecific()
555
    {
556 485
        return isset($this->carrierSpecific);
557
    }
558
559 477
    public function getCarrierSpecific()
560
    {
561 477
        return $this->carrierSpecific;
562
    }
563
564 501
    public function setCarrierSpecific(PhoneNumberDesc $value)
565
    {
566 501
        $this->carrierSpecific = $value;
567 501
        return $this;
568
    }
569
570 485
    public function hasNoInternationalDialling()
571
    {
572 485
        return isset($this->noInternationalDialling);
573
    }
574
575 493
    public function getNoInternationalDialling()
576
    {
577 493
        return $this->noInternationalDialling;
578
    }
579
580 860
    public function setNoInternationalDialling(PhoneNumberDesc $value)
581
    {
582 860
        $this->noInternationalDialling = $value;
583 860
        return $this;
584
    }
585
586
    /**
587
     * @return string
588
     */
589 497
    public function getId()
590
    {
591 497
        return $this->id;
592
    }
593
594
    /**
595
     * @param string $value
596
     * @return PhoneMetadata
597
     */
598 1358
    public function setId($value)
599
    {
600 1358
        $this->id = $value;
601 1358
        return $this;
602
    }
603
604
    /**
605
     * @return int
606
     */
607 3224
    public function getCountryCode()
608
    {
609 3224
        return $this->countryCode;
610
    }
611
612
    /**
613
     * @param int $value
614
     * @return PhoneMetadata
615
     */
616 1358
    public function setCountryCode($value)
617
    {
618 1358
        $this->countryCode = $value;
619 1358
        return $this;
620
    }
621
622 3217
    public function getInternationalPrefix()
623
    {
624 3217
        return $this->internationalPrefix;
625
    }
626
627 1358
    public function setInternationalPrefix($value)
628
    {
629 1358
        $this->internationalPrefix = $value;
630 1358
        return $this;
631
    }
632
633 485
    public function hasPreferredInternationalPrefix()
634
    {
635 485
        return isset($this->preferredInternationalPrefix);
636
    }
637
638 27
    public function getPreferredInternationalPrefix()
639
    {
640 27
        return $this->preferredInternationalPrefix;
641
    }
642
643 85
    public function setPreferredInternationalPrefix($value)
644
    {
645 85
        $this->preferredInternationalPrefix = $value;
646 85
        return $this;
647
    }
648
649 1
    public function clearPreferredInternationalPrefix()
650
    {
651 1
        $this->preferredInternationalPrefix = '';
652 1
        return $this;
653
    }
654
655 484
    public function hasNationalPrefix()
656
    {
657 484
        return isset($this->nationalPrefix);
658
    }
659
660 154
    public function getNationalPrefix()
661
    {
662 154
        return $this->nationalPrefix;
663
    }
664
665 539
    public function setNationalPrefix($value)
666
    {
667 539
        $this->nationalPrefix = $value;
668 539
        return $this;
669
    }
670
671
    public function clearNationalPrefix()
672
    {
673
        $this->nationalPrefix = '';
674
        return $this;
675
    }
676
677 484
    public function hasPreferredExtnPrefix()
678
    {
679 484
        return isset($this->preferredExtnPrefix);
680
    }
681
682 10
    public function getPreferredExtnPrefix()
683
    {
684 10
        return $this->preferredExtnPrefix;
685
    }
686
687 93
    public function setPreferredExtnPrefix($value)
688
    {
689 93
        $this->preferredExtnPrefix = $value;
690 93
        return $this;
691
    }
692
693 1
    public function clearPreferredExtnPrefix()
694
    {
695 1
        $this->preferredExtnPrefix = '';
696 1
        return $this;
697
    }
698
699 485
    public function hasNationalPrefixForParsing()
700
    {
701 485
        return isset($this->nationalPrefixForParsing);
702
    }
703
704 2894
    public function getNationalPrefixForParsing()
705
    {
706 2894
        return $this->nationalPrefixForParsing;
707
    }
708
709 555
    public function setNationalPrefixForParsing($value)
710
    {
711 555
        $this->nationalPrefixForParsing = $value;
712 555
        return $this;
713
    }
714
715 482
    public function hasNationalPrefixTransformRule()
716
    {
717 482
        return isset($this->nationalPrefixTransformRule);
718
    }
719
720 77
    public function getNationalPrefixTransformRule()
721
    {
722 77
        return $this->nationalPrefixTransformRule;
723
    }
724
725 33
    public function setNationalPrefixTransformRule($value)
726
    {
727 33
        $this->nationalPrefixTransformRule = $value;
728 33
        return $this;
729
    }
730
731 1
    public function clearNationalPrefixTransformRule()
732
    {
733 1
        $this->nationalPrefixTransformRule = '';
734 1
        return $this;
735
    }
736
737 1604
    public function isSameMobileAndFixedLinePattern()
738
    {
739 1604
        return $this->sameMobileAndFixedLinePattern;
740
    }
741
742 5
    public function setSameMobileAndFixedLinePattern($value)
743
    {
744 5
        $this->sameMobileAndFixedLinePattern = $value;
745 5
        return $this;
746
    }
747
748 1
    public function clearSameMobileAndFixedLinePattern()
749
    {
750 1
        $this->sameMobileAndFixedLinePattern = false;
751 1
        return $this;
752
    }
753
754
    /**
755
     * @return NumberFormat[]
756
     */
757 523
    public function numberFormats()
758
    {
759 523
        return $this->numberFormat;
760
    }
761
762 526
    public function intlNumberFormats()
763
    {
764 526
        return $this->intlNumberFormat;
765
    }
766
767
    /**
768
     * @return bool
769
     */
770 1003
    public function hasLeadingDigits()
771
    {
772 1003
        return isset($this->leadingDigits);
773
    }
774
775 201
    public function getLeadingDigits()
776
    {
777 201
        return $this->leadingDigits;
778
    }
779
780 80
    public function setLeadingDigits($value)
781
    {
782 80
        $this->leadingDigits = $value;
783 80
        return $this;
784
    }
785
786 486
    public function isLeadingZeroPossible()
787
    {
788 486
        return $this->leadingZeroPossible;
789
    }
790
791 1349
    public function setLeadingZeroPossible($value)
792
    {
793 1349
        $this->leadingZeroPossible = $value;
794 1349
        return $this;
795
    }
796
797 1
    public function clearLeadingZeroPossible()
798
    {
799 1
        $this->leadingZeroPossible = false;
800 1
        return $this;
801
    }
802
803 487
    public function isMobileNumberPortableRegion()
804
    {
805 487
        return $this->mobileNumberPortableRegion;
806
    }
807
808 1349
    public function setMobileNumberPortableRegion($value)
809
    {
810 1349
        $this->mobileNumberPortableRegion = $value;
811 1349
        return $this;
812
    }
813
814 1
    public function clearMobileNumberPortableRegion()
815
    {
816 1
        $this->mobileNumberPortableRegion = false;
817 1
        return $this;
818
    }
819
820
    /**
821
     * @param array $input
822
     * @return PhoneMetadata
823
     */
824 1348
    public function fromArray(array $input)
825
    {
826 1348
        if (isset($input['generalDesc'])) {
827 1348
            $desc = new PhoneNumberDesc();
828 1348
            $this->setGeneralDesc($desc->fromArray($input['generalDesc']));
829
        }
830
831 1348
        if (isset($input['fixedLine'])) {
832 855
            $desc = new PhoneNumberDesc();
833 855
            $this->setFixedLine($desc->fromArray($input['fixedLine']));
834
        }
835
836 1348
        if (isset($input['mobile'])) {
837 855
            $desc = new PhoneNumberDesc();
838 855
            $this->setMobile($desc->fromArray($input['mobile']));
839
        }
840
841 1348
        if (isset($input['tollFree'])) {
842 1348
            $desc = new PhoneNumberDesc();
843 1348
            $this->setTollFree($desc->fromArray($input['tollFree']));
844
        }
845
846 1348
        if (isset($input['premiumRate'])) {
847 1348
            $desc = new PhoneNumberDesc();
848 1348
            $this->setPremiumRate($desc->fromArray($input['premiumRate']));
849
        }
850
851 1348
        if (isset($input['sharedCost'])) {
852 855
            $desc = new PhoneNumberDesc();
853 855
            $this->setSharedCost($desc->fromArray($input['sharedCost']));
854
        }
855
856 1348
        if (isset($input['personalNumber'])) {
857 855
            $desc = new PhoneNumberDesc();
858 855
            $this->setPersonalNumber($desc->fromArray($input['personalNumber']));
859
        }
860
861 1348
        if (isset($input['voip'])) {
862 855
            $desc = new PhoneNumberDesc();
863 855
            $this->setVoip($desc->fromArray($input['voip']));
864
        }
865
866 1348
        if (isset($input['pager'])) {
867 855
            $desc = new PhoneNumberDesc();
868 855
            $this->setPager($desc->fromArray($input['pager']));
869
        }
870
871 1348
        if (isset($input['uan'])) {
872 855
            $desc = new PhoneNumberDesc();
873 855
            $this->setUan($desc->fromArray($input['uan']));
874
        }
875
876 1348
        if (isset($input['emergency'])) {
877 500
            $desc = new PhoneNumberDesc();
878 500
            $this->setEmergency($desc->fromArray($input['emergency']));
879
        }
880
881 1348
        if (isset($input['voicemail'])) {
882 855
            $desc = new PhoneNumberDesc();
883 855
            $this->setVoicemail($desc->fromArray($input['voicemail']));
884
        }
885
886 1348
        if (isset($input['shortCode'])) {
887 500
            $desc = new PhoneNumberDesc();
888 500
            $this->setShortCode(($desc->fromArray($input['shortCode'])));
889
        }
890
891 1348
        if (isset($input['standardRate'])) {
892 500
            $desc = new PhoneNumberDesc();
893 500
            $this->setStandardRate($desc->fromArray($input['standardRate']));
894
        }
895
896 1348
        if (isset($input['carrierSpecific'])) {
897 500
            $desc = new PhoneNumberDesc();
898 500
            $this->setCarrierSpecific($desc->fromArray($input['carrierSpecific']));
899
        }
900
901 1348
        if (isset($input['noInternationalDialling'])) {
902 855
            $desc = new PhoneNumberDesc();
903 855
            $this->setNoInternationalDialling($desc->fromArray($input['noInternationalDialling']));
904
        }
905
906 1348
        $this->setId($input['id']);
907 1348
        $this->setCountryCode($input['countryCode']);
908 1348
        $this->setInternationalPrefix($input['internationalPrefix']);
909
910 1348
        if (isset($input['preferredInternationalPrefix'])) {
911 84
            $this->setPreferredInternationalPrefix($input['preferredInternationalPrefix']);
912
        }
913 1348
        if (isset($input['nationalPrefix'])) {
914 536
            $this->setNationalPrefix($input['nationalPrefix']);
915
        }
916 1348
        if (isset($input['nationalPrefix'])) {
917 536
            $this->setNationalPrefix($input['nationalPrefix']);
918
        }
919
920 1348
        if (isset($input['preferredExtnPrefix'])) {
921 92
            $this->setPreferredExtnPrefix($input['preferredExtnPrefix']);
922
        }
923
924 1348
        if (isset($input['nationalPrefixForParsing'])) {
925 551
            $this->setNationalPrefixForParsing($input['nationalPrefixForParsing']);
926
        }
927
928 1348
        if (isset($input['nationalPrefixTransformRule'])) {
929 31
            $this->setNationalPrefixTransformRule($input['nationalPrefixTransformRule']);
930
        }
931
932 1348
        foreach ($input['numberFormat'] as $numberFormatElt) {
933 754
            $numberFormat = new NumberFormat();
934 754
            $numberFormat->fromArray($numberFormatElt);
935 754
            $this->addNumberFormat($numberFormat);
936
        }
937
938 1348
        foreach ($input['intlNumberFormat'] as $intlNumberFormatElt) {
939 137
            $numberFormat = new NumberFormat();
940 137
            $numberFormat->fromArray($intlNumberFormatElt);
941 137
            $this->addIntlNumberFormat($numberFormat);
942
        }
943
944 1348
        $this->setMainCountryForCode($input['mainCountryForCode']);
945
946 1348
        if (isset($input['leadingDigits'])) {
947 79
            $this->setLeadingDigits($input['leadingDigits']);
948
        }
949
950 1348
        if (isset($input['leadingZeroPossible'])) {
951 1348
            $this->setLeadingZeroPossible($input['leadingZeroPossible']);
952
        }
953
954 1348
        if (isset($input['mobileNumberPortableRegion'])) {
955 1348
            $this->setMobileNumberPortableRegion($input['mobileNumberPortableRegion']);
956
        }
957
958 1348
        return $this;
959
    }
960
961 762
    public function addNumberFormat(NumberFormat $value)
962
    {
963 762
        $this->numberFormat[] = $value;
964 762
        return $this;
965
    }
966
967 149
    public function addIntlNumberFormat(NumberFormat $value)
968
    {
969 149
        $this->intlNumberFormat[] = $value;
970 149
        return $this;
971
    }
972
}
973