drag n drop bounding characters (pgsql fix) (#14376)

* specifies object handling for all current providers

* implements the same for column dragndrop

* adjusted test

* adds pgsql provider name constant
This commit is contained in:
Drew Skwiers-Koballa
2021-03-05 15:22:47 -08:00
committed by GitHub
parent 1d60287795
commit 733c3628a1
3 changed files with 41 additions and 7 deletions

View File

@@ -9,7 +9,7 @@ import { IConnectionManagementService } from 'sql/platform/connection/common/con
import { ITree, IDragAndDrop, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree';
import { DragMouseEvent } from 'vs/base/browser/mouseEvent';
import { TreeUpdateUtils } from 'sql/workbench/services/objectExplorer/browser/treeUpdateUtils';
import { UNSAVED_GROUP_ID } from 'sql/platform/connection/common/constants';
import { UNSAVED_GROUP_ID, mssqlProviderName, pgsqlProviderName } from 'sql/platform/connection/common/constants';
import { DataTransfers, IDragAndDropData } from 'vs/base/browser/dnd';
import { TreeNode } from 'sql/workbench/services/objectExplorer/common/treeNode';
import { AsyncServerTree } from 'sql/workbench/services/objectExplorer/browser/asyncServerTree';
@@ -102,18 +102,29 @@ export class ServerTreeDragAndDrop implements IDragAndDrop {
let providerName = this.getProviderNameFromElement(element);
if (providerName === 'KUSTO') {
finalString = element.nodeTypeId !== 'Function' && escapedName.indexOf(' ') > 0 ? `[@"${escapedName}"]` : escapedName;
} else {
} else if (providerName === mssqlProviderName) {
finalString = escapedSchema ? `[${escapedSchema}].[${escapedName}]` : `[${escapedName}]`;
} else if (providerName === pgsqlProviderName) {
finalString = element.metadata.schema ? `"${element.metadata.schema}"."${element.metadata.name}"` : `"${element.metadata.name}"`;
} else {
finalString = element.metadata.schema ? `${element.metadata.schema}.${element.metadata.name}` : `${element.metadata.name}`;
}
originalEvent.dataTransfer.setData(DataTransfers.RESOURCES, JSON.stringify([`${element.nodeTypeId}:${element.id}?${finalString}`]));
}
if (supportsFolderNodeNameDrop(element.nodeTypeId, element.label)) {
// get children
let returnString = '';
let providerName = this.getProviderNameFromElement(element);
for (let child of element.children) {
escapedSchema = escapeString(child.metadata.schema);
escapedName = escapeString(child.metadata.name);
finalString = escapedSchema ? `[${escapedSchema}].[${escapedName}]` : `[${escapedName}]`;
if (providerName === mssqlProviderName) {
finalString = escapedSchema ? `[${escapedSchema}].[${escapedName}]` : `[${escapedName}]`;
} else if (providerName === pgsqlProviderName) {
finalString = child.metadata.schema ? `"${child.metadata.schema}"."${child.metadata.name}"` : `"${child.metadata.name}"`;
} else {
finalString = child.metadata.schema ? `${child.metadata.schema}.${child.metadata.name}` : `${child.metadata.name}`;
}
returnString = returnString ? `${returnString},${finalString}` : `${finalString}`;
}

View File

@@ -14,7 +14,7 @@ import { ServerTreeDragAndDrop } from 'sql/workbench/services/objectExplorer/bro
import { TestTree } from 'sql/workbench/test/treeMock';
import { ConnectionProviderProperties } from 'sql/platform/capabilities/common/capabilitiesService';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { mssqlProviderName } from 'sql/platform/connection/common/constants';
import { mssqlProviderName, pgsqlProviderName } from 'sql/platform/connection/common/constants';
import { TreeNode } from 'sql/workbench/services/objectExplorer/common/treeNode';
@@ -48,9 +48,29 @@ suite('SQL Drag And Drop Controller tests', () => {
id: 'd936bb32-422b-49c3-963f-ae9532d63dc5'
};
let iConnectionProfileId_pgsql: IConnectionProfile = {
connectionName: 'new name',
serverName: 'new server',
databaseName: 'database',
userName: 'user',
password: 'password',
authenticationType: '',
savePassword: true,
groupFullName: 'g2/g2-2',
groupId: 'group id',
getOptionsKey: undefined!,
matches: undefined!,
providerName: pgsqlProviderName,
options: {},
saveProfile: true,
id: 'd936bb32-422b-49c3-963f-ae9532d63dc6'
};
let connectionProfileId = new ConnectionProfile(capabilitiesService, iConnectionProfileId);
let connectionProfileArray = [connectionProfileId];
let connectionProfileId_pgsql = new ConnectionProfile(capabilitiesService, iConnectionProfileId_pgsql);
let connectionProfileArray = [connectionProfileId, connectionProfileId_pgsql];
let connectionProfileGroupId = new ConnectionProfileGroup('name', undefined, 'd936bb32-422b-49c3-963f-ae9532d63dc5', 'color', 'description');
connectionProfileGroupId.addConnections([connectionProfileId_pgsql]);
let connectionProfileGroupArray = [connectionProfileGroupId];
let treeNode = new TreeNode('Column', 'label', undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
let treeNodeArray = [treeNode];
@@ -79,8 +99,10 @@ suite('SQL Drag And Drop Controller tests', () => {
});
test('able to get DragURI', async () => {
let uri = serverTreeDragAndDrop.getDragURI(testTree, connectionProfileId);
assert.equal(connectionProfileId.id, uri);
connectionProfileArray.forEach(connectionProfile => {
let uri = serverTreeDragAndDrop.getDragURI(testTree, connectionProfile);
assert.equal(connectionProfile.id, uri);
});
let uriGroup = serverTreeDragAndDrop.getDragURI(testTree, connectionProfileGroupId);
assert.equal(connectionProfileGroupId.id, uriGroup);