MIOLO20
Carregando...
Procurando...
Nenhuma entrada encontrada
OracleSchemaManager.php
Ir para a documentação deste ficheiro.
1
<?php
2
/*
3
* $Id$
4
*
5
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16
*
17
* This software consists of voluntary contributions made by many individuals
18
* and is licensed under the LGPL. For more information, see
19
* <http://www.phpdoctrine.org>.
20
*/
21
22
namespace
Doctrine\DBAL\Schema
;
23
34
class
OracleSchemaManager
extends
AbstractSchemaManager
35
{
36
protected
function
_getPortableViewDefinition
($view)
37
{
38
$view = \array_change_key_case($view, CASE_LOWER);
39
40
return
new
View
($view[
'view_name'
], $view[
'text'
]);
41
}
42
43
protected
function
_getPortableUserDefinition
($user)
44
{
45
$user = \array_change_key_case($user, CASE_LOWER);
46
47
return
array(
48
'user'
=> $user[
'username'
],
49
);
50
}
51
52
protected
function
_getPortableTableDefinition
($table)
53
{
54
$table = \array_change_key_case($table, CASE_LOWER);
55
56
return
$table[
'table_name'
];
57
}
58
66
protected
function
_getPortableTableIndexesList
($tableIndexes, $tableName=
null
)
67
{
68
$indexBuffer = array();
69
foreach
( $tableIndexes as $tableIndex ) {
70
$tableIndex = \array_change_key_case($tableIndex, CASE_LOWER);
71
72
$keyName = strtolower($tableIndex[
'name'
]);
73
74
if
( strtolower($tableIndex[
'is_primary'
]) ==
"p"
) {
75
$keyName =
'primary'
;
76
$buffer[
'primary'
] =
true
;
77
$buffer[
'non_unique'
] =
false
;
78
}
else
{
79
$buffer[
'primary'
] =
false
;
80
$buffer[
'non_unique'
] = ( $tableIndex[
'is_unique'
] == 0 ) ?
true
:
false
;
81
}
82
$buffer[
'key_name'
] = $keyName;
83
$buffer[
'column_name'
] = $tableIndex[
'column_name'
];
84
$indexBuffer[] = $buffer;
85
}
86
return
parent::_getPortableTableIndexesList($indexBuffer, $tableName);
87
}
88
89
protected
function
_getPortableTableColumnDefinition
($tableColumn)
90
{
91
$tableColumn = \array_change_key_case($tableColumn, CASE_LOWER);
92
93
$dbType = strtolower($tableColumn[
'data_type'
]);
94
if
(strpos($dbType,
"timestamp("
) === 0) {
95
if
(strpos($dbType,
"WITH TIME ZONE"
)) {
96
$dbType =
"timestamptz"
;
97
}
else
{
98
$dbType =
"timestamp"
;
99
}
100
}
101
102
$type = array();
103
$length = $unsigned = $fixed =
null
;
104
if
( ! empty($tableColumn[
'data_length'
])) {
105
$length = $tableColumn[
'data_length'
];
106
}
107
108
if
( ! isset($tableColumn[
'column_name'
])) {
109
$tableColumn[
'column_name'
] =
''
;
110
}
111
112
if
(stripos($tableColumn[
'data_default'
],
'NULL'
) !==
null
) {
113
$tableColumn[
'data_default'
] =
null
;
114
}
115
116
$precision =
null
;
117
$scale =
null
;
118
119
$type = $this->_platform->getDoctrineTypeMapping($dbType);
120
switch
($dbType) {
121
case
'number'
:
122
if
($tableColumn[
'data_precision'
] == 20 && $tableColumn[
'data_scale'
] == 0) {
123
$precision = 20;
124
$scale = 0;
125
$type =
'bigint'
;
126
} elseif ($tableColumn[
'data_precision'
] == 5 && $tableColumn[
'data_scale'
] == 0) {
127
$type =
'smallint'
;
128
$precision = 5;
129
$scale = 0;
130
} elseif ($tableColumn[
'data_precision'
] == 1 && $tableColumn[
'data_scale'
] == 0) {
131
$precision = 1;
132
$scale = 0;
133
$type =
'boolean'
;
134
} elseif ($tableColumn[
'data_scale'
] > 0) {
135
$precision = $tableColumn[
'data_precision'
];
136
$scale = $tableColumn[
'data_scale'
];
137
$type =
'decimal'
;
138
}
139
$length =
null
;
140
break
;
141
case
'pls_integer'
:
142
case
'binary_integer'
:
143
$length =
null
;
144
break
;
145
case
'varchar'
:
146
case
'varchar2'
:
147
case
'nvarchar2'
:
148
$length = $tableColumn[
'char_length'
];
149
$fixed =
false
;
150
break
;
151
case
'char'
:
152
case
'nchar'
:
153
$length = $tableColumn[
'char_length'
];
154
$fixed =
true
;
155
break
;
156
case
'date'
:
157
case
'timestamp'
:
158
$length =
null
;
159
break
;
160
case
'float'
:
161
$precision = $tableColumn[
'data_precision'
];
162
$scale = $tableColumn[
'data_scale'
];
163
$length =
null
;
164
break
;
165
case
'clob'
:
166
case
'nclob'
:
167
$length =
null
;
168
break
;
169
case
'blob'
:
170
case
'raw'
:
171
case
'long raw'
:
172
case
'bfile'
:
173
$length =
null
;
174
break
;
175
case
'rowid'
:
176
case
'urowid'
:
177
default
:
178
$length =
null
;
179
}
180
181
$options = array(
182
'notnull'
=> (
bool
) ($tableColumn[
'nullable'
] ===
'N'
),
183
'fixed'
=> (
bool
) $fixed,
184
'unsigned'
=> (
bool
) $unsigned,
185
'default'
=> $tableColumn[
'data_default'
],
186
'length'
=> $length,
187
'precision'
=> $precision,
188
'scale'
=> $scale,
189
'platformDetails'
=> array(),
190
);
191
192
return
new
Column
($tableColumn[
'column_name'
], \Doctrine\DBAL\Types\Type::getType($type), $options);
193
}
194
195
protected
function
_getPortableTableForeignKeysList
($tableForeignKeys)
196
{
197
$list = array();
198
foreach
($tableForeignKeys as $key => $value) {
199
$value = \array_change_key_case($value, CASE_LOWER);
200
if
(!isset($list[$value[
'constraint_name'
]])) {
201
if
($value[
'delete_rule'
] ==
"NO ACTION"
) {
202
$value[
'delete_rule'
] =
null
;
203
}
204
205
$list[$value[
'constraint_name'
]] = array(
206
'name'
=> $value[
'constraint_name'
],
207
'local'
=> array(),
208
'foreign'
=> array(),
209
'foreignTable'
=> $value[
'references_table'
],
210
'onDelete'
=> $value[
'delete_rule'
],
211
);
212
}
213
$list[$value[
'constraint_name'
]][
'local'
][$value[
'position'
]] = $value[
'local_column'
];
214
$list[$value[
'constraint_name'
]][
'foreign'
][$value[
'position'
]] = $value[
'foreign_column'
];
215
}
216
217
$result = array();
218
foreach
($list AS $constraint) {
219
$result[] =
new
ForeignKeyConstraint
(
220
array_values($constraint[
'local'
]), $constraint[
'foreignTable'
],
221
array_values($constraint[
'foreign'
]), $constraint[
'name'
],
222
array(
'onDelete'
=> $constraint[
'onDelete'
])
223
);
224
}
225
226
return
$result;
227
}
228
229
protected
function
_getPortableSequenceDefinition
($sequence)
230
{
231
$sequence = \array_change_key_case($sequence, CASE_LOWER);
232
return
new
Sequence
($sequence[
'sequence_name'
], $sequence[
'increment_by'
], $sequence[
'min_value'
]);
233
}
234
235
protected
function
_getPortableFunctionDefinition
($function)
236
{
237
$function = \array_change_key_case($function, CASE_LOWER);
238
return
$function[
'name'
];
239
}
240
241
protected
function
_getPortableDatabaseDefinition
($database)
242
{
243
$database = \array_change_key_case($database, CASE_LOWER);
244
return
$database[
'username'
];
245
}
246
247
public
function
createDatabase
($database =
null
)
248
{
249
if
(is_null($database)) {
250
$database = $this->_conn->getDatabase();
251
}
252
253
$params = $this->_conn->getParams();
254
$username = $database;
255
$password = $params[
'password'
];
256
257
$query =
'CREATE USER '
. $username .
' IDENTIFIED BY '
. $password;
258
$result = $this->_conn->executeUpdate($query);
259
260
$query =
'GRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE, CREATE SEQUENCE, CREATE TRIGGER TO '
. $username;
261
$result = $this->_conn->executeUpdate($query);
262
263
return
true
;
264
}
265
266
public
function
dropAutoincrement
($table)
267
{
268
$sql = $this->_platform->getDropAutoincrementSql($table);
269
foreach
($sql as $query) {
270
$this->_conn->executeUpdate($query);
271
}
272
273
return
true
;
274
}
275
276
public
function
dropTable
($name)
277
{
278
$this->
dropAutoincrement
($name);
279
280
return
parent::dropTable($name);
281
}
282
}
Doctrine\DBAL\Schema\AbstractSchemaManager
Definição
AbstractSchemaManager.php:40
Doctrine\DBAL\Schema\Column
Definição
Column.php:35
Doctrine\DBAL\Schema\ForeignKeyConstraint
Definição
ForeignKeyConstraint.php:27
Doctrine\DBAL\Schema\OracleSchemaManager
Definição
OracleSchemaManager.php:35
Doctrine\DBAL\Schema\OracleSchemaManager\dropAutoincrement
dropAutoincrement($table)
Definição
OracleSchemaManager.php:266
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableTableDefinition
_getPortableTableDefinition($table)
Definição
OracleSchemaManager.php:52
Doctrine\DBAL\Schema\OracleSchemaManager\createDatabase
createDatabase($database=null)
Definição
OracleSchemaManager.php:247
Doctrine\DBAL\Schema\OracleSchemaManager\dropTable
dropTable($name)
Definição
OracleSchemaManager.php:276
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableUserDefinition
_getPortableUserDefinition($user)
Definição
OracleSchemaManager.php:43
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableViewDefinition
_getPortableViewDefinition($view)
Definição
OracleSchemaManager.php:36
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableDatabaseDefinition
_getPortableDatabaseDefinition($database)
Definição
OracleSchemaManager.php:241
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableFunctionDefinition
_getPortableFunctionDefinition($function)
Definição
OracleSchemaManager.php:235
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableSequenceDefinition
_getPortableSequenceDefinition($sequence)
Definição
OracleSchemaManager.php:229
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableTableIndexesList
_getPortableTableIndexesList($tableIndexes, $tableName=null)
Definição
OracleSchemaManager.php:66
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableTableColumnDefinition
_getPortableTableColumnDefinition($tableColumn)
Definição
OracleSchemaManager.php:89
Doctrine\DBAL\Schema\OracleSchemaManager\_getPortableTableForeignKeysList
_getPortableTableForeignKeysList($tableForeignKeys)
Definição
OracleSchemaManager.php:195
Doctrine\DBAL\Schema\Sequence
Definição
Sequence.php:36
Doctrine\DBAL\Schema\View
Definição
View.php:34
Doctrine\DBAL\Schema
Definição
AbstractAsset.php:22
classes
extensions
doctrine-dbal
Doctrine
DBAL
Schema
OracleSchemaManager.php
Gerado por
1.10.0