/** * @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); }
/** * * @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; } } }