PDepend\Report\Jdepend\Xml::visitNamespace PHP Method

visitNamespace() public method

Visits a package node.
public visitNamespace ( PDepend\Source\AST\ASTNamespace $namespace ) : void
$namespace PDepend\Source\AST\ASTNamespace
return void
    public function visitNamespace(ASTNamespace $namespace)
    {
        if (!$namespace->isUserDefined()) {
            return;
        }
        $stats = $this->analyzer->getStats($namespace);
        if (count($stats) === 0) {
            return;
        }
        $doc = $this->packages->ownerDocument;
        $this->concreteClasses = $doc->createElement('ConcreteClasses');
        $this->abstractClasses = $doc->createElement('AbstractClasses');
        $packageXml = $doc->createElement('Package');
        $packageXml->setAttribute('name', Utf8Util::ensureEncoding($namespace->getName()));
        $statsXml = $doc->createElement('Stats');
        $statsXml->appendChild($doc->createElement('TotalClasses'))->appendChild($doc->createTextNode($stats['tc']));
        $statsXml->appendChild($doc->createElement('ConcreteClasses'))->appendChild($doc->createTextNode($stats['cc']));
        $statsXml->appendChild($doc->createElement('AbstractClasses'))->appendChild($doc->createTextNode($stats['ac']));
        $statsXml->appendChild($doc->createElement('Ca'))->appendChild($doc->createTextNode($stats['ca']));
        $statsXml->appendChild($doc->createElement('Ce'))->appendChild($doc->createTextNode($stats['ce']));
        $statsXml->appendChild($doc->createElement('A'))->appendChild($doc->createTextNode($stats['a']));
        $statsXml->appendChild($doc->createElement('I'))->appendChild($doc->createTextNode($stats['i']));
        $statsXml->appendChild($doc->createElement('D'))->appendChild($doc->createTextNode($stats['d']));
        $dependsUpon = $doc->createElement('DependsUpon');
        foreach ($this->analyzer->getEfferents($namespace) as $efferent) {
            $efferentXml = $doc->createElement('Package');
            $efferentXml->appendChild($doc->createTextNode(Utf8Util::ensureEncoding($efferent->getName())));
            $dependsUpon->appendChild($efferentXml);
        }
        $usedBy = $doc->createElement('UsedBy');
        foreach ($this->analyzer->getAfferents($namespace) as $afferent) {
            $afferentXml = $doc->createElement('Package');
            $afferentXml->appendChild($doc->createTextNode(Utf8Util::ensureEncoding($afferent->getName())));
            $usedBy->appendChild($afferentXml);
        }
        $packageXml->appendChild($statsXml);
        $packageXml->appendChild($this->concreteClasses);
        $packageXml->appendChild($this->abstractClasses);
        $packageXml->appendChild($dependsUpon);
        $packageXml->appendChild($usedBy);
        if (($cycles = $this->analyzer->getCycle($namespace)) !== null) {
            $cycleXml = $doc->createElement('Package');
            $cycleXml->setAttribute('Name', Utf8Util::ensureEncoding($namespace->getName()));
            foreach ($cycles as $cycle) {
                $cycleXml->appendChild($doc->createElement('Package'))->appendChild($doc->createTextNode(Utf8Util::ensureEncoding($cycle->getName())));
            }
            $this->cycles->appendChild($cycleXml);
        }
        foreach ($namespace->getTypes() as $type) {
            $type->accept($this);
        }
        if ($this->concreteClasses->firstChild === null && $this->abstractClasses->firstChild === null) {
            return;
        }
        $this->packages->appendChild($packageXml);
    }