Correctly namespace and autoload DatabaseException

This commit is contained in:
Joas Schilling 2014-11-26 12:38:24 +01:00
parent 3338eede3c
commit e1f3abf7a5
5 changed files with 38 additions and 29 deletions

View File

@ -0,0 +1,23 @@
<?php
/**
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC;
class DatabaseException extends \Exception {
private $query;
//FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous
public function __construct($message, $query = null){
parent::__construct($message);
$this->query = $query;
}
public function getQuery() {
return $this->query;
}
}

View File

@ -22,20 +22,6 @@
define('MDB2_SCHEMA_DUMP_STRUCTURE', '1'); define('MDB2_SCHEMA_DUMP_STRUCTURE', '1');
class DatabaseException extends Exception {
private $query;
//FIXME getQuery seems to be unused, maybe use parent constructor with $message, $code and $previous
public function __construct($message, $query = null){
parent::__construct($message);
$this->query = $query;
}
public function getQuery() {
return $this->query;
}
}
/** /**
* This class manages the access to the database. It basically is a wrapper for * This class manages the access to the database. It basically is a wrapper for
* Doctrine with some adaptions. * Doctrine with some adaptions.
@ -65,7 +51,7 @@ class OC_DB {
* @param int $limit * @param int $limit
* @param int $offset * @param int $offset
* @param bool $isManipulation * @param bool $isManipulation
* @throws DatabaseException * @throws \OC\DatabaseException
* @return OC_DB_StatementWrapper prepared SQL query * @return OC_DB_StatementWrapper prepared SQL query
* *
* SQL query via Doctrine prepare(), needs to be execute()'d! * SQL query via Doctrine prepare(), needs to be execute()'d!
@ -82,7 +68,7 @@ class OC_DB {
try { try {
$result =$connection->prepare($query, $limit, $offset); $result =$connection->prepare($query, $limit, $offset);
} catch (\Doctrine\DBAL\DBALException $e) { } catch (\Doctrine\DBAL\DBALException $e) {
throw new \DatabaseException($e->getMessage(), $query); throw new \OC\DatabaseException($e->getMessage(), $query);
} }
// differentiate between query and manipulation // differentiate between query and manipulation
$result = new OC_DB_StatementWrapper($result, $isManipulation); $result = new OC_DB_StatementWrapper($result, $isManipulation);
@ -123,7 +109,7 @@ class OC_DB {
* .. or a simple sql query string * .. or a simple sql query string
* @param array $parameters * @param array $parameters
* @return OC_DB_StatementWrapper * @return OC_DB_StatementWrapper
* @throws DatabaseException * @throws \OC\DatabaseException
*/ */
static public function executeAudited( $stmt, array $parameters = null) { static public function executeAudited( $stmt, array $parameters = null) {
if (is_string($stmt)) { if (is_string($stmt)) {
@ -132,7 +118,7 @@ class OC_DB {
// TODO try to convert LIMIT OFFSET notation to parameters, see fixLimitClauseForMSSQL // TODO try to convert LIMIT OFFSET notation to parameters, see fixLimitClauseForMSSQL
$message = 'LIMIT and OFFSET are forbidden for portability reasons,' $message = 'LIMIT and OFFSET are forbidden for portability reasons,'
. ' pass an array with \'limit\' and \'offset\' instead'; . ' pass an array with \'limit\' and \'offset\' instead';
throw new DatabaseException($message); throw new \OC\DatabaseException($message);
} }
$stmt = array('sql' => $stmt, 'limit' => null, 'offset' => null); $stmt = array('sql' => $stmt, 'limit' => null, 'offset' => null);
} }
@ -140,7 +126,7 @@ class OC_DB {
// convert to prepared statement // convert to prepared statement
if ( ! array_key_exists('sql', $stmt) ) { if ( ! array_key_exists('sql', $stmt) ) {
$message = 'statement array must at least contain key \'sql\''; $message = 'statement array must at least contain key \'sql\'';
throw new DatabaseException($message); throw new \OC\DatabaseException($message);
} }
if ( ! array_key_exists('limit', $stmt) ) { if ( ! array_key_exists('limit', $stmt) ) {
$stmt['limit'] = null; $stmt['limit'] = null;
@ -160,7 +146,7 @@ class OC_DB {
} else { } else {
$message = 'Expected a prepared statement or array got ' . gettype($stmt); $message = 'Expected a prepared statement or array got ' . gettype($stmt);
} }
throw new DatabaseException($message); throw new \OC\DatabaseException($message);
} }
return $result; return $result;
} }
@ -169,7 +155,7 @@ class OC_DB {
* gets last value of autoincrement * gets last value of autoincrement
* @param string $table The optional table name (will replace *PREFIX*) and add sequence suffix * @param string $table The optional table name (will replace *PREFIX*) and add sequence suffix
* @return string id * @return string id
* @throws DatabaseException * @throws \OC\DatabaseException
* *
* \Doctrine\DBAL\Connection lastInsertId * \Doctrine\DBAL\Connection lastInsertId
* *
@ -312,7 +298,7 @@ class OC_DB {
* @param mixed $result * @param mixed $result
* @param string $message * @param string $message
* @return void * @return void
* @throws DatabaseException * @throws \OC\DatabaseException
*/ */
public static function raiseExceptionOnError($result, $message = null) { public static function raiseExceptionOnError($result, $message = null) {
if(self::isError($result)) { if(self::isError($result)) {
@ -321,7 +307,7 @@ class OC_DB {
} else { } else {
$message .= ', Root cause:' . self::getErrorMessage($result); $message .= ', Root cause:' . self::getErrorMessage($result);
} }
throw new DatabaseException($message, self::getErrorCode($result)); throw new \OC\DatabaseException($message, self::getErrorCode($result));
} }
} }
@ -345,7 +331,7 @@ class OC_DB {
* *
* @param string $table * @param string $table
* @return bool * @return bool
* @throws DatabaseException * @throws \OC\DatabaseException
*/ */
public static function tableExists($table) { public static function tableExists($table) {
@ -381,7 +367,7 @@ class OC_DB {
$result = \OC_DB::executeAudited($sql, array($table)); $result = \OC_DB::executeAudited($sql, array($table));
break; break;
default: default:
throw new DatabaseException("Unknown database type: $dbType"); throw new \OC\DatabaseException("Unknown database type: $dbType");
} }
return $result->fetchOne() === $table; return $result->fetchOne() === $table;

View File

@ -220,7 +220,7 @@ class OC_Group_Database extends OC_Group_Backend {
* @param string $gid * @param string $gid
* @param string $search * @param string $search
* @return int|false * @return int|false
* @throws DatabaseException * @throws \OC\DatabaseException
*/ */
public function countUsersInGroup($gid, $search = '') { public function countUsersInGroup($gid, $search = '') {
$stmt = OC_DB::prepare('SELECT COUNT(`uid`) AS `count` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` LIKE ?'); $stmt = OC_DB::prepare('SELECT COUNT(`uid`) AS `count` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` LIKE ?');

View File

@ -205,7 +205,7 @@ class Server extends SimpleContainer implements IServerContainer {
$factory = new \OC\DB\ConnectionFactory(); $factory = new \OC\DB\ConnectionFactory();
$type = $c->getConfig()->getSystemValue('dbtype', 'sqlite'); $type = $c->getConfig()->getSystemValue('dbtype', 'sqlite');
if (!$factory->isValidType($type)) { if (!$factory->isValidType($type)) {
throw new \DatabaseException('Invalid database type'); throw new \OC\DatabaseException('Invalid database type');
} }
$connectionParams = $factory->createConnectionParams($c->getConfig()); $connectionParams = $factory->createConnectionParams($c->getConfig());
$connection = $factory->getConnection($type, $connectionParams); $connection = $factory->getConnection($type, $connectionParams);

View File

@ -64,7 +64,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
/** /**
* Remove all entries from the storages table * Remove all entries from the storages table
* @throws \DatabaseException * @throws \OC\DatabaseException
*/ */
static protected function tearDownAfterClassCleanStorages() { static protected function tearDownAfterClassCleanStorages() {
$sql = 'DELETE FROM `*PREFIX*storages`'; $sql = 'DELETE FROM `*PREFIX*storages`';
@ -74,7 +74,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
/** /**
* Remove all entries from the filecache table * Remove all entries from the filecache table
* @throws \DatabaseException * @throws \OC\DatabaseException
*/ */
static protected function tearDownAfterClassCleanFileCache() { static protected function tearDownAfterClassCleanFileCache() {
$sql = 'DELETE FROM `*PREFIX*filecache`'; $sql = 'DELETE FROM `*PREFIX*filecache`';