25
25
*/
26
26
package io .github .prrvchr .uno .sdbcx ;
27
27
28
- import java .text .MessageFormat ;
29
28
import java .util .ArrayList ;
30
29
import java .util .HashMap ;
31
30
import java .util .List ;
49
48
import io .github .prrvchr .jdbcdriver .Resources ;
50
49
import io .github .prrvchr .jdbcdriver .StandardSQLState ;
51
50
import io .github .prrvchr .jdbcdriver .DBTools ;
51
+ import io .github .prrvchr .jdbcdriver .DriverProvider ;
52
52
import io .github .prrvchr .jdbcdriver .DBColumnHelper .ColumnDescription ;
53
- import io .github .prrvchr .jdbcdriver .DBDefaultQuery ;
54
53
import io .github .prrvchr .uno .helper .UnoHelper ;
55
54
56
55
@@ -111,11 +110,12 @@ private boolean createColumn(XPropertySet descriptor, String name)
111
110
throw new SQLException ("Error" , this , StandardSQLState .SQL_GENERAL_ERROR .text (), 0 , e );
112
111
}
113
112
try {
114
- String table = DBTools .composeTableName (getConnection ().getProvider (), m_table , ComposeRule .InTableDefinitions , false );
113
+ DriverProvider provider = getConnection ().getProvider ();
114
+ String table = DBTools .composeTableName (provider , m_table , ComposeRule .InTableDefinitions , false );
115
115
List <String > queries = new ArrayList <String >();
116
- DBTableHelper .getAlterColumnQueries (queries , getConnection (). getProvider () , m_table , oldcolumn , descriptor , false , isCaseSensitive ());
116
+ DBTableHelper .getAlterColumnQueries (queries , provider , m_table , oldcolumn , descriptor , false , isCaseSensitive ());
117
117
if (!queries .isEmpty ()) {
118
- return DBTools .executeDDLQueries (getConnection (). getProvider () , m_table .getLogger (), queries , this .getClass ().getName (),
118
+ return DBTools .executeDDLQueries (provider , m_table .getLogger (), queries , this .getClass ().getName (),
119
119
"createColumn" , Resources .STR_LOG_COLUMN_ALTER_QUERY , name , table );
120
120
}
121
121
}
@@ -137,11 +137,12 @@ protected ColumnSuper<?> createElement(String name)
137
137
boolean isCurrency = false ;
138
138
@ SuppressWarnings ("unused" )
139
139
int dataType = DataType .OTHER ;
140
-
140
+
141
+ DriverProvider provider = getConnection ().getProvider ();
141
142
ColumnDescription description = m_descriptions .get (name );
142
143
if (description == null ) {
143
144
// could be a recently added column. Refresh:
144
- List <ColumnDescription > newcolumns = DBColumnHelper .readColumns (getConnection (). getProvider () , m_table .getCatalog (),
145
+ List <ColumnDescription > newcolumns = DBColumnHelper .readColumns (provider , m_table .getCatalog (),
145
146
m_table .getSchema (), m_table .getName ());
146
147
for (ColumnDescription newcolumn : newcolumns ) {
147
148
if (newcolumn .columnName .equals (name )) {
@@ -157,8 +158,8 @@ protected ColumnSuper<?> createElement(String name)
157
158
158
159
ExtraColumnInfo info = m_extrainfos .get (name );
159
160
if (info == null ) {
160
- String composedName = DBTools .composeTableNameForSelect (getConnection (). getProvider () , m_table , isCaseSensitive ());
161
- m_extrainfos = DBColumnHelper .collectColumnInformation (getConnection (). getProvider () , composedName , "*" );
161
+ String composedName = DBTools .composeTableNameForSelect (provider , m_table , isCaseSensitive ());
162
+ m_extrainfos = DBColumnHelper .collectColumnInformation (provider , composedName , "*" );
162
163
info = m_extrainfos .get (name );
163
164
}
164
165
if (info != null ) {
@@ -167,7 +168,7 @@ protected ColumnSuper<?> createElement(String name)
167
168
isCurrency = info .isCurrency ;
168
169
dataType = info .dataType ;
169
170
}
170
-
171
+
171
172
XNameAccess primaryKeyColumns = DBTools .getPrimaryKeyColumns (m_table .getKeys ());
172
173
int nullable = description .nullable ;
173
174
if (nullable != ColumnValue .NO_NULLS && primaryKeyColumns != null && primaryKeyColumns .hasByName (name )) {
@@ -193,11 +194,12 @@ protected void removeDataBaseElement(int index,
193
194
return ;
194
195
}
195
196
try {
196
- String table = DBTools .composeTableName (getConnection ().getProvider (), m_table , ComposeRule .InTableDefinitions , isCaseSensitive ());
197
- String column = DBTools .enquoteIdentifier (getConnection ().getProvider (), name , isCaseSensitive ());
198
- String query = MessageFormat .format (DBDefaultQuery .STR_QUERY_ALTER_TABLE_DROP_COLUMN , table , column );
199
- table = DBTools .composeTableName (getConnection ().getProvider (), m_table , ComposeRule .InTableDefinitions , false );
200
- DBTools .executeDDLQuery (getConnection ().getProvider (), m_table .getLogger (), query , "ColumnContainer" ,
197
+ DriverProvider provider = getConnection ().getProvider ();
198
+ String table = DBTools .composeTableName (provider , m_table , ComposeRule .InTableDefinitions , isCaseSensitive ());
199
+ String column = DBTools .enquoteIdentifier (provider , name , isCaseSensitive ());
200
+ String query = provider .getDropColumnQuery (table , column );
201
+ table = DBTools .composeTableName (provider , m_table , ComposeRule .InTableDefinitions , false );
202
+ DBTools .executeDDLQuery (provider , m_table .getLogger (), query , "ColumnContainer" ,
201
203
"removeDataBaseElement" , Resources .STR_LOG_COLUMN_REMOVE_QUERY , name , table );
202
204
}
203
205
catch (java .sql .SQLException e ) {
@@ -237,5 +239,4 @@ protected abstract ColumnSuper<?> getColumn(String name,
237
239
boolean rowversion ,
238
240
boolean currency );
239
241
240
-
241
242
}
0 commit comments