Exemple #1
0
 /**
  * @param \EBT\ExtensionBuilder\Domain\Model\DomainObject\AbstractProperty $domainProperty
  * @return void
  */
 protected function addClassProperty($domainProperty)
 {
     // TODO the following part still needs some enhancement:
     // what should be obligatory in existing properties and methods
     $propertyName = $domainProperty->getName();
     // add the property to class Object (or update an existing class Object property)
     if ($this->classObject->propertyExists($propertyName)) {
         $classProperty = $this->classObject->getProperty($propertyName);
         if ($this->settings['setDefaultValuesForClassProperties'] !== false) {
             $classProperty->setDefault($domainProperty->getDefaultValue());
         }
     } else {
         $classProperty = clone $this->templateClassObject->getProperty('property');
         $classProperty->setName($propertyName);
         $classProperty->setTag('var', $domainProperty->getTypeForComment());
         if ($domainProperty->getDescription()) {
             $classProperty->setDescription($domainProperty->getDescription());
         } else {
             $classProperty->setDescription(str_replace('property', $propertyName, $classProperty->getDescription()));
         }
         if ($domainProperty->getHasDefaultValue() && $this->settings['setDefaultValuesForClassProperties'] !== false) {
             $classProperty->setDefault($domainProperty->getDefaultValue());
         }
         if ($domainProperty->isZeroToManyRelation()) {
             $classProperty->setTag('cascade', 'remove');
         }
     }
     if ($domainProperty->getRequired()) {
         if (!$classProperty->isTaggedWith('validate')) {
             $validateTag = explode(' ', trim($domainProperty->getValidateAnnotation()));
             $classProperty->setTag('validate', $validateTag[1]);
         }
     }
     if ($domainProperty->isRelation()) {
         /** @var $domainProperty \EBT\ExtensionBuilder\Domain\Model\DomainObject\Relation\AbstractRelation */
         if ($domainProperty->getLazyLoading()) {
             if (!$classProperty->isTaggedWith('lazy')) {
                 $classProperty->setTag('lazy', '');
             }
         }
     }
     $this->classObject->setProperty($classProperty);
 }
Exemple #2
0
 /**
  *
  * @param \EBT\ExtensionBuilder\Domain\Model\DomainObject\AbstractProperty $oldProperty
  * @param \EBT\ExtensionBuilder\Domain\Model\DomainObject\AbstractProperty $newProperty
  *
  * @return bool
  */
 protected function relatedMethodsNeedUpdate($oldProperty, $newProperty)
 {
     if ($this->extensionRenamed) {
         return true;
     }
     if ($newProperty->getName() != $oldProperty->getName()) {
         $this->log('property renamed:' . $oldProperty->getName() . ' ' . $newProperty->getName());
         return true;
     }
     if ($newProperty->getTypeForComment() != $this->updateExtensionKey($oldProperty->getTypeForComment())) {
         $this->log('property type changed from ' . $this->updateExtensionKey($oldProperty->getTypeForComment()) . ' to ' . $newProperty->getTypeForComment());
         return true;
     }
     if ($newProperty->isRelation()) {
         /** @var $oldProperty \EBT\ExtensionBuilder\Domain\Model\DomainObject\Relation\AbstractRelation */
         // if only the related domain object was renamed
         $previousClassName = $this->updateExtensionKey($oldProperty->getForeignClassName());
         if ($this->getForeignClassName($newProperty) != $previousClassName) {
             $this->log('related domainObject was renamed:' . $previousClassName . ' ->' . $this->getForeignClassName($newProperty));
             return true;
         }
     }
 }