Passed
Pull Request — master (#18)
by SignpostMarv
03:22
created

SchemaReaderFillAbstraction   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 44
ccs 19
cts 19
cp 1
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A fillTypeNode() 0 18 3
A fillItemNonLocalType() 0 19 2
1
<?php
2
3
namespace GoetasWebservices\XML\XSDReader;
4
5
use DOMElement;
6
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Extension;
7
use GoetasWebservices\XML\XSDReader\Schema\Inheritance\Restriction;
8
use GoetasWebservices\XML\XSDReader\Schema\Item;
9
use GoetasWebservices\XML\XSDReader\Schema\Type\Type;
10
11
abstract class SchemaReaderFillAbstraction extends SchemaReaderFindAbstraction
12
{
13
    /**
14
     * @param bool $checkAbstract
15
     */
16 135
    protected function fillTypeNode(Type $type, DOMElement $node, $checkAbstract = false)
17
    {
18 135
        if ($checkAbstract) {
19 135
            $type->setAbstract($node->getAttribute('abstract') === 'true' || $node->getAttribute('abstract') === '1');
20 45
        }
21 90
        static $methods = [
22
            'restriction' => 'loadRestriction',
23
            'extension' => 'maybeLoadExtensionFromBaseComplexType',
24
            'simpleContent' => 'fillTypeNode',
25
            'complexContent' => 'fillTypeNode',
26 45
        ];
27
28
        /**
29
         * @var string[]
30
         */
31 135
        $methods = $methods;
32
33 135
        $this->maybeCallMethodAgainstDOMNodeList($node, $type, $methods);
34 135
    }
35
36 135
    protected function fillItemNonLocalType(Item $element, DOMElement $node)
37
    {
38 135
        if ($node->getAttribute('type')) {
39
            /**
40
             * @var Type
41
             */
42 135
            $type = $this->findSomeType($element, $node, 'type');
43 45
        } else {
44
            /**
45
             * @var Type
46
             */
47 135
            $type = $this->findSomeTypeFromAttribute(
48 135
                $element,
49 135
                $node,
50 135
                ($node->lookupPrefix(self::XSD_NS).':anyType')
51 45
            );
52
        }
53
54 135
        $element->setType($type);
55 135
    }
56
}
57