*/
public static function getDbStructure( $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
self::connectDoctrine();
- return OC_DB_Schema::getDbStructure(self::$DOCTRINE, $file);
+ $schema = new \OC\DB\Schema(self::$connection);
+ return $schema->getDbStructure($file);
}
/**
*/
public static function createDbFromStructure( $file ) {
self::connectDoctrine();
- return OC_DB_Schema::createDbFromStructure(self::$DOCTRINE, $file);
+ $schema = new \OC\DB\Schema(self::$connection);
+ $result = $schema->createDbFromStructure($file);
+ return $result;
}
/**
*/
public static function updateDbFromStructure($file) {
self::connectDoctrine();
+ $schema = new \OC\DB\Schema(self::$connection);
try {
- $result = OC_DB_Schema::updateDbFromStructure(self::$DOCTRINE, $file);
+ $result = $schema->updateDbFromStructure($file);
} catch (Exception $e) {
OC_Log::write('core', 'Failed to update database structure ('.$e.')', OC_Log::FATAL);
throw $e;
*/
public static function dropTable($tableName) {
self::connectDoctrine();
- OC_DB_Schema::dropTable(self::$DOCTRINE, $tableName);
+ $schema = new \OC\DB\Schema(self::$connection);
+ $schema->dropTable($tableName);
}
/**
*/
public static function removeDBStructure($file) {
self::connectDoctrine();
- OC_DB_Schema::removeDBStructure(self::$DOCTRINE, $file);
+ $schema = new \OC\DB\Schema(self::$connection);
+ $schema->removeDBStructure($file);
}
/**
*/
public static function replaceDB( $file ) {
self::connectDoctrine();
- OC_DB_Schema::replaceDB(self::$DOCTRINE, $file);
+ $schema = new \OC\DB\Schema(self::$connection);
+ $schema->replaceDB($file);
}
/**
* See the COPYING-README file.
*/
-class OC_DB_Schema {
+namespace OC\DB;
+
+class Schema {
+ /**
+ * @var \Doctrine\DBAL\Connection $conn
+ */
+ protected $conn;
+
+ public function __construct(Connection $conn) {
+ $this->conn = $conn;
+ }
+
/**
* @brief saves database scheme to xml file
- * @param \Doctrine\DBAL\Connection $conn
* @param string $file name of file
* @param int|string $mode
* @return bool
*
* TODO: write more documentation
*/
- public static function getDbStructure( $conn, $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
- $sm = $conn->getSchemaManager();
+ public function getDbStructure( $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
+ $sm = $this->conn->getSchemaManager();
- return OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
+ return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
}
/**
* @brief Creates tables from XML file
- * @param \Doctrine\DBAL\Connection $conn
* @param string $file file to read structure from
* @return bool
*
* TODO: write more documentation
*/
- public static function createDbFromStructure( $conn, $file ) {
- $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform());
+ public function createDbFromStructure( $file ) {
+ $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
$toSchema = $schemaReader->loadSchemaFromFile($file);
- return self::executeSchemaChange($conn, $toSchema);
+ return $this->executeSchemaChange($toSchema);
}
/**
* @brief update the database scheme
- * @param \Doctrine\DBAL\Connection $conn
* @param string $file file to read structure from
* @return bool
*/
- public static function updateDbFromStructure($conn, $file) {
- $sm = $conn->getSchemaManager();
+ public function updateDbFromStructure($file) {
+ $sm = $this->conn->getSchemaManager();
$fromSchema = $sm->createSchema();
- $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform());
+ $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
$toSchema = $schemaReader->loadSchemaFromFile($file);
// remove tables we don't know about
$comparator = new \Doctrine\DBAL\Schema\Comparator();
$schemaDiff = $comparator->compare($fromSchema, $toSchema);
- $platform = $conn->getDatabasePlatform();
+ $platform = $this->conn->getDatabasePlatform();
$tables = $schemaDiff->newTables + $schemaDiff->changedTables + $schemaDiff->removedTables;
foreach($tables as $tableDiff) {
$tableDiff->name = $platform->quoteIdentifier($tableDiff->name);
}
-
- //$from = $fromSchema->toSql($conn->getDatabasePlatform());
- //$to = $toSchema->toSql($conn->getDatabasePlatform());
- //echo($from[9]);
- //echo '<br>';
- //echo($to[9]);
- //var_dump($from, $to);
- return self::executeSchemaChange($conn, $schemaDiff);
+ return $this->executeSchemaChange($schemaDiff);
}
/**
* @brief drop a table
- * @param \Doctrine\DBAL\Connection $conn
* @param string $tableName the table to drop
*/
- public static function dropTable($conn, $tableName) {
- $sm = $conn->getSchemaManager();
+ public function dropTable($tableName) {
+ $sm = $this->conn->getSchemaManager();
$fromSchema = $sm->createSchema();
$toSchema = clone $fromSchema;
$toSchema->dropTable($tableName);
- $sql = $fromSchema->getMigrateToSql($toSchema, $conn->getDatabasePlatform());
- $conn->execute($sql);
+ $sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform());
+ $this->conn->execute($sql);
}
/**
* remove all tables defined in a database structure xml file
- * @param \Doctrine\DBAL\Connection $conn
* @param string $file the xml file describing the tables
*/
- public static function removeDBStructure($conn, $file) {
- $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform());
+ public function removeDBStructure($file) {
+ $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
$fromSchema = $schemaReader->loadSchemaFromFile($file);
$toSchema = clone $fromSchema;
foreach($toSchema->getTables() as $table) {
}
$comparator = new \Doctrine\DBAL\Schema\Comparator();
$schemaDiff = $comparator->compare($fromSchema, $toSchema);
- self::executeSchemaChange($conn, $schemaDiff);
+ $this->executeSchemaChange($schemaDiff);
}
/**
* @brief replaces the ownCloud tables with a new set
- * @param \Doctrine\DBAL\Connection $conn
* @param $file string path to the MDB2 xml db export file
*/
- public static function replaceDB( $conn, $file ) {
- $apps = OC_App::getAllApps();
- self::beginTransaction();
+ public function replaceDB( $file ) {
+ $apps = \OC_App::getAllApps();
+ $this->conn->beginTransaction();
// Delete the old tables
- self::removeDBStructure( $conn, OC::$SERVERROOT . '/db_structure.xml' );
+ $this->removeDBStructure( OC::$SERVERROOT . '/db_structure.xml' );
foreach($apps as $app) {
- $path = OC_App::getAppPath($app).'/appinfo/database.xml';
+ $path = \OC_App::getAppPath($app).'/appinfo/database.xml';
if(file_exists($path)) {
- self::removeDBStructure( $conn, $path );
+ $this->removeDBStructure( $path );
}
}
// Create new tables
- self::commit();
+ $this->conn->commit();
}
/**
- * @param \Doctrine\DBAL\Connection $conn
* @param \Doctrine\DBAL\Schema\Schema $schema
* @return bool
*/
- private static function executeSchemaChange($conn, $schema) {
- $conn->beginTransaction();
- foreach($schema->toSql($conn->getDatabasePlatform()) as $sql) {
- $conn->query($sql);
+ private function executeSchemaChange($schema) {
+ $this->conn->beginTransaction();
+ foreach($schema->toSql($this->conn->getDatabasePlatform()) as $sql) {
+ $this->conn->query($sql);
}
- $conn->commit();
+ $this->conn->commit();
return true;
}
}