예제 #1
0
 private function addRootType(PHP_UML_Metamodel_NamedElement $type, $desc)
 {
     if (!PHP_UML_Metamodel_Helper::searchTypeIntoPackage($this->packages, $type->name)) {
         $this->packages->ownedType[] = $type;
         $this->addDocTags($type, $desc);
     }
 }
예제 #2
0
 /**
  * Sets the nesting package of a type
  *
  * @param PHP_UML_Metamodel_Classifier &$c         A classifier
  * @param PHP_UML_Metamodel_Package    $nestingPkg The enclosing package
  */
 private function setNestingPackageOfType(PHP_UML_Metamodel_Classifier &$c, PHP_UML_Metamodel_Package $nestingPkg)
 {
     $c->package = $nestingPkg;
     if (PHP_UML_Metamodel_Helper::searchTypeIntoPackage($c->package, $c->name) === false) {
         $nestingPkg->ownedType[] =& $c;
         $this->file->manifested[] =& $c;
     } else {
         PHP_UML_Warning::add('Class ' . $c->name . ' already defined, in ' . $this->file->name);
     }
 }
예제 #3
0
 /**
  * Does the type resolution for a given element in a given package
  *
  * @param PHP_UML_Metamodel_Package $pkg      The nesting package
  * @param string                    &$element The element to resolve, provided as a name
  * @param PHP_UML_Metamodel_Type    $context  The context (the nesting class/interface, which 
  *                                            is the only element to know the nesting file)
  */
 private function resolveType(PHP_UML_Metamodel_Package $pkg, &$element, PHP_UML_Metamodel_NamedElement $context)
 {
     if (empty($element)) {
         $targetElement = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($this->topPackage, 'mixed');
     } else {
         $targetElement = PHP_UML_Metamodel_Helper::findTypeById($this->topPackage, $element);
     }
     if ($targetElement === false) {
         $targetElement = $this->resolveTypeByUri($element);
     }
     if ($targetElement === false) {
         self::resolutionWarning($element, $context);
     } else {
         $element = $targetElement;
     }
 }
예제 #4
0
 /**
  * Does the type resolution for a given element in a given package
  *
  * @param PHP_UML_Metamodel_Package $pkg      The nesting package
  * @param string                    &$element The element to resolve, provided as a name
  * @param PHP_UML_Metamodel_Type    $context  The context (the nesting class/interface, which 
  *                                            is the only element to know the nesting file)
  */
 private function resolveType(PHP_UML_Metamodel_Package $pkg, &$element, PHP_UML_Metamodel_NamedElement $context)
 {
     // Is there a ns separator (\) in it ?
     list($pos, $first, $last) = PHP_UML_Metamodel_Helper::getPackagePathParts($element, false);
     if (!($pos === false)) {
         $tmpPkg = $this->getPackageByPath($first);
         if ($tmpPkg === false) {
             self::resolutionWarning($element, $context);
             $element = null;
         } else {
             // Do we know that type?
             $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($tmpPkg, $last);
             if (!($_o === false)) {
                 $element = $_o;
             } else {
                 self::resolutionWarning($element, $context);
                 //$element = null;
             }
         }
     } else {
         // Is it in the current package?
         $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($pkg, $element);
         if (!($_o === false)) {
             $element = $_o;
         } else {
             // Is it in one of the "default" packages?
             $found = false;
             foreach ($this->defaultRepo as $itemPkg) {
                 $_o = PHP_UML_Metamodel_Helper::searchTypeIntoPackage($itemPkg, $element);
                 if (!($_o === false)) {
                     $element = $_o;
                     $found = true;
                     break;
                 }
             }
             if (!$found) {
                 self::resolutionWarning($element, $context);
                 //$element = null;
             }
         }
     }
 }