Passed
Push — static-analysis ( 7a26b9...dac0e4 )
by SignpostMarv
02:55
created

GroupRef::getMax()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 0
crap 1
1
<?php
2
namespace GoetasWebservices\XML\XSDReader\Schema\Element;
3
4
use BadMethodCallException;
5
use DOMElement;
6
use GoetasWebservices\XML\XSDReader\SchemaReader;
7
8
class GroupRef extends Group implements InterfaceSetMinMax
9
{
10
    /**
11
    * @var Group
12
    */
13
    protected $wrapped;
14
15
    /**
16
    * @var int
17
    */
18
    protected $min = 1;
19
20
    /**
21
    * @var int
22
    */
23
    protected $max = 1;
24
25 135
    public function __construct(Group $group)
26
    {
27 135
        parent::__construct($group->getSchema(), '');
28 135
        $this->wrapped = $group;
29 135
    }
30
31
    /**
32
    * @return int
33
    */
34
    public function getMin()
35
    {
36
        return $this->min;
37
    }
38
39
    /**
40
    * @param int $min
41
    *
42
    * @return $this
43
    */
44 135
    public function setMin($min)
45
    {
46 135
        $this->min = $min;
47 135
        return $this;
48
    }
49
50
    /**
51
    * @return int
52
    */
53 3
    public function getMax()
54
    {
55 3
        return $this->max;
56
    }
57
58
    /**
59
    * @param int $max
60
    *
61
    * @return $this
62
    */
63 135
    public function setMax($max)
64
    {
65 135
        $this->max = $max;
66 135
        return $this;
67
    }
68
69
    /**
70
    * @return string
71
    */
72 3
    public function getName()
73
    {
74 3
        return $this->wrapped->getName();
75
    }
76
77
    /**
78
    * @return ElementItem[]
79
    */
80 3
    public function getElements()
81
    {
82 3
        $elements = $this->wrapped->getElements();
83 3
        if($this->getMax()>0 || $this->getMax()===-1){
84 3
            foreach ($elements as $k => $element) {
85
                /**
86
                * @var Element|ElementRef|ElementSingle|GroupRef $e
87
                */
88 3
                $e = clone $element;
89 3
                $e->setMax($this->getMax());
90 3
                $elements[$k] = $e;
91 1
            }
92 1
        }
93 3
        return $elements;
94
    }
95
96
    public function addElement(ElementItem $element)
97
    {
98
        throw new BadMethodCallException("Can't add an element for a ref group");
99
    }
100
101
    /**
102
    * @return GroupRef
103
    */
104 135
    public static function loadGroupRef(Group $referenced, DOMElement $node)
105
    {
106 135
        $ref = new GroupRef($referenced);
107 135
        $ref->setDoc(SchemaReader::getDocumentation($node));
108
109 135
        SchemaReader::maybeSetMax($ref, $node);
110 135
        SchemaReader::maybeSetMin($ref, $node);
111
112 135
        return $ref;
113
    }
114
}
115