*/
public static function getDbStructure( $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
return $schema->getDbStructure($file);
}
*/
public static function createDbFromStructure( $file ) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
$result = $schema->createDbFromStructure($file);
return $result;
}
*/
public static function updateDbFromStructure($file) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
try {
$result = $schema->updateDbFromStructure($file);
} catch (Exception $e) {
*/
public static function dropTable($tableName) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
$schema->dropTable($tableName);
}
*/
public static function removeDBStructure($file) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
$schema->removeDBStructure($file);
}
*/
public static function replaceDB( $file ) {
self::connectDoctrine();
- $schema = new \OC\DB\Schema(self::$connection);
+ $schema = new \OC\DB\MDB2SchemaManager(self::$connection);
$schema->replaceDB($file);
}
--- /dev/null
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\DB;
+
+class MDB2SchemaManager {
+ /**
+ * @var \Doctrine\DBAL\Connection $conn
+ */
+ protected $conn;
+
+ public function __construct(Connection $conn) {
+ $this->conn = $conn;
+ }
+
+ /**
+ * @brief saves database scheme to xml file
+ * @param string $file name of file
+ * @param int|string $mode
+ * @return bool
+ *
+ * TODO: write more documentation
+ */
+ public function getDbStructure( $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
+ $sm = $this->conn->getSchemaManager();
+
+ return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
+ }
+
+ /**
+ * @brief Creates tables from XML file
+ * @param string $file file to read structure from
+ * @return bool
+ *
+ * TODO: write more documentation
+ */
+ public function createDbFromStructure( $file ) {
+ $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
+ $toSchema = $schemaReader->loadSchemaFromFile($file);
+ return $this->executeSchemaChange($toSchema);
+ }
+
+ /**
+ * @brief update the database scheme
+ * @param string $file file to read structure from
+ * @return bool
+ */
+ public function updateDbFromStructure($file) {
+ $sm = $this->conn->getSchemaManager();
+ $fromSchema = $sm->createSchema();
+
+ $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
+ $toSchema = $schemaReader->loadSchemaFromFile($file);
+
+ // remove tables we don't know about
+ foreach($fromSchema->getTables() as $table) {
+ if (!$toSchema->hasTable($table->getName())) {
+ $fromSchema->dropTable($table->getName());
+ }
+ }
+ // remove sequences we don't know about
+ foreach($fromSchema->getSequences() as $table) {
+ if (!$toSchema->hasSequence($table->getName())) {
+ $fromSchema->dropSequence($table->getName());
+ }
+ }
+
+ $comparator = new \Doctrine\DBAL\Schema\Comparator();
+ $schemaDiff = $comparator->compare($fromSchema, $toSchema);
+
+ $platform = $this->conn->getDatabasePlatform();
+ $tables = $schemaDiff->newTables + $schemaDiff->changedTables + $schemaDiff->removedTables;
+ foreach($tables as $tableDiff) {
+ $tableDiff->name = $platform->quoteIdentifier($tableDiff->name);
+ }
+
+ return $this->executeSchemaChange($schemaDiff);
+ }
+
+ /**
+ * @brief drop a table
+ * @param string $tableName the table to drop
+ */
+ public function dropTable($tableName) {
+ $sm = $this->conn->getSchemaManager();
+ $fromSchema = $sm->createSchema();
+ $toSchema = clone $fromSchema;
+ $toSchema->dropTable($tableName);
+ $sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform());
+ $this->conn->execute($sql);
+ }
+
+ /**
+ * remove all tables defined in a database structure xml file
+ * @param string $file the xml file describing the tables
+ */
+ 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) {
+ $toSchema->dropTable($table->getName());
+ }
+ $comparator = new \Doctrine\DBAL\Schema\Comparator();
+ $schemaDiff = $comparator->compare($fromSchema, $toSchema);
+ $this->executeSchemaChange($schemaDiff);
+ }
+
+ /**
+ * @brief replaces the ownCloud tables with a new set
+ * @param $file string path to the MDB2 xml db export file
+ */
+ public function replaceDB( $file ) {
+ $apps = \OC_App::getAllApps();
+ $this->conn->beginTransaction();
+ // Delete the old tables
+ $this->removeDBStructure( OC::$SERVERROOT . '/db_structure.xml' );
+
+ foreach($apps as $app) {
+ $path = \OC_App::getAppPath($app).'/appinfo/database.xml';
+ if(file_exists($path)) {
+ $this->removeDBStructure( $path );
+ }
+ }
+
+ // Create new tables
+ $this->conn->commit();
+ }
+
+ /**
+ * @param \Doctrine\DBAL\Schema\Schema $schema
+ * @return bool
+ */
+ private function executeSchemaChange($schema) {
+ $this->conn->beginTransaction();
+ foreach($schema->toSql($this->conn->getDatabasePlatform()) as $sql) {
+ $this->conn->query($sql);
+ }
+ $this->conn->commit();
+ return true;
+ }
+}
+++ /dev/null
-<?php
-/**
- * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-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 string $file name of file
- * @param int|string $mode
- * @return bool
- *
- * TODO: write more documentation
- */
- public function getDbStructure( $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) {
- $sm = $this->conn->getSchemaManager();
-
- return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
- }
-
- /**
- * @brief Creates tables from XML file
- * @param string $file file to read structure from
- * @return bool
- *
- * TODO: write more documentation
- */
- public function createDbFromStructure( $file ) {
- $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
- $toSchema = $schemaReader->loadSchemaFromFile($file);
- return $this->executeSchemaChange($toSchema);
- }
-
- /**
- * @brief update the database scheme
- * @param string $file file to read structure from
- * @return bool
- */
- public function updateDbFromStructure($file) {
- $sm = $this->conn->getSchemaManager();
- $fromSchema = $sm->createSchema();
-
- $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform());
- $toSchema = $schemaReader->loadSchemaFromFile($file);
-
- // remove tables we don't know about
- foreach($fromSchema->getTables() as $table) {
- if (!$toSchema->hasTable($table->getName())) {
- $fromSchema->dropTable($table->getName());
- }
- }
- // remove sequences we don't know about
- foreach($fromSchema->getSequences() as $table) {
- if (!$toSchema->hasSequence($table->getName())) {
- $fromSchema->dropSequence($table->getName());
- }
- }
-
- $comparator = new \Doctrine\DBAL\Schema\Comparator();
- $schemaDiff = $comparator->compare($fromSchema, $toSchema);
-
- $platform = $this->conn->getDatabasePlatform();
- $tables = $schemaDiff->newTables + $schemaDiff->changedTables + $schemaDiff->removedTables;
- foreach($tables as $tableDiff) {
- $tableDiff->name = $platform->quoteIdentifier($tableDiff->name);
- }
-
- return $this->executeSchemaChange($schemaDiff);
- }
-
- /**
- * @brief drop a table
- * @param string $tableName the table to drop
- */
- public function dropTable($tableName) {
- $sm = $this->conn->getSchemaManager();
- $fromSchema = $sm->createSchema();
- $toSchema = clone $fromSchema;
- $toSchema->dropTable($tableName);
- $sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform());
- $this->conn->execute($sql);
- }
-
- /**
- * remove all tables defined in a database structure xml file
- * @param string $file the xml file describing the tables
- */
- 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) {
- $toSchema->dropTable($table->getName());
- }
- $comparator = new \Doctrine\DBAL\Schema\Comparator();
- $schemaDiff = $comparator->compare($fromSchema, $toSchema);
- $this->executeSchemaChange($schemaDiff);
- }
-
- /**
- * @brief replaces the ownCloud tables with a new set
- * @param $file string path to the MDB2 xml db export file
- */
- public function replaceDB( $file ) {
- $apps = \OC_App::getAllApps();
- $this->conn->beginTransaction();
- // Delete the old tables
- $this->removeDBStructure( OC::$SERVERROOT . '/db_structure.xml' );
-
- foreach($apps as $app) {
- $path = \OC_App::getAppPath($app).'/appinfo/database.xml';
- if(file_exists($path)) {
- $this->removeDBStructure( $path );
- }
- }
-
- // Create new tables
- $this->conn->commit();
- }
-
- /**
- * @param \Doctrine\DBAL\Schema\Schema $schema
- * @return bool
- */
- private function executeSchemaChange($schema) {
- $this->conn->beginTransaction();
- foreach($schema->toSql($this->conn->getDatabasePlatform()) as $sql) {
- $this->conn->query($sql);
- }
- $this->conn->commit();
- return true;
- }
-}