mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-27 01:25:36 -05:00
remove circular dependency between server group and connection management (#6916)
This commit is contained in:
@@ -21,6 +21,7 @@ import { ObjectExplorerActionsContext } from 'sql/workbench/parts/objectExplorer
|
||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
|
||||
import { UNSAVED_GROUP_ID } from 'sql/platform/connection/common/constants';
|
||||
import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController';
|
||||
|
||||
export class RefreshAction extends Action {
|
||||
|
||||
@@ -173,14 +174,14 @@ export class AddServerGroupAction extends Action {
|
||||
constructor(
|
||||
id: string,
|
||||
label: string,
|
||||
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService
|
||||
@IServerGroupController private readonly serverGroupController: IServerGroupController
|
||||
) {
|
||||
super(id, label);
|
||||
this.class = 'add-server-group-action';
|
||||
}
|
||||
|
||||
public run(): Promise<boolean> {
|
||||
this._connectionManagementService.showCreateServerGroupDialog();
|
||||
this.serverGroupController.showCreateGroupDialog();
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
}
|
||||
@@ -196,14 +197,14 @@ export class EditServerGroupAction extends Action {
|
||||
id: string,
|
||||
label: string,
|
||||
private _group: ConnectionProfileGroup,
|
||||
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService
|
||||
@IServerGroupController private readonly serverGroupController: IServerGroupController
|
||||
) {
|
||||
super(id, label);
|
||||
this.class = 'edit-server-group-action';
|
||||
}
|
||||
|
||||
public run(): Promise<boolean> {
|
||||
this._connectionManagementService.showEditServerGroupDialog(this._group);
|
||||
this.serverGroupController.showEditGroupDialog(this._group);
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
}
|
||||
@@ -231,8 +232,7 @@ export class ActiveConnectionsFilterAction extends Action {
|
||||
constructor(
|
||||
id: string,
|
||||
label: string,
|
||||
private view: ServerTreeView,
|
||||
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService
|
||||
private view: ServerTreeView
|
||||
) {
|
||||
super(id, label);
|
||||
this.class = ActiveConnectionsFilterAction.enabledClass;
|
||||
|
||||
@@ -220,7 +220,7 @@ suite('SQL Connection Tree Action tests', () => {
|
||||
let serverTreeView = TypeMoq.Mock.ofType(ServerTreeView, TypeMoq.MockBehavior.Strict, undefined, instantiationService.object, undefined, undefined, undefined, undefined, capabilitiesService);
|
||||
serverTreeView.setup(x => x.showFilteredTree(TypeMoq.It.isAnyString()));
|
||||
serverTreeView.setup(x => x.refreshTree());
|
||||
let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object, connectionManagementService.object);
|
||||
let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object);
|
||||
connectionTreeAction.run().then((value) => {
|
||||
serverTreeView.verify(x => x.showFilteredTree('active'), TypeMoq.Times.once());
|
||||
}).then(() => done(), (err) => done(err));
|
||||
@@ -237,7 +237,7 @@ suite('SQL Connection Tree Action tests', () => {
|
||||
let serverTreeView = TypeMoq.Mock.ofType(ServerTreeView, TypeMoq.MockBehavior.Strict, undefined, instantiationService.object, undefined, undefined, undefined, undefined, capabilitiesService);
|
||||
serverTreeView.setup(x => x.showFilteredTree(TypeMoq.It.isAnyString()));
|
||||
serverTreeView.setup(x => x.refreshTree());
|
||||
let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object, connectionManagementService.object);
|
||||
let connectionTreeAction: ActiveConnectionsFilterAction = new ActiveConnectionsFilterAction(ActiveConnectionsFilterAction.ID, ActiveConnectionsFilterAction.LABEL, serverTreeView.object);
|
||||
connectionTreeAction.isSet = true;
|
||||
connectionTreeAction.run().then((value) => {
|
||||
serverTreeView.verify(x => x.refreshTree(), TypeMoq.Times.once());
|
||||
|
||||
@@ -9,6 +9,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
|
||||
import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension';
|
||||
import { ConnectionController } from 'sql/workbench/services/connection/browser/connectionController';
|
||||
import { CmsConnectionWidget } from 'sql/workbench/services/connection/browser/cmsConnectionWidget';
|
||||
import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController';
|
||||
|
||||
/**
|
||||
* Connection Controller for CMS Connections
|
||||
@@ -16,12 +17,14 @@ import { CmsConnectionWidget } from 'sql/workbench/services/connection/browser/c
|
||||
export class CmsConnectionController extends ConnectionController {
|
||||
|
||||
constructor(
|
||||
connectionManagementService: IConnectionManagementService,
|
||||
connectionProperties: ConnectionProviderProperties,
|
||||
callback: IConnectionComponentCallbacks,
|
||||
providerName: string,
|
||||
@IInstantiationService _instantiationService: IInstantiationService) {
|
||||
super(connectionManagementService, connectionProperties, callback, providerName, _instantiationService);
|
||||
@IConnectionManagementService _connectionManagementService: IConnectionManagementService,
|
||||
@IInstantiationService _instantiationService: IInstantiationService,
|
||||
@IServerGroupController _serverGroupController: IServerGroupController
|
||||
) {
|
||||
super(connectionProperties, callback, providerName, _connectionManagementService, _instantiationService, _serverGroupController);
|
||||
let specialOptions = this._providerOptions.filter(
|
||||
(property) => (property.specialValueType !== null && property.specialValueType !== undefined));
|
||||
this._connectionWidget = this._instantiationService.createInstance(CmsConnectionWidget, specialOptions, {
|
||||
@@ -40,4 +43,4 @@ export class CmsConnectionController extends ConnectionController {
|
||||
this._databaseCache = new Map<string, string[]>();
|
||||
this._connectionWidget.createConnectionWidget(container, authTypeChanged);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
|
||||
import { ConnectionOptionSpecialType } from 'sql/workbench/api/common/sqlExtHostTypes';
|
||||
import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension';
|
||||
import { ConnectionWidget } from 'sql/workbench/services/connection/browser/connectionWidget';
|
||||
import { IServerGroupController } from 'sql/platform/serverGroup/common/serverGroupController';
|
||||
|
||||
export class ConnectionController implements IConnectionComponentController {
|
||||
private _connectionManagementService: IConnectionManagementService;
|
||||
private _advancedController: AdvancedPropertiesController;
|
||||
private _model: IConnectionProfile;
|
||||
private _providerName: string;
|
||||
@@ -28,12 +28,13 @@ export class ConnectionController implements IConnectionComponentController {
|
||||
protected _databaseCache = new Map<string, string[]>();
|
||||
|
||||
constructor(
|
||||
connectionManagementService: IConnectionManagementService,
|
||||
connectionProperties: ConnectionProviderProperties,
|
||||
callback: IConnectionComponentCallbacks,
|
||||
providerName: string,
|
||||
@IInstantiationService protected _instantiationService: IInstantiationService) {
|
||||
this._connectionManagementService = connectionManagementService;
|
||||
@IConnectionManagementService protected readonly _connectionManagementService: IConnectionManagementService,
|
||||
@IInstantiationService protected readonly _instantiationService: IInstantiationService,
|
||||
@IServerGroupController protected readonly _serverGroupController: IServerGroupController
|
||||
) {
|
||||
this._callback = callback;
|
||||
this._providerOptions = connectionProperties.connectionOptions;
|
||||
let specialOptions = this._providerOptions.filter(
|
||||
@@ -89,7 +90,7 @@ export class ConnectionController implements IConnectionComponentController {
|
||||
}
|
||||
|
||||
protected onCreateNewServerGroup(): void {
|
||||
this._connectionManagementService.showCreateServerGroupDialog({
|
||||
this._serverGroupController.showCreateGroupDialog({
|
||||
onAddGroup: (groupName) => this._connectionWidget.updateServerGroup(this.getAllServerGroups(), groupName),
|
||||
onClose: () => this._connectionWidget.focusOnServerGroup()
|
||||
});
|
||||
|
||||
@@ -276,14 +276,12 @@ export class ConnectionDialogService implements IConnectionDialogService {
|
||||
if (providerName === Constants.cmsProviderName) {
|
||||
this._connectionControllerMap[providerName] =
|
||||
this._instantiationService.createInstance(CmsConnectionController,
|
||||
this._connectionManagementService,
|
||||
this._capabilitiesService.getCapabilities(providerName).connection, {
|
||||
onSetConnectButton: (enable: boolean) => this.handleSetConnectButtonEnable(enable)
|
||||
}, providerName);
|
||||
} else {
|
||||
this._connectionControllerMap[providerName] =
|
||||
this._instantiationService.createInstance(ConnectionController,
|
||||
this._connectionManagementService,
|
||||
this._capabilitiesService.getCapabilities(providerName).connection, {
|
||||
onSetConnectButton: (enable: boolean) => this.handleSetConnectButtonEnable(enable)
|
||||
}, providerName);
|
||||
|
||||
@@ -19,7 +19,6 @@ export class ServerGroupController implements IServerGroupController {
|
||||
_serviceBrand: any;
|
||||
|
||||
private _serverGroupDialog: ServerGroupDialog;
|
||||
private _connectionManagementService: IConnectionManagementService;
|
||||
private _callbacks: IServerGroupDialogCallbacks;
|
||||
private _group: ConnectionProfileGroup;
|
||||
private _viewModel: ServerGroupViewModel;
|
||||
@@ -27,7 +26,8 @@ export class ServerGroupController implements IServerGroupController {
|
||||
constructor(
|
||||
@IErrorMessageService private _errorMessageService: IErrorMessageService,
|
||||
@IInstantiationService private _instantiationService: IInstantiationService,
|
||||
@IConfigurationService private _configurationService: IConfigurationService
|
||||
@IConfigurationService private _configurationService: IConfigurationService,
|
||||
@IConnectionManagementService private readonly connectionManagementService: IConnectionManagementService
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ export class ServerGroupController implements IServerGroupController {
|
||||
this._group.name = this._viewModel.groupName;
|
||||
this._group.color = this._viewModel.groupColor;
|
||||
this._group.description = this._viewModel.groupDescription;
|
||||
this._connectionManagementService.editGroup(this._group).then(() => {
|
||||
this.connectionManagementService.editGroup(this._group).then(() => {
|
||||
this._serverGroupDialog.close();
|
||||
}).catch(err => {
|
||||
// rollback changes made
|
||||
@@ -53,7 +53,7 @@ export class ServerGroupController implements IServerGroupController {
|
||||
color: this._viewModel.groupColor,
|
||||
description: this._viewModel.groupDescription
|
||||
};
|
||||
this._connectionManagementService.saveProfileGroup(newGroup).then(groupId => {
|
||||
this.connectionManagementService.saveProfileGroup(newGroup).then(groupId => {
|
||||
if (this._callbacks) {
|
||||
this._callbacks.onAddGroup(this._serverGroupDialog.groupName);
|
||||
}
|
||||
@@ -75,16 +75,14 @@ export class ServerGroupController implements IServerGroupController {
|
||||
}
|
||||
|
||||
|
||||
public showCreateGroupDialog(connectionManagementService: IConnectionManagementService, callbacks?: IServerGroupDialogCallbacks): Promise<void> {
|
||||
this._connectionManagementService = connectionManagementService;
|
||||
public showCreateGroupDialog(callbacks?: IServerGroupDialogCallbacks): Promise<void> {
|
||||
this._group = null;
|
||||
this._viewModel = new ServerGroupViewModel(undefined, this._configurationService.getValue(SERVER_GROUP_CONFIG)[SERVER_GROUP_COLORS_CONFIG]);
|
||||
this._callbacks = callbacks ? callbacks : undefined;
|
||||
return this.openServerGroupDialog();
|
||||
}
|
||||
|
||||
public showEditGroupDialog(connectionManagementService: IConnectionManagementService, group: ConnectionProfileGroup): Promise<void> {
|
||||
this._connectionManagementService = connectionManagementService;
|
||||
public showEditGroupDialog(group: ConnectionProfileGroup): Promise<void> {
|
||||
this._group = group;
|
||||
this._viewModel = new ServerGroupViewModel(group, this._configurationService.getValue(SERVER_GROUP_CONFIG)[SERVER_GROUP_COLORS_CONFIG]);
|
||||
return this.openServerGroupDialog();
|
||||
|
||||
Reference in New Issue
Block a user