Beispiel #1
0
 /**
  * Retrieve the PHP_UML_Metamodel_Package object related to a package path
  * (ie, to a qualified name, like A\B\C). 
  * Relies on the model->$packages, when references are still named
  * (= before their resolution)
  * 
  * @param string $path The path to find
  * 
  * @return PHP_UML_Metamodel_Package The package to find. Null if not found.
  */
 protected function getPackageByPath($path)
 {
     $pkg = $this->topPackage;
     do {
         list($pos, $first, $path) = PHP_UML_Metamodel_Helper::getPackagePathParts($path);
         if ($first != '') {
             $pkg = PHP_UML_Metamodel_Helper::findSubpackageByName($pkg, $first);
         }
         if ($pkg === false) {
             return false;
         }
     } while (!($pos === false));
     return $pkg;
 }
Beispiel #2
0
 /**
  * Adds a deployment package to the metamodel
  *
  * @param string                    $name       Name of the package to create
  * @param PHP_UML_Metamodel_Package $nestingPkg Enclosing package
  *
  * @return PHP_UML_Metamodel_Package The package created (or the existing one)
  */
 private function addDeploymentPackage($name, PHP_UML_Metamodel_Package $nestingPkg = null)
 {
     if ($name == '') {
         return $this->structure->deploymentPackages;
     }
     if (is_null($nestingPkg)) {
         // root package (global namespace)
         $nestingPkg = $this->structure->deploymentPackages;
     }
     list($pos, $name, $following) = PHP_UML_Metamodel_Helper::getPackagePathParts($name, true, '/');
     // let's check if it does not already exist:
     $p = PHP_UML_Metamodel_Helper::findSubpackageByName($nestingPkg, $name);
     // ok, pkg does not exist, let's add it:
     if ($p === false) {
         $p = new PHP_UML_Metamodel_Package();
         $p->id = self::getUID();
         $p->name = $name;
         $p->nestingPackage = $nestingPkg;
         $p->nestedPackage = array();
         $nestingPkg->nestedPackage[] = $p;
     }
     if (!($pos === false)) {
         $p = $this->addDeploymentPackage($following, $p);
     }
     return $p;
 }