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

SchemaReaderFillAbstraction   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 44
ccs 18
cts 18
cp 1
rs 10
c 1
b 0
f 0
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 45
    protected function fillTypeNode(Type $type, DOMElement $node, $checkAbstract = false)
17
    {
18 45
        if ($checkAbstract) {
19 45
            $type->setAbstract($node->getAttribute('abstract') === 'true' || $node->getAttribute('abstract') === '1');
20 45
        }
21
        static $methods = [
22
            'restriction' => 'loadRestriction',
23
            'extension' => 'maybeLoadExtensionFromBaseComplexType',
24
            'simpleContent' => 'fillTypeNode',
25
            'complexContent' => 'fillTypeNode',
26 45
        ];
27
28
        /**
29
         * @var string[]
30
         */
31 45
        $methods = $methods;
32
33 45
        $this->maybeCallMethodAgainstDOMNodeList($node, $type, $methods);
34 45
    }
35
36 45
    protected function fillItemNonLocalType(Item $element, DOMElement $node)
37
    {
38 45
        if ($node->getAttribute('type')) {
39
            /**
40
             * @var Type
41
             */
42 45
            $type = $this->findSomeType($element, $node, 'type');
43 45
        } else {
44
            /**
45
             * @var Type
46
             */
47 45
            $type = $this->findSomeTypeFromAttribute(
48 45
                $element,
49 45
                $node,
50 45
                ($node->lookupPrefix(self::XSD_NS).':anyType')
51 45
            );
52
        }
53
54 45
        $element->setType($type);
55 45
    }
56
}
57