Skip to content

Commit

Permalink
Refactor Synchronizers to use an AbstractSchemaSynchronizer
Browse files Browse the repository at this point in the history
  • Loading branch information
beberlei committed Jun 26, 2012
1 parent 29b2623 commit 12f381f
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/

namespace Doctrine\DBAL\Schema\Synchronizer;

use Doctrine\DBAL\Connection;

/**
* Abstract schema synchronizer with methods for executing batches of SQL.
*/
abstract class AbstractSchemaSynchronizer implements SchemaSynchronizer
{
/**
* @var Connection
*/
protected $conn;

public function __construct(Connection $conn)
{
$this->conn = $conn;
}

protected function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {

}
}
}

protected function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,16 @@
*
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class SingleDatabaseSynchronizer implements SchemaSynchronizer
class SingleDatabaseSynchronizer extends AbstractSchemaSynchronizer
{
/**
* @var Doctrine\DBAL\Connection
*/
private $conn;

/**
* @var Doctrine\DBAL\Platforms\AbstractPlatform
*/
private $platform;

public function __construct(Connection $conn)
{
$this->conn = $conn;
parent::__construct($conn);
$this->platform = $conn->getDatabasePlatform();
}

Expand Down Expand Up @@ -198,23 +193,5 @@ public function dropAllSchema()
{
$this->processSql($this->getDropAllSchema());
}

private function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {

}
}
}

private function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Types\Type;

use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
use Doctrine\DBAL\Schema\Synchronizer\AbstractSchemaSynchronizer;
use Doctrine\DBAL\Sharding\SingleDatabaseSynchronizer;

/**
Expand All @@ -36,15 +36,11 @@
*
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class SQLAzureFederationsSynchronizer implements SchemaSynchronizer
class SQLAzureFederationsSynchronizer implements AbstractSchemaSynchronizer
{
const FEDERATION_TABLE_FEDERATED = 'azure.federated';
const FEDERATION_DISTRIBUTION_NAME = 'azure.federatedOnDistributionName';

/**
* @var Connection
*/
private $conn;

/**
* @var SQLAzureShardManager
Expand All @@ -58,7 +54,7 @@ class SQLAzureFederationsSynchronizer implements SchemaSynchronizer

public function __construct(Connection $conn, SQLAzureShardManager $shardManager, SchemaSynchronizer $sync = null)
{
$this->conn = $conn;
parent::__construct($conn);
$this->shardManager = $shardManager;
$this->synchronizer = $sync ?: new SingleDatabaseSynchronizer($conn);
}
Expand Down Expand Up @@ -230,24 +226,6 @@ private function extractSchemaFederation(Schema $schema, $isFederation)
return $partionedSchema;
}

private function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {

}
}
}

private function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}

/**
* Work on the Global/Federation based on currently existing shards and
* perform the given operation on the underyling schema synchronizer given
Expand Down

0 comments on commit 12f381f

Please sign in to comment.