55
66package com .microsoft .azure .toolkit .intellij .cosmos ;
77
8- import com .intellij .database .autoconfig .DataSourceDetector ;
9- import com .intellij .database .autoconfig .DataSourceRegistry ;
10- import com .intellij .database .psi .DbPsiFacade ;
11- import com .intellij .database .view .ui .DataSourceManagerDialog ;
128import com .intellij .ide .plugins .PluginManagerCore ;
139import com .intellij .openapi .actionSystem .AnActionEvent ;
1410import com .intellij .openapi .extensions .PluginId ;
1511import com .intellij .openapi .project .Project ;
12+ import com .intellij .openapi .util .registry .Registry ;
1613import com .microsoft .azure .toolkit .ide .common .IActionsContributor ;
1714import com .microsoft .azure .toolkit .ide .common .action .ResourceCommonActionsContributor ;
1815import com .microsoft .azure .toolkit .ide .cosmos .CosmosActionsContributor ;
2421import com .microsoft .azure .toolkit .intellij .cosmos .connection .SqlCosmosDBAccountResourceDefinition ;
2522import com .microsoft .azure .toolkit .intellij .cosmos .creation .CreateCosmosDBAccountAction ;
2623import com .microsoft .azure .toolkit .intellij .cosmos .creation .CreateCosmosDatabaseAction ;
27- import com .microsoft .azure .toolkit .intellij .cosmos .dbtools .Dbms ;
2824import com .microsoft .azure .toolkit .lib .common .action .AzureActionManager ;
2925import com .microsoft .azure .toolkit .lib .common .bundle .AzureString ;
3026import com .microsoft .azure .toolkit .lib .common .exception .AzureToolkitRuntimeException ;
5248import java .util .function .BiPredicate ;
5349import java .util .function .Function ;
5450
55- import static com .microsoft .azure .toolkit .intellij .cosmos .dbtools .AzureCosmosDbAccountParamEditor .KEY_COSMOS_ACCOUNT_ID ;
5651import static com .microsoft .azure .toolkit .lib .cosmos .CosmosDBAccountDraft .Config .getDefaultConfig ;
5752import static com .microsoft .azure .toolkit .lib .cosmos .model .DatabaseConfig .getDefaultDatabaseConfig ;
5853
@@ -64,66 +59,56 @@ public void registerHandlers(AzureActionManager am) {
6459 am .registerHandler (ResourceCommonActionsContributor .CREATE , serviceCondition , handler );
6560
6661 final BiConsumer <ResourceGroup , AnActionEvent > groupCreateHandler = (r , e ) ->
67- CreateCosmosDBAccountAction .create (e .getProject (), getDefaultConfig (r ));
62+ CreateCosmosDBAccountAction .create (e .getProject (), getDefaultConfig (r ));
6863 am .registerHandler (CosmosActionsContributor .GROUP_CREATE_COSMOS_SERVICE , (r , e ) -> true , groupCreateHandler );
6964
7065 final Function <MongoCosmosDBAccount , MongoDatabase > mongoFunction = account -> account .mongoDatabases ().list ().stream ().findFirst ().orElse (null );
7166 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof MongoCosmosDBAccount , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
72- openResourceConnector ((MongoCosmosDBAccount ) r , mongoFunction , MongoCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
67+ openResourceConnector ((MongoCosmosDBAccount ) r , mongoFunction , MongoCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
7368 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof MongoDatabase , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
74- openResourceConnector ((MongoDatabase ) r , MongoCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
69+ openResourceConnector ((MongoDatabase ) r , MongoCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
7570
7671 final Function <SqlCosmosDBAccount , SqlDatabase > sqlFunction = account -> account .sqlDatabases ().list ().stream ().findFirst ().orElse (null );
7772 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof SqlCosmosDBAccount , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
78- openResourceConnector ((SqlCosmosDBAccount ) r , sqlFunction , SqlCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
73+ openResourceConnector ((SqlCosmosDBAccount ) r , sqlFunction , SqlCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
7974 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof SqlDatabase , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
80- openResourceConnector ((SqlDatabase ) r , SqlCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
75+ openResourceConnector ((SqlDatabase ) r , SqlCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
8176
8277 final Function <CassandraCosmosDBAccount , CassandraKeyspace > cassandraFunction = account -> account .keySpaces ().list ().stream ().findFirst ().orElse (null );
8378 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof CassandraCosmosDBAccount , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
84- openResourceConnector ((CassandraCosmosDBAccount ) r , cassandraFunction , CassandraCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
79+ openResourceConnector ((CassandraCosmosDBAccount ) r , cassandraFunction , CassandraCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
8580 am .registerHandler (ResourceCommonActionsContributor .CONNECT , (r , e ) -> r instanceof CassandraKeyspace , (AzResource <?, ?, ?> r , AnActionEvent e ) ->
86- openResourceConnector ((CassandraKeyspace ) r , CassandraCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
81+ openResourceConnector ((CassandraKeyspace ) r , CassandraCosmosDBAccountResourceDefinition .INSTANCE , e .getProject ()));
8782
8883 final BiFunction <MongoCosmosDBAccount , DatabaseConfig , ICosmosDatabaseDraft <?, ?>> mongoDraftSupplier = (account , config ) ->
89- (ICosmosDatabaseDraft <?, ?>) account .mongoDatabases ().getOrDraft (config .getName (), account .getResourceGroupName ());
84+ (ICosmosDatabaseDraft <?, ?>) account .mongoDatabases ().getOrDraft (config .getName (), account .getResourceGroupName ());
9085 am .registerHandler (ResourceCommonActionsContributor .CREATE , (r , e ) -> r instanceof MongoCosmosDBAccount , (Object r , AnActionEvent e ) ->
91- CreateCosmosDatabaseAction .create (e .getProject (), (MongoCosmosDBAccount ) r , mongoDraftSupplier , getDefaultDatabaseConfig ()));
86+ CreateCosmosDatabaseAction .create (e .getProject (), (MongoCosmosDBAccount ) r , mongoDraftSupplier , getDefaultDatabaseConfig ()));
9287
9388 final BiFunction <SqlCosmosDBAccount , DatabaseConfig , ICosmosDatabaseDraft <?, ?>> sqlDraftSupplier = (account , config ) ->
94- (ICosmosDatabaseDraft <?, ?>) account .sqlDatabases ().getOrDraft (config .getName (), account .getResourceGroupName ());
89+ (ICosmosDatabaseDraft <?, ?>) account .sqlDatabases ().getOrDraft (config .getName (), account .getResourceGroupName ());
9590 am .registerHandler (ResourceCommonActionsContributor .CREATE , (r , e ) -> r instanceof SqlCosmosDBAccount , (Object r , AnActionEvent e ) ->
96- CreateCosmosDatabaseAction .create (e .getProject (), (SqlCosmosDBAccount ) r , sqlDraftSupplier , getDefaultDatabaseConfig ()));
91+ CreateCosmosDatabaseAction .create (e .getProject (), (SqlCosmosDBAccount ) r , sqlDraftSupplier , getDefaultDatabaseConfig ()));
9792
9893 final BiFunction <CassandraCosmosDBAccount , DatabaseConfig , ICosmosDatabaseDraft <?, ?>> cassandraDraftSupplier = (account , config ) ->
99- (ICosmosDatabaseDraft <?, ?>) account .keySpaces ().getOrDraft (config .getName (), account .getResourceGroupName ());
94+ (ICosmosDatabaseDraft <?, ?>) account .keySpaces ().getOrDraft (config .getName (), account .getResourceGroupName ());
10095 am .registerHandler (ResourceCommonActionsContributor .CREATE , (r , e ) -> r instanceof CassandraCosmosDBAccount , (Object r , AnActionEvent e ) ->
101- CreateCosmosDatabaseAction .create (e .getProject (), (CassandraCosmosDBAccount ) r , cassandraDraftSupplier , getDefaultDatabaseConfig ()));
96+ CreateCosmosDatabaseAction .create (e .getProject (), (CassandraCosmosDBAccount ) r , cassandraDraftSupplier , getDefaultDatabaseConfig ()));
10297
103- final BiConsumer <CosmosDBAccount , AnActionEvent > openDatabaseHandler = (c , e ) -> openDatabaseTool (e .getProject (), c );
104- am .registerHandler (CosmosActionsContributor .OPEN_DATABASE_TOOL , (r , e ) -> r instanceof MongoCosmosDBAccount || r instanceof CassandraCosmosDBAccount , openDatabaseHandler );
98+ final String DATABASE_TOOLS_PLUGIN_ID = "com.intellij.database" ;
99+ if (PluginManagerCore .getPlugin (PluginId .findId (DATABASE_TOOLS_PLUGIN_ID )) == null ) {
100+ final BiConsumer <CosmosDBAccount , AnActionEvent > openDatabaseHandler = (c , e ) -> openDatabaseTool (e .getProject (), c );
101+ final boolean cassandraOn = Registry .is ("azure.toolkit.cosmos_cassandra.dbtools.enabled" );
102+ am .registerHandler (CosmosActionsContributor .OPEN_DATABASE_TOOL , (r , e ) -> r instanceof MongoCosmosDBAccount || (r instanceof CassandraCosmosDBAccount && cassandraOn ), openDatabaseHandler );
103+ }
105104 }
106105
107106 @ AzureOperation (name = "cosmos.open_database_tools.account" , params = {"account.getName()" }, type = AzureOperation .Type .ACTION )
108107 private void openDatabaseTool (Project project , CosmosDBAccount account ) {
109108 final String DATABASE_TOOLS_PLUGIN_ID = "com.intellij.database" ;
110109 final String DATABASE_PLUGIN_NOT_INSTALLED = "\" Database tools and SQL\" plugin is not installed." ;
111110 final String NOT_SUPPORT_ERROR_ACTION = "\" Database tools and SQL\" plugin is only provided in IntelliJ Ultimate edition." ;
112- if (PluginManagerCore .getPlugin (PluginId .findId (DATABASE_TOOLS_PLUGIN_ID )) == null ) {
113- throw new AzureToolkitRuntimeException (DATABASE_PLUGIN_NOT_INSTALLED , NOT_SUPPORT_ERROR_ACTION , IntellijActionsContributor .TRY_ULTIMATE );
114- }
115- AzureTaskManager .getInstance ().runLater (() -> {
116- final DataSourceRegistry registry = new DataSourceRegistry (project );
117- final com .intellij .database .Dbms dbms =
118- account instanceof MongoCosmosDBAccount ? Dbms .AZ_COSMOS_MONGO :
119- account instanceof CassandraCosmosDBAccount ? Dbms .AZ_COSMOS_CASSANDRA :
120- com .intellij .database .Dbms .UNKNOWN ;
121- final DataSourceDetector .Builder builder = registry .getBuilder ()
122- .withDbms (dbms )
123- .withJdbcAdditionalProperty (KEY_COSMOS_ACCOUNT_ID , account .getId ())
124- .commit ();
125- DataSourceManagerDialog .showDialog (DbPsiFacade .getInstance (project ), registry );
126- });
111+ throw new AzureToolkitRuntimeException (DATABASE_PLUGIN_NOT_INSTALLED , NOT_SUPPORT_ERROR_ACTION , IntellijActionsContributor .TRY_ULTIMATE );
127112 }
128113
129114 private <T extends AzResource <?, ?, ?>> void openResourceConnector (@ Nonnull final T resource , @ Nonnull final AzureServiceResource .Definition <T > definition , Project project ) {
0 commit comments