-
Notifications
You must be signed in to change notification settings - Fork 222
/
IDatabasePlatform.java
200 lines (134 loc) · 6.89 KB
/
IDatabasePlatform.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
package org.jumpmind.db.platform;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.jumpmind.db.model.Column;
import org.jumpmind.db.model.Database;
import org.jumpmind.db.model.Table;
import org.jumpmind.db.sql.DmlStatement;
import org.jumpmind.db.sql.ISqlTemplate;
import org.jumpmind.db.sql.Row;
import org.jumpmind.db.sql.DmlStatement.DmlType;
import org.jumpmind.db.util.BinaryEncoding;
/*
* A platform encapsulates the database-related functionality such as performing queries
* and manipulations. It also contains functionality to read and build DDL to create and
* alter database tables.
*/
public interface IDatabasePlatform {
/**
* @see DatabaseNamesConstants
* @return a constant that represents this database type from {@link DatabaseNamesConstants}
*/
public String getName();
/**
* Returns information about this platform.
*
* @return The info object
*/
public DatabaseInfo getDatabaseInfo();
/**
* Returns a new ddl builder for the this platform.
*/
public IDdlBuilder getDdlBuilder();
/**
* Returns the ddl reader (which reads a database model from a live
* database) for this platform.
*
* @return The model reader
*/
public IDdlReader getDdlReader();
public ISqlTemplate getSqlTemplate();
public ISqlTemplate getSqlTemplateDirty();
/**
* The amount of time table metadata will be cached when using {@link IDatabasePlatform#getT
* @param clearCacheModelTimeoutInMs
*/
public void setClearCacheModelTimeoutInMs(long clearCacheModelTimeoutInMs);
public long getClearCacheModelTimeoutInMs();
public String getDefaultSchema();
public String getDefaultCatalog();
/**
* Reads the database model from the live database to which the given
* connection is pointing.
*/
public Database readDatabase(String catalog, String schema, String[] tableTypes);
public Database readFromDatabase(Table... tables);
public Table readTableFromDatabase(String catalogName, String schemaName, String tablename);
public void resetCachedTableModel();
public Table getTableFromCache(String tableName, boolean forceReread);
public Table getTableFromCache(String catalogName, String schemaName, String tableName,
boolean forceReread);
public void createDatabase(Database targetDatabase, boolean dropTablesFirst,
boolean continueOnError);
public void createTables(boolean dropTablesFirst,
boolean continueOnError, Table... tables);
public void alterDatabase(Database desiredDatabase, boolean continueOnError);
public void alterTables(boolean continueOnError, Table... desiredTables);
public void dropDatabase(Database database, boolean continueOnError);
public void dropTables(boolean continueOnError, Table...tables);
public DmlStatement createDmlStatement(DmlType dmlType, Table table, String textColumnExpression);
public DmlStatement createDmlStatement(DmlType dmlType, String catalogName, String schemaName,
String tableName, Column[] keys, Column[] columns, boolean[] nullKeyValues, String textColumnExpression);
public DmlStatement createDmlStatement(DmlType dmlType, String catalogName, String schemaName,
String tableName, Column[] keys, Column[] columns, boolean[] nullKeyValues, String textColumnExpression,
boolean namedParameters);
public Object[] getObjectValues(BinaryEncoding encoding, String[] values,
Column[] orderedMetaData);
public Object[] getObjectValues(BinaryEncoding encoding, Table table, String[] columnNames,
String[] values);
public Object[] getObjectValues(BinaryEncoding encoding, Table table, String[] columnNames,
String[] values, boolean useVariableDates, boolean fitToColumn);
public Object[] getObjectValues(BinaryEncoding encoding, String[] values,
Column[] orderedMetaData, boolean useVariableDates, boolean fitToColumn);
public String[] getStringValues(BinaryEncoding encoding, Column[] metaData, Row row, boolean useVariableDates, boolean indexByPosition);
public String getCsvStringValue(BinaryEncoding encoding, Column[] metaData, Row row, boolean[] needEscaped);
public Database readDatabaseFromXml(String filePath, boolean alterCaseToMatchDatabaseDefaultCase);
public Database readDatabaseFromXml(InputStream in, boolean alterCaseToMatchDatabaseDefaultCase);
public String[] alterCaseToMatchDatabaseDefaultCase(String[] values);
public String alterCaseToMatchDatabaseDefaultCase(String values);
public void alterCaseToMatchDatabaseDefaultCase(Table table);
public void alterCaseToMatchDatabaseDefaultCase(Table... tables);
public void alterCaseToMatchDatabaseDefaultCase(Database database);
public void prefixDatabase(String prefix, Database targetTables);
public boolean isLob(int type);
public boolean isClob(int type);
public boolean isBlob(int type);
public List<Column> getLobColumns(Table table);
public Map<String, String> getSqlScriptReplacementTokens();
public String scrubSql(String sql);
public boolean isStoresLowerCaseIdentifiers();
public boolean isStoresUpperCaseIdentifiers();
public boolean isStoresMixedCaseQuotedIdentifiers();
public <T> T getDataSource();
public void setMetadataIgnoreCase(boolean value);
public boolean isMetadataIgnoreCase();
public java.util.Date parseDate(int type, String value, boolean useVariableDates);
public Map<String, String> parseQualifiedTableName(String tableName);
public Table makeAllColumnsPrimaryKeys(Table table);
public boolean canColumnBeUsedInWhereClause(Column column);
public void makePlatformSpecific(Database database);
public List<PermissionResult> checkSymTablePermissions(PermissionType... permissionTypes);
public boolean isUseMultiThreadSyncTriggers();
public boolean supportsTransactions();
public boolean supportsMultiThreadedTransactions();
public long getEstimatedRowCount(Table table);
}