Skip to content

Commit b4896bb

Browse files
committed
Merge branch 'qianjin-sqlserver-04-showproperties-4-actions' into qianjin-sqlserver-05-all
2 parents 77059a3 + ce6109b commit b4896bb

File tree

8 files changed

+49
-31
lines changed

8 files changed

+49
-31
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/CreateSqlServerAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
1313
import com.microsoft.azure.toolkit.lib.common.task.AzureTask;
1414
import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager;
15+
import com.microsoft.azure.toolkit.intellij.sqlserver.task.CreateSqlServerTask;
1516
import com.microsoft.azure.toolkit.lib.sqlserver.SqlServerConfig;
16-
import com.microsoft.azure.toolkit.lib.sqlserver.SqlServerService;
1717
import com.microsoft.azure.toolkit.lib.sqlserver.service.ISqlServer;
1818
import com.microsoft.azuretools.authmanage.AuthMethodManager;
1919
import com.microsoft.azuretools.utils.AzureUIRefreshCore;
@@ -74,7 +74,7 @@ private void createSqlServer(final SqlServerConfig config, SqlServerCreationDial
7474
final ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator();
7575
indicator.setIndeterminate(true);
7676
DefaultLoader.getIdeHelper().invokeLater(dialog::close);
77-
ISqlServer server = SqlServerService.getInstance().create(config);
77+
ISqlServer server = new CreateSqlServerTask(config).execute();
7878
refreshAzureExplorer(server);
7979
};
8080
String progressMessage = Node.getProgressMessage(AzureActionEnum.CREATE.getDoingName(), SqlServerModule.MODULE_NAME, config.getServerName());

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/common/SqlServerDatabaseComboBox.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ public class SqlServerDatabaseComboBox extends AzureComboBox<SqlDatabaseEntity>
1818

1919
private ISqlServer server;
2020

21-
public void setSubscription(ISqlServer server) {
22-
if (Objects.equals(server, this.server)) {
23-
return;
24-
}
25-
this.refreshItems();
26-
}
27-
2821
public void setServer(ISqlServer server) {
2922
if (Objects.equals(server, this.server)) {
3023
return;

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/common/SqlServerRegionComboBox.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,18 @@
2121
import java.util.Objects;
2222
import java.util.stream.Collectors;
2323

24+
/**
25+
* TODO(Qianjin) : extend RegionComboBox
26+
*/
2427
public class SqlServerRegionComboBox extends AzureComboBox<Region> {
2528

2629
private static final String REGION_UNAVAILABLE_MESSAGE = "Your subscription does not have access to create a server "
2730
+ "in the selected region. For the latest information about region availability for your subscription, go to "
2831
+ "aka.ms/sqlcapacity. Please try another region or create a support ticket to request access.";
2932

3033
private Subscription subscription;
34+
private boolean validated;
35+
private AzureValidationInfo validatedInfo;
3136

3237
public void setSubscription(Subscription subscription) {
3338
if (Objects.equals(subscription, this.subscription)) {
@@ -62,6 +67,14 @@ protected String getItemText(Object item) {
6267
return super.getItemText(item);
6368
}
6469

70+
@Override
71+
public void setItem(Region item) {
72+
if (!item.equals(getItem())) {
73+
validated = false;
74+
}
75+
super.setItem(item);
76+
}
77+
6578
@Override
6679
public boolean isRequired() {
6780
return true;
@@ -70,16 +83,19 @@ public boolean isRequired() {
7083
@NotNull
7184
@Override
7285
public AzureValidationInfo doValidate() {
73-
final AzureValidationInfo info = super.doValidate();
74-
if (!AzureValidationInfo.OK.equals(info)) {
75-
return info;
86+
if (validated && Objects.isNull(validatedInfo)) {
87+
return validatedInfo;
7688
}
77-
AzureSqlServer service = com.microsoft.azure.toolkit.lib.Azure.az(AzureSqlServer.class);
78-
if (!service.checkRegionCapability(subscription.subscriptionId(), getValue().getName())) {
79-
final AzureValidationInfo.AzureValidationInfoBuilder builder = AzureValidationInfo.builder();
80-
return builder.input(this).message(REGION_UNAVAILABLE_MESSAGE).type(AzureValidationInfo.Type.ERROR).build();
89+
validatedInfo = super.doValidate();
90+
if (AzureValidationInfo.OK.equals(validatedInfo)) {
91+
AzureSqlServer service = com.microsoft.azure.toolkit.lib.Azure.az(AzureSqlServer.class);
92+
if (!service.checkRegionCapability(subscription.subscriptionId(), getValue().getName())) {
93+
final AzureValidationInfo.AzureValidationInfoBuilder builder = AzureValidationInfo.builder();
94+
validatedInfo = builder.input(this).message(REGION_UNAVAILABLE_MESSAGE).type(AzureValidationInfo.Type.ERROR).build();
95+
}
8196
}
82-
return info;
97+
validated = true;
98+
return validatedInfo;
8399
}
84100

85101
/**

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/creation/SqlServerCreationAdvancedPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ private void init() {
6767

6868
private void initListeners() {
6969
this.subscriptionComboBox.addItemListener(this::onSubscriptionChanged);
70-
this.adminUsernameTextField.getDocument().addDocumentListener(generateAdminUsernameListener());
70+
this.adminUsernameTextField.getDocument().addDocumentListener(this.onAdminUsernameChanged());
7171
}
7272

7373
private void onSubscriptionChanged(final ItemEvent e) {
@@ -79,7 +79,7 @@ private void onSubscriptionChanged(final ItemEvent e) {
7979
}
8080
}
8181

82-
private DocumentListener generateAdminUsernameListener() {
82+
private DocumentListener onAdminUsernameChanged() {
8383
return new TextDocumentListenerAdapter() {
8484
@Override
8585
public void onDocumentChanged() {

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/creation/SqlServerCreationDialog.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,20 @@
2222

2323
package com.microsoft.azure.toolkit.intellij.sqlserver.creation;
2424

25+
import com.google.common.base.Preconditions;
2526
import com.intellij.openapi.project.Project;
27+
import com.microsoft.azure.management.resources.Subscription;
2628
import com.microsoft.azure.toolkit.intellij.common.AzureDialog;
2729
import com.microsoft.azure.toolkit.lib.common.form.AzureForm;
2830
import com.microsoft.azure.toolkit.lib.sqlserver.SqlServerConfig;
31+
import com.microsoft.azuretools.core.mvp.model.AzureMvpModel;
32+
import org.apache.commons.collections4.CollectionUtils;
2933
import org.jetbrains.annotations.Nullable;
3034

3135
import javax.swing.*;
3236

37+
import java.util.List;
38+
3339
import static com.microsoft.intellij.ui.messages.AzureBundle.message;
3440

3541
public class SqlServerCreationDialog extends AzureDialog<SqlServerConfig> {
@@ -95,7 +101,9 @@ protected void toggleAdvancedMode(boolean advancedMode) {
95101
}
96102

97103
private void createUIComponents() {
98-
SqlServerConfig config = SqlServerConfig.getDefaultConfig();
104+
final List<Subscription> selectedSubscriptions = AzureMvpModel.getInstance().getSelectedSubscriptions();
105+
Preconditions.checkArgument(CollectionUtils.isNotEmpty(selectedSubscriptions), "There is no subscription in your account.");
106+
SqlServerConfig config = SqlServerConfig.getDefaultConfig(selectedSubscriptions.get(0));
99107
basic = new SqlServerCreationBasicPanel(config);
100108
advanced = new SqlServerCreationAdvancedPanel(config);
101109
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/properties/SqlServerPropertyView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
import java.util.List;
4444
import java.util.Map;
4545

46+
/**
47+
* TODO (qianjin): shared common code
48+
*/
4649
public class SqlServerPropertyView extends BaseEditor implements MvpView {
4750

4851
public static final String ID = "com.microsoft.azure.toolkit.intellij.sqlserver.properties.SqlServerPropertyView";

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/lib/sqlserver/SqlServerService.java renamed to PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/intellij/sqlserver/task/CreateSqlServerTask.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*/
55

6-
package com.microsoft.azure.toolkit.lib.sqlserver;
6+
package com.microsoft.azure.toolkit.intellij.sqlserver.task;
77

88
import com.microsoft.azure.management.Azure;
99
import com.microsoft.azure.management.resources.ResourceGroup;
1010
import com.microsoft.azure.toolkit.intellij.common.Draft;
1111
import com.microsoft.azure.toolkit.lib.common.model.Region;
1212
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
13-
import com.microsoft.azure.toolkit.lib.sqlserver.model.SqlFirewallRuleEntity;
13+
import com.microsoft.azure.toolkit.lib.sqlserver.SqlServerConfig;
1414
import com.microsoft.azure.toolkit.lib.sqlserver.model.SqlServerEntity;
1515
import com.microsoft.azure.toolkit.lib.sqlserver.service.AzureSqlServer;
1616
import com.microsoft.azure.toolkit.lib.sqlserver.service.ISqlServer;
@@ -25,11 +25,12 @@
2525

2626
import java.util.Collections;
2727

28-
public class SqlServerService {
29-
private static final SqlServerService instance = new SqlServerService();
28+
public class CreateSqlServerTask {
3029

31-
public static SqlServerService getInstance() {
32-
return SqlServerService.instance;
30+
private final SqlServerConfig config;
31+
32+
public CreateSqlServerTask(SqlServerConfig config) {
33+
this.config = config;
3334
}
3435

3536
@AzureOperation(
@@ -40,7 +41,7 @@ public static SqlServerService getInstance() {
4041
},
4142
type = AzureOperation.Type.SERVICE
4243
)
43-
public ISqlServer create(final SqlServerConfig config) {
44+
public ISqlServer execute() {
4445
final Operation operation = TelemetryManager.createOperation(ActionConstants.MySQL.CREATE);
4546
try {
4647
operation.start();

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/toolkit/lib/sqlserver/SqlServerConfig.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,9 @@ public class SqlServerConfig {
3939
private boolean allowAccessFromAzureServices;
4040
private boolean allowAccessFromLocalMachine;
4141

42-
public static SqlServerConfig getDefaultConfig() {
42+
public static SqlServerConfig getDefaultConfig(Subscription subscription) {
4343
final String defaultNameSuffix = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
4444
final SqlServerConfig config = new SqlServerConfig();
45-
final List<Subscription> selectedSubscriptions = AzureMvpModel.getInstance().getSelectedSubscriptions();
46-
Preconditions.checkArgument(CollectionUtils.isNotEmpty(selectedSubscriptions), "There is no subscription in your account.");
47-
Subscription subscription = selectedSubscriptions.get(0);
4845
config.setSubscription(subscription);
4946
DraftResourceGroup resourceGroup = DraftResourceGroup.builder().subscription(subscription).name("rs-" + defaultNameSuffix).build();
5047
config.setResourceGroup(resourceGroup);

0 commit comments

Comments
 (0)