Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
81.48% |
44 / 54 |
CRAP | |
91.78% |
134 / 146 |
| Entity | |
0.00% |
0 / 1 |
|
81.48% |
44 / 54 |
93.40 | |
91.78% |
134 / 146 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
9 / 9 |
|||
| newConstructor | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| newServiceClass | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| newAttribute | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| newReference | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| newIndex | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| newCollection | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| newCollectionMany | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| newStoredProcedure | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| update | |
100.00% |
1 / 1 |
6 | |
100.00% |
11 / 11 |
|||
| getPrimaryKeyAttributeList | |
100.00% |
1 / 1 |
3 | |
100.00% |
5 / 5 |
|||
| hasPrimaryKey | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
|||
| getAttributeByDbName | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
|||
| getAttributeByName | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
|||
| getReferenceByName | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
|||
| getIndexByName | |
0.00% |
0 / 1 |
3.14 | |
75.00% |
3 / 4 |
|||
| getCollectionByName | |
0.00% |
0 / 1 |
3.14 | |
75.00% |
3 / 4 |
|||
| getCollectionManyByName | |
0.00% |
0 / 1 |
3.14 | |
75.00% |
3 / 4 |
|||
| getAttributeList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getReferenceList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getIndexList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getCollectionList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getCollectionManyList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getStoredProcedureList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getStoredProcedureByName | |
0.00% |
0 / 1 |
3.14 | |
75.00% |
3 / 4 |
|||
| getDatabaseSpecificAttributeList | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
| getCustomAttribute | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
| getClassName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getClassShortName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setClassShortName | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getServiceClassShortName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getTargetPath | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| setTargetPath | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| getNamespaceName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setNamespaceName | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getTableName | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| getDelimitTableName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setTableName | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getIsDelimit | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setIsDelimit | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getIsReplication | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setIsReplication | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getReplicationTableName | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getConstructor | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setConstructor | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getServiceClass | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| setServiceClass | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getInstantiationClassShortName | |
0.00% |
0 / 1 |
3.07 | |
80.00% |
4 / 5 |
|||
| getInstantiationClass | |
0.00% |
0 / 1 |
3.07 | |
80.00% |
4 / 5 |
|||
| getServiceAccess | |
100.00% |
1 / 1 |
3 | |
100.00% |
3 / 3 |
|||
| getServiceFactoryClass | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| getForeignCollectionManyList | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| addForeignCollectionManyList | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setXmlEntity | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| <?php | |
| declare(strict_types = 1); | |
| namespace Siesta\Model; | |
| /** | |
| * @author Gregor Müller | |
| */ | |
| use Siesta\GeneratorPlugin\ServiceClass\SingletonPlugin; | |
| use Siesta\NamingStrategy\NamingStrategyRegistry; | |
| use Siesta\XML\XMLEntity; | |
| class Entity | |
| { | |
| const SERVICE_CLASS_SUFFIX = "Service"; | |
| const DELIMIT_SUFFIX = "_delimit"; | |
| const REPLICATION_TABLE_SUFFIX = "_memory"; | |
| /** | |
| * @var DataModel | |
| */ | |
| protected $dataModel; | |
| /** | |
| * @var string | |
| */ | |
| protected $classShortName; | |
| /** | |
| * @var string | |
| */ | |
| protected $namespaceName; | |
| /** | |
| * @var string | |
| */ | |
| protected $targetPath; | |
| /** | |
| * @var string | |
| */ | |
| protected $tableName; | |
| /** | |
| * @var bool | |
| */ | |
| protected $isDelimit; | |
| /** | |
| * @var bool | |
| */ | |
| protected $isReplication; | |
| /** | |
| * @var Constructor | |
| */ | |
| protected $constructor; | |
| /** | |
| * @var ServiceClass | |
| */ | |
| protected $serviceClass; | |
| /** | |
| * @var Attribute[] | |
| */ | |
| protected $attributeList; | |
| /** | |
| * @var Reference[] | |
| */ | |
| protected $referenceList; | |
| /** | |
| * @var Index[] | |
| */ | |
| protected $indexList; | |
| /** | |
| * @var Collection[] | |
| */ | |
| protected $collectionList; | |
| /** | |
| * @var CollectionMany[] | |
| */ | |
| protected $collectionManyList; | |
| /** | |
| * @var StoredProcedure[] | |
| */ | |
| protected $storedProcedureList; | |
| /** | |
| * @var CollectionMany[] | |
| */ | |
| protected $foreignCollectionManyList; | |
| /** | |
| * @var XMLEntity | |
| */ | |
| protected $xmlEntity; | |
| /** | |
| * Entity constructor. | |
| * | |
| * @param DataModel $dataModel | |
| */ | |
| public function __construct(DataModel $dataModel) | |
| { | |
| $this->dataModel = $dataModel; | |
| $this->attributeList = []; | |
| $this->referenceList = []; | |
| $this->indexList = []; | |
| $this->collectionList = []; | |
| $this->collectionManyList = []; | |
| $this->foreignCollectionManyList = []; | |
| $this->storedProcedureList = []; | |
| } | |
| /** | |
| * @return Constructor | |
| */ | |
| public function newConstructor() : Constructor | |
| { | |
| $this->constructor = new Constructor(); | |
| return $this->constructor; | |
| } | |
| /** | |
| * @return ServiceClass | |
| */ | |
| public function newServiceClass() : ServiceClass | |
| { | |
| $this->serviceClass = new ServiceClass(); | |
| return $this->serviceClass; | |
| } | |
| /** | |
| * @return Attribute | |
| */ | |
| public function newAttribute() : Attribute | |
| { | |
| $attribute = new Attribute($this); | |
| $this->attributeList[] = $attribute; | |
| return $attribute; | |
| } | |
| /** | |
| * @return Reference | |
| */ | |
| public function newReference() : Reference | |
| { | |
| $reference = new Reference($this->dataModel, $this); | |
| $this->referenceList[] = $reference; | |
| return $reference; | |
| } | |
| /** | |
| * @return Index | |
| */ | |
| public function newIndex() : Index | |
| { | |
| $index = new Index($this); | |
| $this->indexList[] = $index; | |
| return $index; | |
| } | |
| /** | |
| * @return Collection | |
| */ | |
| public function newCollection() : Collection | |
| { | |
| $collection = new Collection($this->dataModel, $this); | |
| $this->collectionList[] = $collection; | |
| return $collection; | |
| } | |
| /** | |
| * @return CollectionMany | |
| */ | |
| public function newCollectionMany() : CollectionMany | |
| { | |
| $collectionMany = new CollectionMany($this->dataModel, $this); | |
| $this->collectionManyList[] = $collectionMany; | |
| return $collectionMany; | |
| } | |
| /** | |
| * @return StoredProcedure | |
| */ | |
| public function newStoredProcedure() : StoredProcedure | |
| { | |
| $storedProcedure = new StoredProcedure($this); | |
| $this->storedProcedureList[] = $storedProcedure; | |
| return $storedProcedure; | |
| } | |
| /** | |
| * | |
| */ | |
| public function update() | |
| { | |
| foreach ($this->attributeList as $attribute) { | |
| $attribute->update(); | |
| } | |
| foreach ($this->referenceList as $reference) { | |
| $reference->update(); | |
| } | |
| foreach ($this->indexList as $index) { | |
| $index->update(); | |
| } | |
| foreach ($this->collectionList as $collection) { | |
| $collection->update(); | |
| } | |
| foreach ($this->collectionManyList as $collectionMany) { | |
| $collectionMany->update(); | |
| } | |
| } | |
| /** | |
| * @return Attribute[] | |
| */ | |
| public function getPrimaryKeyAttributeList() : array | |
| { | |
| $primaryKeyAttributeList = []; | |
| foreach ($this->attributeList as $attribute) { | |
| if ($attribute->getIsPrimaryKey()) { | |
| $primaryKeyAttributeList[] = $attribute; | |
| } | |
| } | |
| return $primaryKeyAttributeList; | |
| } | |
| /** | |
| * @return bool | |
| */ | |
| public function hasPrimaryKey() : bool | |
| { | |
| foreach ($this->attributeList as $attribute) { | |
| if ($attribute->getIsPrimaryKey()) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| /** | |
| * @param string $dbName | |
| * | |
| * @return null|Attribute | |
| */ | |
| public function getAttributeByDbName(string $dbName) | |
| { | |
| foreach ($this->attributeList as $attribute) { | |
| if ($attribute->getDBName() === $dbName) { | |
| return $attribute; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|Attribute | |
| */ | |
| public function getAttributeByName(string $name) | |
| { | |
| foreach ($this->attributeList as $attribute) { | |
| if ($attribute->getPhpName() === $name) { | |
| return $attribute; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|Reference | |
| */ | |
| public function getReferenceByName(string $name = null) | |
| { | |
| foreach ($this->referenceList as $reference) { | |
| if ($reference->getName() === $name) { | |
| return $reference; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|Index | |
| */ | |
| public function getIndexByName(string $name) | |
| { | |
| foreach ($this->indexList as $index) { | |
| if ($index->getName() === $name) { | |
| return $index; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|Collection | |
| */ | |
| public function getCollectionByName(string $name) | |
| { | |
| foreach ($this->collectionList as $collection) { | |
| if ($collection->getName() === $name) { | |
| return $collection; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|CollectionMany | |
| */ | |
| public function getCollectionManyByName(string $name) | |
| { | |
| foreach ($this->collectionManyList as $collectionMany) { | |
| if ($collectionMany->getName() === $name) { | |
| return $collectionMany; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @return Attribute[] | |
| */ | |
| public function getAttributeList() : array | |
| { | |
| return $this->attributeList; | |
| } | |
| /** | |
| * @return Reference[] | |
| */ | |
| public function getReferenceList() : array | |
| { | |
| return $this->referenceList; | |
| } | |
| /** | |
| * @return Index[] | |
| */ | |
| public function getIndexList() : array | |
| { | |
| return $this->indexList; | |
| } | |
| /** | |
| * @return Collection[] | |
| */ | |
| public function getCollectionList() : array | |
| { | |
| return $this->collectionList; | |
| } | |
| /** | |
| * @return CollectionMany[] | |
| */ | |
| public function getCollectionManyList() : array | |
| { | |
| return $this->collectionManyList; | |
| } | |
| /** | |
| * @return StoredProcedure[] | |
| */ | |
| public function getStoredProcedureList() : array | |
| { | |
| return $this->storedProcedureList; | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|StoredProcedure | |
| */ | |
| public function getStoredProcedureByName(string $name) | |
| { | |
| foreach ($this->storedProcedureList as $storedProcedure) { | |
| if ($storedProcedure->getName() === $name) { | |
| return $storedProcedure; | |
| } | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string $databaseName | |
| * | |
| * @return array | |
| */ | |
| public function getDatabaseSpecificAttributeList(string $databaseName) | |
| { | |
| if ($this->xmlEntity === null) { | |
| return []; | |
| } | |
| return $this->xmlEntity->getDatabaseSpecificAttributeList($databaseName); | |
| } | |
| /** | |
| * @param string $name | |
| * | |
| * @return null|string | |
| */ | |
| public function getCustomAttribute(string $name) | |
| { | |
| if ($this->xmlEntity === null) { | |
| return null; | |
| } | |
| return $this->xmlEntity->getCustomAttribute($name); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getClassName() | |
| { | |
| return $this->getNamespaceName() . "\\" . $this->getClassShortName(); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getClassShortName() | |
| { | |
| return $this->classShortName; | |
| } | |
| /** | |
| * @param string $classShortName | |
| */ | |
| public function setClassShortName($classShortName) | |
| { | |
| $this->classShortName = $classShortName; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getServiceClassShortName() | |
| { | |
| return $this->getClassShortName() . self::SERVICE_CLASS_SUFFIX; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getTargetPath() : string | |
| { | |
| if ($this->targetPath !== null) { | |
| return $this->targetPath; | |
| } | |
| return str_replace("\\", DIRECTORY_SEPARATOR, $this->getNamespaceName()); | |
| } | |
| /** | |
| * @param string $targetPath | |
| */ | |
| public function setTargetPath(string $targetPath = null) | |
| { | |
| if ($targetPath !== null) { | |
| $this->targetPath = trim($targetPath, DIRECTORY_SEPARATOR); | |
| } | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getNamespaceName() | |
| { | |
| return $this->namespaceName; | |
| } | |
| /** | |
| * @param string $namespaceName | |
| */ | |
| public function setNamespaceName($namespaceName) | |
| { | |
| $this->namespaceName = trim($namespaceName, "\\"); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getTableName() | |
| { | |
| if ($this->tableName !== null) { | |
| return $this->tableName; | |
| } | |
| $strategy = NamingStrategyRegistry::getTableNamingStrategy(); | |
| return $strategy->transform($this->getClassShortName()); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getDelimitTableName() | |
| { | |
| return $this->getTableName() . self::DELIMIT_SUFFIX; | |
| } | |
| /** | |
| * @param string $tableName | |
| */ | |
| public function setTableName($tableName) | |
| { | |
| $this->tableName = $tableName; | |
| } | |
| /** | |
| * @return boolean | |
| */ | |
| public function getIsDelimit() | |
| { | |
| return $this->isDelimit; | |
| } | |
| /** | |
| * @param boolean $isDelimit | |
| */ | |
| public function setIsDelimit($isDelimit) | |
| { | |
| $this->isDelimit = $isDelimit; | |
| } | |
| /** | |
| * @return boolean | |
| */ | |
| public function getIsReplication() : bool | |
| { | |
| return $this->isReplication; | |
| } | |
| /** | |
| * @param boolean $isReplication | |
| */ | |
| public function setIsReplication(bool $isReplication) | |
| { | |
| $this->isReplication = $isReplication; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getReplicationTableName() : string | |
| { | |
| return $this->getTableName() . self::REPLICATION_TABLE_SUFFIX; | |
| } | |
| /** | |
| * @return Constructor | |
| */ | |
| public function getConstructor() | |
| { | |
| return $this->constructor; | |
| } | |
| /** | |
| * @param Constructor $constructor | |
| */ | |
| public function setConstructor($constructor) | |
| { | |
| $this->constructor = $constructor; | |
| } | |
| /** | |
| * @return ServiceClass | |
| */ | |
| public function getServiceClass() | |
| { | |
| return $this->serviceClass; | |
| } | |
| /** | |
| * @param ServiceClass $serviceClass | |
| */ | |
| public function setServiceClass($serviceClass) | |
| { | |
| $this->serviceClass = $serviceClass; | |
| } | |
| /** | |
| * @return null|string | |
| */ | |
| public function getInstantiationClassShortName() | |
| { | |
| if ($this->constructor === null) { | |
| return $this->getClassShortName(); | |
| } | |
| if ($this->constructor->getClassShortName() !== null) { | |
| return $this->constructor->getClassShortName(); | |
| } | |
| return $this->getClassShortName(); | |
| } | |
| public function getInstantiationClass() | |
| { | |
| if ($this->constructor === null) { | |
| return $this->getClassName(); | |
| } | |
| if ($this->constructor->getClassShortName() !== null) { | |
| return $this->constructor->getClassName(); | |
| } | |
| return $this->getClassName(); | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getServiceAccess() : string | |
| { | |
| if ($this->serviceClass !== null && $this->serviceClass->getConstructCall() !== null) { | |
| return $this->serviceClass->getConstructCall(); | |
| } | |
| return $this->getServiceClassShortName() . '::' . SingletonPlugin::METHOD_SINGLETON . '()'; | |
| } | |
| /** | |
| * @return null|string | |
| */ | |
| public function getServiceFactoryClass() | |
| { | |
| if ($this->serviceClass !== null) { | |
| return $this->serviceClass->getConstructFactoryClassName(); | |
| } | |
| return null; | |
| } | |
| /** | |
| * @return CollectionMany[] | |
| */ | |
| public function getForeignCollectionManyList(): array | |
| { | |
| return $this->foreignCollectionManyList; | |
| } | |
| /** | |
| * @param CollectionMany $collectionMany | |
| */ | |
| public function addForeignCollectionManyList(CollectionMany $collectionMany) | |
| { | |
| $this->foreignCollectionManyList[] = $collectionMany; | |
| } | |
| /** | |
| * @param XMLEntity $xmlEntity | |
| */ | |
| public function setXmlEntity(XMLEntity $xmlEntity) | |
| { | |
| $this->xmlEntity = $xmlEntity; | |
| } | |
| } |