private SQLCompletionProposal makeProposalsFromObject( DBPNamedObject object, @Nullable DBPImage objectIcon) { String objectName = DBUtils.getObjectFullName(object); StringBuilder info = new StringBuilder(); PropertyCollector collector = new PropertyCollector(object, false); collector.collectProperties(); for (DBPPropertyDescriptor descriptor : collector.getPropertyDescriptors2()) { Object propValue = collector.getPropertyValue(descriptor.getId()); if (propValue == null) { continue; } String propString = propValue.toString(); info.append("<b>").append(descriptor.getDisplayName()).append(": </b>"); info.append(propString); info.append("<br>"); } boolean isSingleObject = true; String replaceString = null; DBPDataSource dataSource = editor.getDataSource(); if (dataSource != null) { // If we replace short name with referenced object // and current active schema (catalog) is not this object's container then // replace with full qualified name if (!getPreferences().getBoolean(SQLPreferenceConstants.PROPOSAL_SHORT_NAME) && object instanceof DBSObjectReference) { if (wordDetector.getFullWord().indexOf(editor.getSyntaxManager().getStructSeparator()) == -1) { DBSObjectReference structObject = (DBSObjectReference) object; if (structObject.getContainer() != null) { DBSObject selectedObject = getSelectedObject(dataSource); if (selectedObject != structObject.getContainer()) { replaceString = DBUtils.getFullQualifiedName(dataSource, structObject.getContainer(), object); isSingleObject = false; } } } } if (replaceString == null) { replaceString = DBUtils.getQuotedIdentifier(dataSource, object.getName()); } } else { replaceString = DBUtils.getObjectShortName(object); } return createCompletionProposal( replaceString, objectName, info.toString(), objectIcon, isSingleObject, object); }
@Override public void appendModifier( OBJECT_TYPE column, StringBuilder sql, DBECommandAbstract<OBJECT_TYPE> command) { if (column.isRequired()) { sql.append(" NOT NULL"); // $NON-NLS-1$ } }
@Override public void appendModifier( OBJECT_TYPE column, StringBuilder sql, DBECommandAbstract<OBJECT_TYPE> command) { String defaultValue = CommonUtils.toString(column.getDefaultValue()); if (!CommonUtils.isEmpty(defaultValue)) { boolean useQuotes = column.getDataKind() == DBPDataKind.STRING || column.getDataKind() == DBPDataKind.DATETIME; if (useQuotes && defaultValue.trim().startsWith(QUOTE)) { useQuotes = false; } sql.append(" DEFAULT "); // $NON-NLS-1$ if (useQuotes) sql.append(QUOTE); sql.append(defaultValue); if (useQuotes) sql.append(QUOTE); } }
@Override public void appendModifier( OBJECT_TYPE column, StringBuilder sql, DBECommandAbstract<OBJECT_TYPE> command) { final String typeName = column.getTypeName(); DBPDataKind dataKind = column.getDataKind(); final DBSDataType dataType = findDataType(column.getDataSource(), typeName); sql.append(' ').append(typeName); if (dataType == null) { log.debug( "Type name '" + typeName + "' is not supported by driver"); //$NON-NLS-1$ //$NON-NLS-2$ } else { dataKind = dataType.getDataKind(); } String modifiers = SQLUtils.getColumnTypeModifiers(column, typeName, dataKind); if (modifiers != null) { sql.append(modifiers); } }
@Override protected StringBuilder getNestedDeclaration( TABLE_TYPE owner, DBECommandAbstract<OBJECT_TYPE> command) { OBJECT_TYPE column = command.getObject(); // Create column String columnName = DBUtils.getQuotedIdentifier(column.getDataSource(), column.getName()); if (command instanceof SQLObjectEditor.ObjectRenameCommand) { columnName = ((ObjectRenameCommand) command).getNewName(); } StringBuilder decl = new StringBuilder(40); decl.append(columnName); for (ColumnModifier modifier : getSupportedModifiers()) { modifier.appendModifier(column, decl, command); } return decl; }
@Override public void appendModifier( OBJECT_TYPE column, StringBuilder sql, DBECommandAbstract<OBJECT_TYPE> command) { sql.append(column.isRequired() ? " NOT NULL" : " NULL"); }