Commit 60b9fb7c authored by romanb's avatar romanb

[2.0] Some small cleanups.

parent eff87be5
......@@ -4,6 +4,16 @@
# Upgrade from 2.0-ALPHA3 to 2.0-ALPHA4
## CLI Controller changes
CLI main object changed its name and namespace. Renamed from Doctrine\ORM\Tools\Cli to Doctrine\ORM\Tools\Cli\CliController.
Doctrine\ORM\Tools\Cli\CliController methods addTasks and addTask are now fluent.
## CLI Tasks documentation
Tasks have implemented a new way to build documentation. Although it is still possible to define the help manually by extending the basicHelp and extendedHelp, they are now optional.
With new required method AbstractTask::buildDocumentation, its implementation defines the TaskDocumentation instance (accessible through AbstractTask::getDocumentation()), basicHelp and extendedHelp are now not necessary to be implemented.
## Changes in Method Signatures
* A bunch of Methods on both Doctrine\DBAL\Platforms\AbstractPlatform and Doctrine\DBAL\Schema\AbstractSchemaManager
......@@ -14,14 +24,17 @@
* Doctrine\ORM\AbstractQuery::setExpireResultCache() -> expireResultCache()
* Doctrine\ORM\Query::setExpireQueryCache() -> expireQueryCache()
## WARNING: Change in SchemaTool behaviour
## SchemaTool Changes
* "doctrine schema-tool --drop" now always drops the complete database instead of
only those tables defined by the current database model. The previous method had
problems when foreign keys of orphaned tables pointed to tables that were schedulded
for deletion.
* Use "doctrine schema-tool --update" to get a save incremental update for your
database schema without deleting any unused tables, sequences or foreign keys.
* Use "doctrine schema-tool --complete-update" to do a full incremental update of
your schema.
* "doctrine schema-tool --drop" now always drops the complete database instead of only those tables defined by the
current database model. The previous method had problems when foreign keys of orphaned tables pointed to
tables that were schedulded for deletion.
* Use "doctrine schema-tool --update" to get a save incremental update for your database schema without
deleting any unused tables, sequences or foreign keys.
* Use "doctrine schema-tool --complete-update" to do a full incremental update of your schema.
# Upgrade from 2.0-ALPHA2 to 2.0-ALPHA3
......@@ -59,14 +72,3 @@ The new behavior is as if the option were set to FALSE all the time, basically d
* Doctrine\ORM\Configuration#getCacheDir() to getProxyDir()
* Doctrine\ORM\Configuration#setCacheDir($dir) to setProxyDir($dir)
# Upgrade from 2.0-ALPHA3 to 2.0-ALPHA4
## CLI Controller changes
CLI main object changed its name and namespace. Renamed from Doctrine\ORM\Tools\Cli to Doctrine\ORM\Tools\Cli\CliController.
Doctrine\ORM\Tools\Cli\CliController methods addTasks and addTask are now fluent.
## CLI Tasks documentation
Tasks have implemented a new way to build documentation. Although it is still possible to define the help manually by extending the basicHelp and extendedHelp, they are now optional.
With new required method AbstractTask::buildDocumentation, its implementation defines the TaskDocumentation instance (accessible through AbstractTask::getDocumentation()), basicHelp and extendedHelp are now not necessary to be implemented.
......@@ -2,7 +2,7 @@
require 'Doctrine/Common/ClassLoader.php';
$classLoader = new \Doctrine\Common\ClassLoader();
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine');
$classLoader->register();
$cli = new \Doctrine\ORM\Tools\Cli\CliController();
......
......@@ -394,4 +394,5 @@ abstract class AssociationMapping
$platform->quoteIdentifier($this->joinTable['name']) :
$this->joinTable['name'];
}
}
......@@ -41,7 +41,7 @@ use Doctrine\Common\DoctrineException;
* @author Jonathan H. Wage <jonwage@gmail.com>
* @since 2.0
*/
final class ClassMetadata extends ClassMetadataInfo
class ClassMetadata extends ClassMetadataInfo
{
/**
* The ReflectionClass instance of the mapped class.
......@@ -319,32 +319,31 @@ final class ClassMetadata extends ClassMetadataInfo
public function __sleep()
{
return array(
'associationMappings',
'associationMappings', // unserialization bottleneck with many assocs
'changeTrackingPolicy',
'columnNames',
'columnNames', //TODO: Not really needed. Can use fieldMappings[$fieldName]['columnName']
'customRepositoryClassName',
'discriminatorColumn',
'discriminatorValue',
'discriminatorMap',
'fieldMappings',
'fieldNames',
'fieldNames', //TODO: Not all of this stuff needs to be serialized. Only type, columnName and fieldName.
'generatorType',
'identifier',
'idGenerator',
'idGenerator', //TODO: Does not really need to be serialized. Could be moved to runtime.
'inheritanceType',
'inheritedAssociationFields',
//'insertSql',
'inverseMappings', //TODO: Remove!
'isIdentifierComposite',
'isMappedSuperclass',
'isVersioned',
'lifecycleCallbacks',
'name',
'namespace',
//'namespace',
'parentClasses',
'primaryTable',
'rootEntityName',
'sequenceGeneratorDefinition',
//'sequenceGeneratorDefinition',
'subClasses',
'versionField'
);
......
......@@ -124,6 +124,7 @@ class ClassMetadataInfo
* The namespace the entity class is contained in.
*
* @var string
* @todo Not really needed. Usage could be localized.
*/
public $namespace;
......@@ -229,12 +230,8 @@ class ClassMetadataInfo
* - <b>scale</b> (integer, optional, schema-only)
* The scale of a decimal column. Only valid if the column type is decimal.
*
* - <b>index (string, optional, schema-only)</b>
* Whether an index should be generated for the column.
* The value specifies the name of the index. To create a multi-column index,
* just use the same name for several mappings.
*
* - <b>foreignKey (string, optional, schema-only)</b>
* - <b>unique (string, optional, schema-only)</b>
* Whether a unique constraint should be generated for the column.
*
* @var array
*/
......@@ -255,6 +252,7 @@ class ClassMetadataInfo
* This is the reverse lookup map of $_fieldNames.
*
* @var array
* @todo We could get rid of this array by just using $fieldMappings[$fieldName]['columnName'].
*/
public $columnNames = array();
......@@ -369,13 +367,6 @@ class ClassMetadataInfo
*/
public $changeTrackingPolicy = self::CHANGETRACKING_DEFERRED_IMPLICIT;
/**
* The SQL INSERT string for entities of this class.
*
* @var string
*/
//public $insertSql;
/**
* A map of field names to class names, where the field names are association
* fields that have been inherited from another class and values are the names
......
......@@ -26,13 +26,6 @@ use Doctrine\Common\DoctrineException,
Doctrine\Common\Cli\OptionGroup,
Doctrine\ORM\Tools\Export\ClassMetadataExporter;
if ( ! class_exists('sfYaml', false)) {
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYaml.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlDumper.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlInline.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlParser.class.php';
}
/**
* CLI Task to convert your mapping information between the various formats
*
......@@ -166,6 +159,13 @@ class ConvertMappingTask extends AbstractTask
private function _isDoctrine1Schema(array $from)
{
if ( ! class_exists('sfYaml', false)) {
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYaml.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlDumper.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlInline.class.php';
require_once __DIR__ . '/../../../../../vendor/sfYaml/sfYamlParser.class.php';
}
$files = glob(current($from) . '/*.yml');
if ($files) {
$array = \sfYaml::load($files[0]);
......
......@@ -235,7 +235,6 @@ class UnitOfWork implements PropertyChangedListener
{
$this->_em = $em;
$this->_evm = $em->getEventManager();
$this->_commitOrderCalculator = new Internal\CommitOrderCalculator();
$this->_useCExtension = $this->_em->getConfiguration()->getUseCExtension();
}
......@@ -818,14 +817,16 @@ class UnitOfWork implements PropertyChangedListener
);
}
$calc = $this->getCommitOrderCalculator();
// See if there are any new classes in the changeset, that are not in the
// commit order graph yet (dont have a node).
$newNodes = array();
foreach ($entityChangeSet as $oid => $entity) {
$className = get_class($entity);
if ( ! $this->_commitOrderCalculator->hasClass($className)) {
if ( ! $calc->hasClass($className)) {
$class = $this->_em->getClassMetadata($className);
$this->_commitOrderCalculator->addClass($class);
$calc->addClass($class);
$newNodes[] = $class;
}
}
......@@ -835,15 +836,15 @@ class UnitOfWork implements PropertyChangedListener
foreach ($class->associationMappings as $assoc) {
if ($assoc->isOwningSide && $assoc->isOneToOne()) {
$targetClass = $this->_em->getClassMetadata($assoc->targetEntityName);
if ( ! $this->_commitOrderCalculator->hasClass($targetClass->name)) {
$this->_commitOrderCalculator->addClass($targetClass);
if ( ! $calc->hasClass($targetClass->name)) {
$calc->addClass($targetClass);
}
$this->_commitOrderCalculator->addDependency($targetClass, $class);
$calc->addDependency($targetClass, $class);
}
}
}
return $this->_commitOrderCalculator->getCommitOrder();
return $calc->getCommitOrder();
}
/**
......@@ -1637,6 +1638,9 @@ class UnitOfWork implements PropertyChangedListener
*/
public function getCommitOrderCalculator()
{
if ($this->_commitOrderCalculator === null) {
$this->_commitOrderCalculator = new Internal\CommitOrderCalculator;
}
return $this->_commitOrderCalculator;
}
......@@ -1658,7 +1662,9 @@ class UnitOfWork implements PropertyChangedListener
$this->_collectionUpdates =
$this->_extraUpdates =
$this->_orphanRemovals = array();
$this->_commitOrderCalculator->clear();
if ($this->_commitOrderCalculator !== null) {
$this->_commitOrderCalculator->clear();
}
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment