You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jh...@apache.org on 2022/03/31 19:20:08 UTC
[netbeans] branch master updated: Adding internal command for registering DB connection (#3765)
This is an automated email from the ASF dual-hosted git repository.
jhorvath pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 8ac5875 Adding internal command for registering DB connection (#3765)
8ac5875 is described below
commit 8ac58755808acf8d8cda5cac735ef59616ec408f
Author: jhorvath <ja...@horvath.cz>
AuthorDate: Thu Mar 31 21:19:50 2022 +0200
Adding internal command for registering DB connection (#3765)
Make Add DB Command capable of adding connection with predefined properties
---
.../java/lsp/server/db/DBAddConnection.java | 52 ++++++++++++++++++++++
java/java.lsp.server/vscode/src/extension.ts | 2 +-
2 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/db/DBAddConnection.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/db/DBAddConnection.java
index a2dc1ff..aefaacc 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/db/DBAddConnection.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/db/DBAddConnection.java
@@ -18,6 +18,8 @@
*/
package org.netbeans.modules.java.lsp.server.db;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import java.net.URL;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
@@ -25,6 +27,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@@ -66,12 +69,61 @@ import org.openide.util.lookup.ServiceProvider;
@ServiceProvider(service = CodeActionsProvider.class)
public class DBAddConnection extends CodeActionsProvider {
public static final String DB_ADD_CONNECTION = "db.add.connection"; // NOI18N
+ public static final String USER_ID = "userId"; // NOI18N
+ public static final String PASSWORD = "password"; // NOI18N
+ public static final String DRIVER = "driver"; // NOI18N
+ public static final String DB_URL = "url"; // NOI18N
+ public static final String SCHEMA = "schema"; // NOI18N
+ public static final String DISPLAY_NAME = "displayName"; // NOI18N
+
+ private final Gson gson = new Gson();
@Override
public CompletableFuture<Object> processCommand(NbCodeLanguageClient client, String command, List<Object> arguments) {
if (!DB_ADD_CONNECTION.equals(command)) {
return null;
}
+
+ String userId = null;
+ String dbUrl = null;
+ String driverClass = null;
+ final Map m = gson.fromJson((JsonObject) arguments.get(0), Map.class);
+ if (m != null) {
+ userId = (String) m.get(USER_ID);
+ dbUrl = (String) m.get(DB_URL);
+ driverClass = (String) m.get(DRIVER);
+ }
+ if (dbUrl != null && driverClass != null) {
+
+ JDBCDriver[] driver = JDBCDriverManager.getDefault().getDrivers(driverClass); //NOI18N
+ if (driver != null && driver.length > 0) {
+ CompletableFuture<String> usernameFuture = userId != null ? CompletableFuture.completedFuture(userId) : client.showInputBox(new ShowInputBoxParams(
+ Bundle.MSG_EnterUsername(), userId));
+
+ usernameFuture.thenAccept((username) -> { //NOI18N
+ if (username == null) {
+ return;
+ }
+ String password = (String) m.get(PASSWORD);
+ CompletableFuture<String> passwordFuture = password != null ? CompletableFuture.completedFuture(password) : client.showInputBox(new ShowInputBoxParams(
+ Bundle.MSG_EnterPassword(), "", true));
+ passwordFuture.thenAccept((p) -> { //NOI18N
+ if (p == null) {
+ return;
+ }
+ DatabaseConnection dbconn = DatabaseConnection.create(driver[0], (String) m.get(DB_URL), username, (String) m.get(SCHEMA), p, true, (String) m.get(DISPLAY_NAME));
+ try {
+ ConnectionManager.getDefault().addConnection(dbconn);
+ } catch (DatabaseException ex) {
+ client.showMessage(new MessageParams(MessageType.Error, ex.getMessage()));
+ }
+ });
+ });
+ client.showMessage(new MessageParams(MessageType.Info, Bundle.MSG_ConnectionAdded()));
+ }
+ return CompletableFuture.completedFuture(null);
+ }
+
JDBCDriver[] drivers = JDBCDriverManager.getDefault().getDrivers();
List<QuickPickItem> items = new ArrayList<>();
for (int i = 0; i < drivers.length; i++) {
diff --git a/java/java.lsp.server/vscode/src/extension.ts b/java/java.lsp.server/vscode/src/extension.ts
index 275fa4d..4d80da1 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -523,7 +523,6 @@ export function activate(context: ExtensionContext): VSNetBeansAPI {
// register completions:
launchConfigurations.registerCompletion(context);
-
return Object.freeze({
version : API_VERSION
});
@@ -552,6 +551,7 @@ function activateWithJDK(specifiedJDK: string | null, context: ExtensionContext,
});
const a : Promise<void> | null = maintenance;
commands.executeCommand('setContext', 'nbJavaLSReady', false);
+ commands.executeCommand('setContext', 'dbAddConnectionPresent', true);
activationPending = true;
// chain the restart after termination of the former process.
if (a != null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists