use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.
the class DefaultDataBaseBuilder method buildIndex.
protected void buildIndex(DatabaseMetaData metaData, Table table, ResultSet rs, Map<Object, Object> indices) throws SQLException {
int indexType = rs.getInt(7);
String indexName = rs.getString(6);
if (indexType != 0) {
Index index = (Index) indices.get(indexName);
if (index == null) {
index = CreationUtils.createIndex(table, indexName);
String indexQualifier = rs.getString(5);
index.setQualifier(indexQualifier);
index.setUnique(!(rs.getBoolean(4)));
indices.put(indexName, index);
}
String indexColumnName = rs.getString(9);
Column indexColumn = queries.getColumn(table, indexColumnName);
if (indexColumn != null) {
IndexElement element = CreationUtils.createIndexElement(index);
element.setColumn(indexColumn);
String order = rs.getString(10);
Boolean inAscendingOrder = isInAscendingOrder(metaData, order, table, index, indexColumnName);
if (inAscendingOrder == null) {
element.setAsc(true);
} else {
element.setAsc(inAscendingOrder);
}
} else {
System.err.println("indexColumn not found -> table=" + table.getName() + "indexName=" + indexName + " indexColumnName=" + indexColumnName + " indexColumn=" + indexColumn + " qualifier=" + rs.getString(5));
}
}
}
use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.
the class DefaultDataBaseBuilder method buildColumn.
protected void buildColumn(DatabaseMetaData metaData, TableContainer owner, NativeTypesLibrary nativeTypesLibrary, AbstractTable table, ResultSet rs) throws SQLException {
if (table instanceof View) {
return;
}
String columnName = rs.getString(4);
Column column = CreationUtils.createColumn(table, columnName);
// TODO optimize search
String columnType = rs.getString(6);
int columnSize = rs.getInt(7);
int decimalDigits = rs.getInt(9);
TypeInstance typeInstance = createTypeInstance(nativeTypesLibrary, columnType, columnSize, decimalDigits);
column.setType(typeInstance);
String defaultValue = rs.getString(13);
if (defaultValue == null || defaultValue.length() == 0) {
defaultValue = "";
}
column.setDefaultValue(defaultValue.trim());
if (rs.getMetaData().getColumnCount() >= 23) {
column.setAutoincrement("YES".equals(rs.getString(23)));
}
String columnComments = getRealComments(getColumnComments(metaData, rs, owner.getName(), table.getName(), columnName));
if (columnComments == null || columnComments.length() == 0) {
column.setComments(null);
} else {
column.setComments(columnComments);
}
String isNullableValue = rs.getString(18);
boolean isNullable = false;
// Fix Oracle compatibility
if (isNullableValue.equals("YES")) {
isNullable = true;
} else if (isNullableValue.equals("NO")) {
isNullable = false;
} else {
isNullable = rs.getBoolean(18);
}
column.setNullable(isNullable);
buildColumnConstraint(metaData, owner, column);
}
use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.
the class H2DataBaseBuilder method buildSequences.
private void buildSequences(DatabaseMetaData metaData, TableContainer owner) {
ResultSet rs = null;
PreparedStatement pstmt = null;
try {
// TODO récupérer cycle avec IS_CYCLE
// TODO récupérer Cache
PreparedStatement psmt = metaData.getConnection().prepareStatement("SELECT SEQUENCE_NAME, INCREMENT, MIN_VALUE, MAX_VALUE, CURRENT_VALUE " + "FROM INFORMATION_SCHEMA.SEQUENCES");
rs = psmt.executeQuery();
while (rs.next()) {
String name = rs.getString(1);
BigInteger increment = getBigIntValueForColumn(rs, 2);
BigInteger minValue = getBigIntValueForColumn(rs, 3);
BigInteger maxValue = getBigIntValueForColumn(rs, 4);
BigInteger start = getBigIntValueForColumn(rs, 5);
Sequence sequence = CreationUtils.createSequence(owner, name, increment, minValue, maxValue, start, false, null);
// Look for a table that could correspond to the sequence
if (name.endsWith("_SEQ")) {
String tableName = name.substring(0, name.length() - "_SEQ".length());
AbstractTable abstractTable = queries.getTable(tableName);
if (abstractTable != null && abstractTable instanceof Table) {
Table table = (Table) abstractTable;
if (table.getPrimaryKey() != null && table.getPrimaryKey().getColumns().size() == 1) {
Column column = table.getPrimaryKey().getColumns().get(0);
column.setSequence(sequence);
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
JdbcUtils.closeStatement(pstmt);
JdbcUtils.closeResultSet(rs);
}
}
use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.
the class PostGresDataBaseBuilder method buildSequences.
private void buildSequences(TableContainer owner) {
ResultSet rs = null;
PreparedStatement pstmt = null;
try {
PreparedStatement psmt = metaData.getConnection().prepareStatement("SELECT s.SEQUENCE_NAME, s.INCREMENT, s.MINIMUM_VALUE, s.MAXIMUM_VALUE, s.START_VALUE, s.CYCLE_OPTION , pg_catalog.obj_description(c.oid) " + "FROM INFORMATION_SCHEMA.SEQUENCES s " + "LEFT JOIN PG_CATALOG.pg_class c " + "ON c.relname = s.SEQUENCE_NAME " + "AND c.relkind = 'S' " + "WHERE s.SEQUENCE_SCHEMA = '" + schemaName + "'");
rs = psmt.executeQuery();
while (rs.next()) {
String name = rs.getString(1);
BigInteger increment = getBigIntValueForColumn(rs, 2);
BigInteger minValue = getBigIntValueForColumn(rs, 3);
BigInteger maxValue = getBigIntValueForColumn(rs, 4);
BigInteger start = getBigIntValueForColumn(rs, 5);
String cycleAsString = rs.getString(6);
boolean cycle = "YES".equals(cycleAsString);
String comment = rs.getString(7);
// Retrieve CACHE value
BigInteger cacheValue = null;
PreparedStatement psmtCache = metaData.getConnection().prepareStatement("SELECT CACHE_VALUE FROM " + schemaName + "." + name);
ResultSet rsCache = psmtCache.executeQuery();
if (rsCache.next()) {
cacheValue = getBigIntValueForColumn(rsCache, 1);
}
Sequence sequence = CreationUtils.createSequence(owner, name, increment, minValue, maxValue, start, cycle, cacheValue);
sequence.setComments(comment);
// Look for a table that could correspond to the sequence
if (name.endsWith("_seq")) {
String tableName = name.substring(0, name.length() - "_seq".length());
AbstractTable abstractTable = queries.getTable(tableName);
if (abstractTable != null && abstractTable instanceof Table) {
Table table = (Table) abstractTable;
if (table.getPrimaryKey() != null && table.getPrimaryKey().getColumns().size() == 1) {
Column column = table.getPrimaryKey().getColumns().get(0);
column.setSequence(sequence);
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
JdbcUtils.closeStatement(pstmt);
JdbcUtils.closeResultSet(rs);
}
}
use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.
the class SQLServerDataBaseBuilder method buildColumn.
@Override
protected void buildColumn(DatabaseMetaData metaData, TableContainer owner, NativeTypesLibrary nativeTypesLibrary, AbstractTable table, ResultSet rs) throws SQLException {
String columnName = rs.getString(4);
Column column = CreationUtils.createColumn(table, columnName);
String columnType = rs.getString(6);
int indexIdentity = columnType.indexOf("identity");
Identity identity = null;
if (indexIdentity != -1) {
identity = getIdentity(columnType);
columnType = columnType.substring(0, indexIdentity).trim();
}
int columnSize = rs.getInt(7);
int decimalDigits = rs.getInt(9);
TypeInstance typeInstance = createTypeInstance(nativeTypesLibrary, columnType, columnSize, decimalDigits);
column.setType(typeInstance);
if (identity != null) {
// buildSequence(owner, table, column, identity);
column.setAutoincrement(true);
}
String defaultValue = rs.getString(13);
if (defaultValue == null || defaultValue.length() == 0) {
defaultValue = "";
}
column.setDefaultValue(defaultValue.trim());
String columnComments = getRealComments(getColumnComments(metaData, rs, owner.getName(), table.getName(), columnName));
if (columnComments == null || columnComments.length() == 0) {
column.setComments(null);
} else {
column.setComments(columnComments);
}
String isNullableValue = rs.getString(18);
boolean isNullable = false;
// Fix Oracle compatibility
if (isNullableValue.equals("YES")) {
isNullable = true;
} else if (isNullableValue.equals("NO")) {
isNullable = false;
} else {
isNullable = rs.getBoolean(18);
}
column.setNullable(isNullable);
buildColumnConstraint(metaData, owner, column);
}
Aggregations