From 1a2c9d29328993dafd088e59fc83461305fdc07b Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 5 Jul 2024 14:36:18 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-114391=20-=20=E3=80=90=E5=BE=AE=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E9=80=82=E9=85=8D=E3=80=91=E8=BF=9C=E7=A8=8B&?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E8=AE=BE=E8=AE=A1=E5=99=A8=E8=83=BD=E5=A4=9F?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=90=AF=E5=8A=A8=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=9E=E6=8E=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datapane/connect/ConnectionListPane.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java index c587faa5ee..18e0ff14f1 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListPane.java @@ -4,7 +4,6 @@ import com.fanruan.config.impl.data.ConnectionConfigProviderFactory; import com.fr.config.remote.RemoteConfigEvent; import com.fr.data.driver.DriverClassNotFoundException; import com.fr.data.impl.Connection; -import com.fr.data.impl.ConnectionBean; import com.fr.data.impl.JDBCDatabaseConnection; import com.fr.data.impl.JNDIDatabaseConnection; import com.fr.data.metric.utils.DatabaseConnectionMetricHandler; @@ -31,6 +30,8 @@ import com.fr.stable.StringUtils; import com.fr.stable.core.PropertyChangeAdapter; import com.fr.workspace.WorkContext; import com.fr.workspace.server.database.DataBaseTypeOperator; +import com.fr.workspace.server.entity.connection.BatchConnectionModifyBean; +import com.fr.workspace.server.entity.connection.ConnectionBean; import com.fr.workspace.server.repository.connection.ConnectionRepository; import org.jetbrains.annotations.NotNull; @@ -217,19 +218,25 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh Arrays.stream(res).map(n -> (NameObject) n).forEach(no -> updatedMap.put(no.getName(), (Connection) no.getObject())); List removedConnNames = new ArrayList<>(); - List addedOrUpdatedConnections = new ArrayList<>(); - + List addConnections = new ArrayList<>(); + List updateConnection = new ArrayList<>(); MapCompareUtils.contrastMapEntries(populatedConnectionsSnapshot, updatedMap, (entryEventKind, s, connection) -> { switch (entryEventKind) { case REMOVED: removedConnNames.add(s); break; case ADDED: + addConnections.add(new ConnectionBean(connection, s)); + if (connection instanceof JDBCDatabaseConnection) { + DatabaseConnectionMetricHandler.handleSaveConnection((JDBCDatabaseConnection) connection, null); + } + break; case UPDATED: - addedOrUpdatedConnections.add(new ConnectionBean(s, StringUtils.EMPTY, connection)); + updateConnection.add(new ConnectionBean(connection, s)); if (connection instanceof JDBCDatabaseConnection) { DatabaseConnectionMetricHandler.handleSaveConnection((JDBCDatabaseConnection) connection, null); } + break; default: break; } @@ -261,9 +268,12 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh } }); - this.validateDatabaseType(addedOrUpdatedConnections); - this.validateConnections(addedOrUpdatedConnections); - this.alterConnections(removedConnNames, addedOrUpdatedConnections); + List validateBeans = new ArrayList<>(); + validateBeans.addAll(addConnections); + validateBeans.addAll(updateConnection); + this.validateDatabaseType(validateBeans); + this.validateConnections(validateBeans); + this.alterConnections(new BatchConnectionModifyBean(addConnections, removedConnNames, updateConnection)); } /** @@ -326,15 +336,10 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh } - private void alterConnections(List removedConnNames, List addedOrUpdatedConnections) { + private void alterConnections(BatchConnectionModifyBean bean) { try { - - /// 数据连接要改为单个修改的形式(考虑配合newUI) - ConnectionRepository.getInstance().add(new com.fr.workspace.server.entity.connection.ConnectionBean(addedOrUpdatedConnections.get(0).getConnection(), "FRDemo")); - //WorkContext.getCurrent().get(ConnectionOperator.class, exceptionInfo -> saveByOldWay(removedConnNames, addedOrUpdatedConnections)) - // .saveConnection(removedConnNames, addedOrUpdatedConnections); - + ConnectionRepository.getInstance().save(bean); // hades:远程环境时,由于时直接RPC调用远程修改,因此设计器本地配置需要失效 if (!WorkContext.getCurrent().isLocal()) { EventDispatcher.fire(RemoteConfigEvent.EDIT, "ConnectionConfig");