Organization   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 97
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 97
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 1
A equals() 0 6 3
A getOrganizationNames() 0 4 1
A getOrganizationDisplayNames() 0 4 1
A getOrganizationUrls() 0 4 1
A deserialize() 0 11 1
A serialize() 0 8 1
A __toString() 0 9 1
1
<?php
2
3
namespace OpenConext\Value\Saml\Metadata;
4
5
use OpenConext\Value\Assert\Assertion;
6
use OpenConext\Value\Saml\Metadata\Organization\OrganizationDisplayNameList;
7
use OpenConext\Value\Saml\Metadata\Organization\OrganizationNameList;
8
use OpenConext\Value\Saml\Metadata\Organization\OrganizationUrlList;
9
use OpenConext\Value\Serializable;
10
11
final class Organization implements Serializable
12
{
13
    /**
14
     * @var OrganizationNameList
15
     */
16
    private $organizationNames;
17
18
    /**
19
     * @var OrganizationDisplayNameList
20
     */
21
    private $organizationDisplayNames;
22
23
    /**
24
     * @var OrganizationUrlList
25
     */
26
    private $organizationUrls;
27
28
    public function __construct(
29
        OrganizationNameList $organizationNames,
30
        OrganizationDisplayNameList $organizationDisplayNames,
31
        OrganizationUrlList $organizationUrls
32
    ) {
33
        Assertion::min(count($organizationNames), 1, 'At least one OrganizationName is required');
34
        Assertion::min(count($organizationDisplayNames), 1, 'At least one OrganizationDisplayName is required');
35
        Assertion::min(count($organizationUrls), 1, 'At least one OrganizationUrl is required');
36
37
        $this->organizationNames        = $organizationNames;
38
        $this->organizationDisplayNames = $organizationDisplayNames;
39
        $this->organizationUrls         = $organizationUrls;
40
    }
41
42
    /**
43
     * @param Organization $other
44
     * @return bool
45
     */
46
    public function equals(Organization $other)
47
    {
48
        return $this->organizationNames->equals($other->organizationNames)
49
                && $this->organizationDisplayNames->equals($other->organizationDisplayNames)
50
                && $this->organizationUrls->equals($other->organizationUrls);
51
    }
52
53
    /**
54
     * @return OrganizationNameList
55
     */
56
    public function getOrganizationNames()
57
    {
58
        return $this->organizationNames;
59
    }
60
61
    /**
62
     * @return OrganizationDisplayNameList
63
     */
64
    public function getOrganizationDisplayNames()
65
    {
66
        return $this->organizationDisplayNames;
67
    }
68
69
    /**
70
     * @return OrganizationUrlList
71
     */
72
    public function getOrganizationUrls()
73
    {
74
        return $this->organizationUrls;
75
    }
76
77
    public static function deserialize($data)
78
    {
79
        Assertion::isArray($data);
80
        Assertion::keysExist($data, array('organization_names', 'organization_display_names', 'organization_urls'));
81
82
        return new self(
83
            OrganizationNameList::deserialize($data['organization_names']),
84
            OrganizationDisplayNameList::deserialize($data['organization_display_names']),
85
            OrganizationUrlList::deserialize($data['organization_urls'])
86
        );
87
    }
88
89
    public function serialize()
90
    {
91
        return array(
92
            'organization_names' => $this->organizationNames->serialize(),
93
            'organization_display_names' => $this->organizationDisplayNames->serialize(),
94
            'organization_urls' => $this->organizationUrls->serialize()
95
        );
96
    }
97
98
    public function __toString()
99
    {
100
        return sprintf(
101
            'Organization(OrganizationNames=%s, OrganizationDisplayNames=%, OrganizationULRs=%s',
102
            $this->organizationNames,
103
            $this->organizationDisplayNames,
104
            $this->organizationUrls
105
        );
106
    }
107
}
108