/** * Changes the "allows null" state of this column. * * @param allowsNull if true, this column allows nulls * @throws SQLException if the change fails */ @SuppressWarnings("unchecked") public void setAllowsNull(boolean allowsNull) throws SQLException { EOSchemaSynchronization schemaSynchronization = _table.database().synchronizationFactory(); NSArray<EOSQLExpression> expressions = schemaSynchronization.statementsToModifyColumnNullRule( name(), _table.name(), allowsNull, (NSDictionary<String, String>) NSDictionary.EmptyDictionary); ERXMigrationDatabase._ensureNotEmpty(expressions, "modify allows null", true); ERXJDBCUtilities.executeUpdateScript( _table.database().adaptorChannel(), ERXMigrationDatabase._stringsForExpressions(expressions)); }
/** * Returns an array of EOSQLExpressions for deleting this column. * * @return an array of EOSQLExpressions for deleting this column */ @SuppressWarnings("unchecked") public NSArray<EOSQLExpression> _deleteExpressions() { EOSchemaSynchronization schemaSynchronization = _table.database().synchronizationFactory(); NSArray<EOSQLExpression> expressions = schemaSynchronization.statementsToDeleteColumnNamed( name(), _table.name(), (NSDictionary<String, String>) NSDictionary.EmptyDictionary); ERXMigrationDatabase._ensureNotEmpty(expressions, "delete column", true); return expressions; }
/** * Returns an array of EOSQLExpressions for creating this column. * * @return an array of EOSQLExpressions for creating this column */ @SuppressWarnings("unchecked") public NSArray<EOSQLExpression> _createExpressions() { EOSchemaSynchronization schemaSynchronization = _table.database().synchronizationFactory(); NSArray<EOSQLExpression> expressions = schemaSynchronization.statementsToInsertColumnForAttribute( _newAttribute(), (NSDictionary<String, String>) NSDictionary.EmptyDictionary); ERXMigrationDatabase._ensureNotEmpty(expressions, "add column", true); return expressions; }
/** * Executes the SQL operations to create this column. * * @throws SQLException if the creation fails */ public void create() throws SQLException { if (_new) { ERXJDBCUtilities.executeUpdateScript( _table.database().adaptorChannel(), ERXMigrationDatabase._stringsForExpressions(_createExpressions())); _new = false; } else { ERXMigrationDatabase.log.warn( "You called .create() on the column '" + _name + "', but it was already created."); } }
/** * Changes the data type of this column. * * @param jdbcType the new JDBC type of the column (see java.sql.Types) * @param scale the new scale * @param precision the new precision * @param width the new width * @param options the options to use for conversion (or null) * @throws SQLException if the change fails */ @SuppressWarnings("unchecked") public void setDataType(int jdbcType, int scale, int precision, int width, NSDictionary options) throws SQLException { JDBCAdaptor adaptor = (JDBCAdaptor) _table.database().adaptor(); String externalType = ERXSQLHelper.newSQLHelper(adaptor).externalTypeForJDBCType(adaptor, jdbcType); EOSchemaSynchronization schemaSynchronization = _table.database().synchronizationFactory(); NSArray<EOSQLExpression> expressions = schemaSynchronization.statementsToConvertColumnType( _name, _table.name(), null, new _ColumnType(externalType, scale, precision, width), options); ERXMigrationDatabase._ensureNotEmpty(expressions, "convert column type", true); ERXJDBCUtilities.executeUpdateScript( _table.database().adaptorChannel(), ERXMigrationDatabase._stringsForExpressions(expressions)); _jdbcType = jdbcType; _scale = scale; _precision = precision; _width = width; }
/** * Executes the SQL operations to rename this column. * * @param newName the new name of this column * @throws SQLException if the rename fails */ public void renameTo(String newName) throws SQLException { ERXJDBCUtilities.executeUpdateScript( _table.database().adaptorChannel(), ERXMigrationDatabase._stringsForExpressions(_renameToExpressions(newName))); }
/** * Executes the SQL operations to delete this column. * * @throws SQLException if the delete fails */ public void delete() throws SQLException { ERXJDBCUtilities.executeUpdateScript( _table.database().adaptorChannel(), ERXMigrationDatabase._stringsForExpressions(_deleteExpressions())); _table._columnDeleted(this); }