protected function getComputedTypeRepresentation($name, DBType $type) { if ($type->canHaveSize()) { return $this->computeSized($name, $type->isNullable(), $type->getSize()); } else { if ($type->canHavePrecision()) { return $this->computeDecimal($name, $type->isNullable(), $type->getPrecision(), $type->getScale()); } else { return $this->compute($name, $type->isNullable()); } } }
function getTypeRepresentation(DBType $dbType) { switch ($dbType->getValue()) { case DBType::BOOLEAN: return $this->compute('TINYINT(1) UNSIGNED', $dbType->isNullable()); case DBType::BINARY: $size = $dbType->getSize(); if ($size < 65535) { $customType = 'BLOB'; } else { if ($size < 16777215) { $customType = 'MEDIUMBLOB'; } else { $customType = 'LONGTBLOB'; } } return $this->compute($customType, $dbType->isNullable()); case DBType::VARCHAR: $size = $dbType->getSize(); if (!$size) { $dbType->setSize(255); } else { if ($size > 255) { if ($size < 65535) { $customType = 'TEXT'; } else { if ($size < 16777215) { $customType = 'MEDIUMTEXT'; } else { $customType = 'LONGTEXT'; } } return $this->compute($customType, $dbType->isNullable()); } } } $type = parent::getTypeRepresentation($dbType); if ($dbType->isGenerated()) { $type .= ' AUTO_INCREMENT'; } return $type; }
function getTypeRepresentation(DBType $dbType) { $type = $dbType->getId(); if ($size = $dbType->getSize()) { $type .= '(' . $size . ')'; } if ($precision = $dbType->getPrecision()) { $type .= '(' . $precision; if ($scale = $dbType->getScale()) { $type .= ',' . $scale; } $type .= ')'; } if (!$dbType->isNullable()) { $type .= ' NOT NULL'; } if ($dbType->isGenerated()) { $type .= ' GENERATED'; } return $type; }
static function getOrmPropertyType(AssociationMultiplicity $multiplicity) { $type = new DBType(DBType::VARCHAR, $multiplicity->isNullable(), null, null, null, false); return $type->getOrmPropertyType(); }
protected function getCtorArgumentsPhpCode() { return array('\'' . $this->boxableType . '\'', $this->dbType->toPhpCodeCall()); }
/** * Resolution order: * - IDaoRelated (check a class existance within the global scope and withing the domain scope) --> AssociationPropertyType * - IOrmRelated --> CompositionPropertyType * - IOrmPropertyAssignable --> IOrmPropertyAssignable::getOrmProperty() * - IBoxable --> BoxablePropertyType * - DBType * - any type with public ctor * @return OrmPropertyType */ private function getPropertyType(SimpleXMLElement $element, AssociationMultiplicity $multiplicity) { $name = (string) $element['type']; $parameters = $this->getTypeParameters($element); if ($class = $this->importEntity($name)) { // force recursion if ($class->hasDao() && $class->getIdentifier()) { return new AssociationPropertyType($class, $multiplicity, AssociationBreakAction::cascade()); } else { return new CompositePropertyType($class); } } else { if (DBType::hasMember($name)) { $parameters['id'] = $name; if (!isset($parameters['nullable'])) { $parameters['nullable'] = $multiplicity->isNullable() ? 'true' : 'false'; } $dbType = $this->makeObject('DBType', $parameters); return $dbType->getOrmPropertyType(); } else { if (@class_exists($name, true)) { if (TypeUtils::isInherits($name, 'IDaoRelated')) { return new AssociationPropertyType(call_user_func(array($name, 'orm')), $multiplicity, AssociationBreakAction::cascade()); } else { if (TypeUtils::isInherits($name, 'IOrmRelated')) { $orm = call_user_func(array($name, 'orm')); return new CompositePropertyType($orm); } else { if (TypeUtils::isInherits($name, 'IOrmPropertyAssignable')) { return call_user_func(array($name, 'getOrmPropertyType'), $multiplicity); } else { if (TypeUtils::isInherits($name, 'IBoxable')) { $parameters['id'] = DBType::VARCHAR; if (!isset($parameters['nullable'])) { $parameters['nullable'] = $multiplicity->isNullable() ? 'true' : 'false'; } return new BoxablePropertyType($name, $this->makeObject('DBType', $parameters)); } else { if (TypeUtils::isInherits($name, 'ISqlType')) { // for RawSqlType return new PrimitivePropertyType($this->makeObject($name, $parameters)); } else { if (TypeUtils::isInherits($name, 'OrmPropertyType')) { // OrmPropertyType with public ctor return $this->makeObject($name, $parameters); } } } } } } } } } throw new OrmModelIntegrityException('Unknown type of ' . (string) $element['name'] . ' property: ' . $name); }
/** * Resolution order: * - IDaoRelated (check a class existance within the global scope and withing the domain scope) --> AssociationPropertyType * - IOrmRelated --> CompositionPropertyType (not implemented) * - IOrmPropertyAssignable --> IOrmPropertyAssignable::getOrmProperty() * - IBoxable --> BoxablePropertyType * - DBType * - any type with public ctor * @return OrmPropertyType */ private function getPropertyType($name, AssociationMultiplicity $multiplicity, array $parameters = array()) { if ($this->ormDomain->classExists($name)) { $class = $this->ormDomain->getClass($name); if ($class->hasDao() && $class->getIdentifier()) { return new AssociationPropertyType($class, $multiplicity, AssociationBreakAction::cascade()); } else { return new CompositePropertyType($class); } } else { if (DBType::hasMember($name)) { $parameters['id'] = $name; if (!isset($parameters['nullable'])) { $parameters['nullable'] = $multiplicity->isNullable() ? 'true' : 'false'; } $dbType = $this->makeObject('DBType', $parameters); return $dbType->getOrmPropertyType(); } else { if (class_exists($name, true)) { if (TypeUtils::isChild($name, 'IDaoRelated')) { return new AssociationPropertyType(call_user_func(array($name, 'orm')), $multiplicity, AssociationBreakAction::cascade()); } else { if (TypeUtils::isChild($name, 'IOrmRelated')) { $orm = call_user_func(array($name, 'orm')); return new CompositePropertyType($orm); } else { if (TypeUtils::isChild($name, 'IOrmPropertyAssignable')) { return call_user_func(array($name, 'getOrmPropertyType'), $multiplicity); } else { if (TypeUtils::isChild($name, 'IBoxable')) { $parameters['id'] = DBType::VARCHAR; if (!isset($parameters['nullable'])) { $parameters['nullable'] = $multiplicity->isNullable() ? 'true' : 'false'; } return new BoxablePropertyType($name, $this->makeObject('DBType', $parameters)); } else { if (TypeUtils::isChild($name, 'ISqlType')) { // for RawSqlType return new PrimitivePropertyType($this->makeObject($name, $parameters)); } else { //$this->makeObject($name, $parameters); } } } } } } } } throw new OrmModelIntegrityException('do not know how to map ' . $name); }
protected function getCtorArgumentsPhpCode() { return array($this->type->toPhpCodeCall()); }