提交 87cbd061 编写于 作者: J jurgen

Default values in base JDBC model

Oracle alter column fix
上级 3450ef71
......@@ -225,6 +225,7 @@ meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.name.name=Column N
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.typeName.name=Data Type
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.maxLength.name=Length
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.required.name=Not Null
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.defaultValue.name=Default
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableConstraint.name.name=Name
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.referencedTable.name=Ref Table
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.deleteRule.name=On Delete
......
......@@ -226,6 +226,7 @@ meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.name.name=\u0418\u
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.typeName.name=\u0422\u0438\u043F \u0414\u0430\u043D\u043D\u044B\u0445
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.maxLength.name=\u0414\u043B\u0438\u043D\u0430
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.required.name=\u041D\u0435 Null
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableColumn.defaultValue.name=\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableConstraint.name.name=\u0418\u043C\u044F
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.referencedTable.name=\u0421\u0441\u044B\u043B.\u0442\u0430\u0431\u043B\u0438\u0446\u0430
meta.org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCTableForeignKey.deleteRule.name=\u041F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438
......
......@@ -42,6 +42,7 @@ public abstract class JDBCTableColumnManager<OBJECT_TYPE extends JDBCTableColumn
extends JDBCObjectEditor<OBJECT_TYPE, TABLE_TYPE>
{
public static final long DDL_FEATURE_OMIT_COLUMN_CLAUSE_IN_DROP = 1;
public static final String QUOTE = "'";
/*
@Override
......@@ -145,6 +146,25 @@ public abstract class JDBCTableColumnManager<OBJECT_TYPE extends JDBCTableColumn
decl.append(" NOT NULL"); //$NON-NLS-1$
}
String defaultValue = CommonUtils.toString(column.getDefaultValue());
if (!CommonUtils.isEmpty(defaultValue)) {
boolean useQuotes = true;
try {
Double.parseDouble(defaultValue);
useQuotes = false;
}
catch (NumberFormatException e) {
// not a number
}
if (useQuotes && defaultValue.trim().startsWith(QUOTE)) {
useQuotes = false;
}
decl.append(" DEFAULT "); //$NON-NLS-1$
if (useQuotes) decl.append(QUOTE);
decl.append(defaultValue);
if (useQuotes) decl.append(QUOTE);
}
return decl;
}
......
......@@ -38,6 +38,7 @@ public abstract class JDBCTableColumn<TABLE_TYPE extends JDBCTable> extends JDBC
private final TABLE_TYPE table;
private boolean persisted;
private String defaultValue;
protected JDBCTableColumn(TABLE_TYPE table, boolean persisted)
{
......@@ -45,9 +46,10 @@ public abstract class JDBCTableColumn<TABLE_TYPE extends JDBCTable> extends JDBC
this.persisted = persisted;
}
protected JDBCTableColumn(TABLE_TYPE table, boolean persisted, String name, String typeName, int valueType, int ordinalPosition, long maxLength, int scale, int precision, boolean nullable)
protected JDBCTableColumn(TABLE_TYPE table, boolean persisted, String name, String typeName, int valueType, int ordinalPosition, long maxLength, int scale, int precision, boolean nullable, String defaultValue)
{
super(name, typeName, valueType, ordinalPosition, maxLength, scale, precision, nullable);
this.defaultValue = defaultValue;
this.table = table;
this.persisted = persisted;
}
......@@ -92,6 +94,18 @@ public abstract class JDBCTableColumn<TABLE_TYPE extends JDBCTable> extends JDBC
return super.isRequired();
}
@Property(viewable = true, editable = true, order = 70)
@Override
public String getDefaultValue()
{
return defaultValue;
}
public void setDefaultValue(String defaultValue)
{
this.defaultValue = defaultValue;
}
@Override
public boolean isPersisted()
{
......
......@@ -388,19 +388,44 @@ public class ObjectPropertyDescriptor extends ObjectAttributeDescriptor implemen
private String getLocalizedString(String string, String type, String defaultValue) {
if (Property.DEFAULT_LOCAL_STRING.equals(string)) {
Class<?> propOwner = getGetter().getDeclaringClass();
Method getter = getGetter();
String propertyName = BeanUtils.getPropertyNameFromGetter(getter.getName());
Class<?> propOwner = getter.getDeclaringClass();
Bundle bundle = FrameworkUtil.getBundle(propOwner);
ResourceBundle resourceBundle = Platform.getResourceBundle(bundle);
String messageID = "meta." + propOwner.getName() + "." + BeanUtils.getPropertyNameFromGetter(getGetter().getName()) + "." + type;
String result;
String messageID = "meta." + propOwner.getName() + "." + propertyName + "." + type;
String result = null;
try {
result = resourceBundle.getString(messageID);
} catch (Exception e) {
// Try to find the same property in parent classes
for (Class parent = getter.getDeclaringClass().getSuperclass(); parent != Object.class; parent = parent.getSuperclass()) {
try {
Method parentGetter = parent.getMethod(getter.getName(), getter.getParameterTypes());
Class<?> parentOwner = parentGetter.getDeclaringClass();
Bundle parentBundle = FrameworkUtil.getBundle(parentOwner);
if (parentBundle == null || parentBundle == bundle) {
continue;
}
ResourceBundle parentResourceBundle = Platform.getResourceBundle(parentBundle);
messageID = "meta." + parentOwner.getName() + "." + propertyName + "." + type;
try {
result = parentResourceBundle.getString(messageID);
break;
} catch (Exception e1) {
// Just skip it
}
} catch (NoSuchMethodException e1) {
// Just skip it
}
}
if (result == null) {
if (type.equals(Property.RESOURCE_TYPE_NAME)) {
log.warn("Resource '" + messageID + "' not found in bundle " + bundle.getSymbolicName());
}
return defaultValue;
}
}
if (!result.equals(messageID)) {
return result;
}
......
......@@ -33,7 +33,6 @@ public class GenericTableColumn extends JDBCTableColumn<GenericTable> implements
{
private int radix;
private String remarks;
private String defaultValue;
private int sourceType;
private long charLength;
private boolean autoIncrement;
......@@ -69,9 +68,9 @@ public class GenericTableColumn extends JDBCTableColumn<GenericTable> implements
columnSize,
scale,
precision,
notNull);
notNull,
defaultValue);
this.sourceType = sourceType;
this.defaultValue = defaultValue;
this.charLength = charLength;
this.autoIncrement = autoIncrement;
this.remarks = remarks;
......@@ -84,12 +83,6 @@ public class GenericTableColumn extends JDBCTableColumn<GenericTable> implements
return getTable().getDataSource();
}
@Override
public String getDefaultValue()
{
return defaultValue;
}
public int getSourceType()
{
return sourceType;
......
......@@ -131,7 +131,6 @@ meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.typeName.name=Data Type
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.maxLength.name=Length
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.required.name=Not Null
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.sequence.name=Auto Increment
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.defaultValue.name=Default
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.keyType.name=Key
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.charset.name=Charset
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.collation.name=Collation
......
......@@ -121,7 +121,6 @@ meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.typeName.name=\u0422\u04
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.maxLength.name=\u0414\u043B\u0438\u043D\u0430
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.required.name=\u041D\u0435 NULL
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.sequence.name=\u0410\u0432\u0442\u043E-\u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.defaultValue.name=\u041F\u043E-\u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.keyType.name=\u041A\u043B\u044E\u0447
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.charset.name=\u041D\u0430\u0431\u043E\u0440 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432
meta.org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn.comment.name=\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439
......
......@@ -56,9 +56,6 @@ public class MySQLTableColumnManager extends JDBCTableColumnManager<MySQLTableCo
if (column.isSequence()) {
decl.append(" AUTO_INCREMENT"); //$NON-NLS-1$
}
if (!CommonUtils.isEmpty(column.getDefaultValue())) {
decl.append(" DEFAULT '").append(column.getDefaultValue()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
}
if (!CommonUtils.isEmpty(column.getComment())) {
decl.append(" COMMENT '").append(column.getComment()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
}
......
......@@ -66,7 +66,6 @@ public class MySQLTableColumn extends JDBCTableColumn<MySQLTableBase> implements
}
private String comment;
private String defaultValue;
private long charLength;
private boolean autoIncrement;
private MySQLCollation collation;
......@@ -117,7 +116,7 @@ public class MySQLTableColumn extends JDBCTableColumn<MySQLTableBase> implements
setRequired(!"YES".equals(JDBCUtils.safeGetString(dbResult, MySQLConstants.COL_IS_NULLABLE)));
setScale(JDBCUtils.safeGetInt(dbResult, MySQLConstants.COL_NUMERIC_SCALE));
setPrecision(JDBCUtils.safeGetInt(dbResult, MySQLConstants.COL_NUMERIC_PRECISION));
this.defaultValue = JDBCUtils.safeGetString(dbResult, MySQLConstants.COL_COLUMN_DEFAULT);
setDefaultValue(JDBCUtils.safeGetString(dbResult, MySQLConstants.COL_COLUMN_DEFAULT));
this.collation = getDataSource().getCollation(JDBCUtils.safeGetString(dbResult, MySQLConstants.COL_COLLATION_NAME));
String extra = JDBCUtils.safeGetString(dbResult, MySQLConstants.COL_COLUMN_EXTRA);
......@@ -184,12 +183,7 @@ public class MySQLTableColumn extends JDBCTableColumn<MySQLTableBase> implements
@Property(viewable = true, editable = true, updatable = true, order = 70)
public String getDefaultValue()
{
return defaultValue;
}
public void setDefaultValue(String defaultValue)
{
this.defaultValue = defaultValue;
return super.getDefaultValue();
}
@Override
......
......@@ -262,8 +262,6 @@ meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.name=Scale
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.description=Digits to the right of the decimal point in a number
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.name=Not Null
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.description=Indicates whether a column allows NULLs
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.defaultValue.name=Default
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.defaultValue.description=Default value for the column
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.name=Comment
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.description=Column comment
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintBase.constraintType.name=Type
......
......@@ -254,8 +254,6 @@ meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.name=\u041C\u043
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.scale.description=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0446\u0438\u0444\u0440 \u0432 \u0434\u0435\u0441\u044F\u0442\u0438\u0447\u043D\u043E\u0439 \u0447\u0430\u0441\u0442\u0438 \u0447\u0438\u0441\u043B\u0430
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.name=\u041D\u0435 NULL
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.required.description=\u041E\u0431\u043E\u0437\u043D\u0430\u0447\u0430\u0435\u0442, \u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B \u043B\u0438 \u043D\u0443\u043B\u0435\u0432\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0432 \u043A\u043E\u043B\u043E\u043D\u043A\u0435
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.defaultValue.name=\u041F\u043E-\u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.defaultValue.description=\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E-\u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u0434\u043B\u044F \u043A\u043E\u043B\u043E\u043D\u043A\u0438
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.name=\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableColumn.comment.description=\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0438
meta.org.jkiss.dbeaver.ext.oracle.model.OracleTableConstraintBase.constraintType.name=\u0422\u0438\u043F
......
......@@ -54,15 +54,9 @@ public class OracleTableColumnManager extends JDBCTableColumnManager<OracleTable
{
StringBuilder decl = super.getNestedDeclaration(owner, command);
final OracleTableColumn column = command.getObject();
if (column.isSequence()) {
decl.append(" AUTO_INCREMENT"); //$NON-NLS-1$
}
if (!CommonUtils.isEmpty(column.getDefaultValue())) {
decl.append(" DEFAULT '").append(column.getDefaultValue()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
}
if (!CommonUtils.isEmpty(column.getComment())) {
decl.append(" COMMENT '").append(column.getComment()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
}
// if (!CommonUtils.isEmpty(column.getComment())) {
// decl.append(" COMMENT '").append(column.getComment()).append("'"); //$NON-NLS-1$ //$NON-NLS-2$
// }
return decl;
}
......@@ -89,6 +83,6 @@ public class OracleTableColumnManager extends JDBCTableColumnManager<OracleTable
return new IDatabasePersistAction[] {
new AbstractDatabasePersistAction(
OracleMessages.edit_oracle_table_column_manager_action_alter_table_column,
"ALTER TABLE " + column.getTable().getFullQualifiedName() + " MODIFY COLUMN " + getNestedDeclaration(column.getTable(), command))}; //$NON-NLS-1$ //$NON-NLS-2$
"ALTER TABLE " + column.getTable().getFullQualifiedName() + " MODIFY " + getNestedDeclaration(column.getTable(), command))}; //$NON-NLS-1$ //$NON-NLS-2$
}
}
......@@ -45,7 +45,6 @@ public class OracleTableColumn extends JDBCTableColumn<OracleTableBase> implemen
private OracleDataType type;
private OracleDataTypeModifier typeMod;
private String comment;
private String defaultValue;
private boolean hidden;
public OracleTableColumn(OracleTableBase table)
......@@ -61,8 +60,8 @@ public class OracleTableColumn extends JDBCTableColumn<OracleTableBase> implemen
{
super(table, true);
this.name = JDBCUtils.safeGetString(dbResult, "COLUMN_NAME");
this.ordinalPosition = JDBCUtils.safeGetInt(dbResult, "COLUMN_ID");
setName(JDBCUtils.safeGetString(dbResult, "COLUMN_NAME"));
setOrdinalPosition(JDBCUtils.safeGetInt(dbResult, "COLUMN_ID"));
this.typeName = JDBCUtils.safeGetString(dbResult, "DATA_TYPE");
this.type = OracleDataType.resolveDataType(
monitor,
......@@ -74,11 +73,11 @@ public class OracleTableColumn extends JDBCTableColumn<OracleTableBase> implemen
this.typeName = type.getName();
this.valueType = type.getValueType();
}
this.maxLength = JDBCUtils.safeGetLong(dbResult, "DATA_LENGTH");
this.required = !"Y".equals(JDBCUtils.safeGetString(dbResult, "NULLABLE"));
this.scale = JDBCUtils.safeGetInt(dbResult, "DATA_SCALE");
this.precision = JDBCUtils.safeGetInt(dbResult, "DATA_PRECISION");
this.defaultValue = JDBCUtils.safeGetString(dbResult, "DATA_DEFAULT");
setMaxLength(JDBCUtils.safeGetLong(dbResult, "DATA_LENGTH"));
setRequired(!"Y".equals(JDBCUtils.safeGetString(dbResult, "NULLABLE")));
setScale(JDBCUtils.safeGetInt(dbResult, "DATA_SCALE"));
setPrecision(JDBCUtils.safeGetInt(dbResult, "DATA_PRECISION"));
setDefaultValue(JDBCUtils.safeGetString(dbResult, "DATA_DEFAULT"));
this.comment = JDBCUtils.safeGetString(dbResult, "COMMENTS");
this.hidden = JDBCUtils.safeGetBoolean(dbResult, "HIDDEN_COLUMN", OracleConstants.YES);
}
......@@ -142,11 +141,11 @@ public class OracleTableColumn extends JDBCTableColumn<OracleTableBase> implemen
return super.isRequired();
}
@Override
@Property(viewable = true, editable = true, updatable = true, order = 70)
@Override
public String getDefaultValue()
{
return defaultValue;
return super.getDefaultValue();
}
@Override
......@@ -155,11 +154,6 @@ public class OracleTableColumn extends JDBCTableColumn<OracleTableBase> implemen
return false;
}
public void setDefaultValue(String defaultValue)
{
this.defaultValue = defaultValue;
}
@Property(viewable = true, editable = true, updatable = true, order = 100)
public String getComment()
{
......
......@@ -20,6 +20,6 @@ meta.org.jkiss.dbeaver.ext.wmi.model.WMIClass.superClass.name=Super Class
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClass.name.name=\u0418\u043C\u044F
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClass.path.name=\u041F\u0443\u0442\u044C
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClassAttribute.typeName.name=\u0422\u0438\u043F
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClassAttribute.defaultValue.name=\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E-\u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClassAttribute.defaultValue.name=\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
meta.org.jkiss.dbeaver.ext.wmi.model.WMIClassElement.name.name=\u0418\u043C\u044F
meta.org.jkiss.dbeaver.ext.wmi.model.WMINamespace.name.name=\u0418\u043C\u044F
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册