Browse Source

REPORT-76291 【迭代】【数据连接为空】次管查看无权限的数据集,没有提示

【问题原因】获取数据连接名称的方式错了,误写成了获取数据集名称,因此判断成了有权限
【改动思路】改用正确方式获取数据连接的名称
【review建议】无
feature/x
Yvan 2 years ago
parent
commit
d38584e6e8
  1. 6
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  2. 23
      designer-base/src/main/java/com/fr/design/data/datapane/auth/TableDataAuthHelper.java

6
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -1019,7 +1019,6 @@ public class TableDataTreePane extends BasicTableDataTreePane {
AbstractTableDataPane<?> tableDataPane = wrapper.creatTableDataPane(); AbstractTableDataPane<?> tableDataPane = wrapper.creatTableDataPane();
String tableDataName = wrapper.getTableDataName();
if (TableDataAuthHelper.needCheckAuthWhenEdit(wrapper.getTableData())) { if (TableDataAuthHelper.needCheckAuthWhenEdit(wrapper.getTableData())) {
// 先打开一个Loading面板 // 先打开一个Loading面板
TableDataLoadingPane loadingPane = new TableDataLoadingPane(); TableDataLoadingPane loadingPane = new TableDataLoadingPane();
@ -1028,8 +1027,11 @@ public class TableDataTreePane extends BasicTableDataTreePane {
new SwingWorker<Boolean, Void>() { new SwingWorker<Boolean, Void>() {
@Override @Override
protected Boolean doInBackground() throws Exception { protected Boolean doInBackground() throws Exception {
// 获取无权限连接名称集合
Collection<String> noAuthConnections = TableDataAuthHelper.getNoAuthConnections(); Collection<String> noAuthConnections = TableDataAuthHelper.getNoAuthConnections();
return !noAuthConnections.contains(tableDataName); // 获取当前数据集对应的数据连接名称
String connectionName = TableDataAuthHelper.getConnectionNameByDBTableData((DBTableData) wrapper.getTableData());
return !noAuthConnections.contains(connectionName);
} }
@Override @Override

23
designer-base/src/main/java/com/fr/design/data/datapane/auth/TableDataAuthHelper.java

@ -1,13 +1,13 @@
package com.fr.design.data.datapane.auth; package com.fr.design.data.datapane.auth;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.data.impl.Connection;
import com.fr.data.impl.DBTableData; import com.fr.data.impl.DBTableData;
import com.fr.decision.base.util.CollectionUtil; import com.fr.data.impl.NameDatabaseConnection;
import com.fr.stable.collections.CollectionUtils; import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.connection.DBConnectAuth; import com.fr.workspace.server.connection.DBConnectAuth;
import javax.swing.SwingWorker;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -37,4 +37,21 @@ public class TableDataAuthHelper {
Collection<String> noAuthConnections = WorkContext.getCurrent().get(DBConnectAuth.class).getNoAuthConnections(); Collection<String> noAuthConnections = WorkContext.getCurrent().get(DBConnectAuth.class).getNoAuthConnections();
return noAuthConnections == null ? Collections.emptyList() : noAuthConnections; return noAuthConnections == null ? Collections.emptyList() : noAuthConnections;
} }
/**
* 通过数据集获取其数据连接的名称
*
* 注意
* 1. Connection接口本身是不提供名称的只有我们内部为了使用方便将其包装成了NameDataBaseConnection
* 如果不是NameDataBaseConnection类型则无名称因此这里只能用判断类型的方式获取名称
* 2. 仅支持DBTableData获取连接名
* @return
*/
public static String getConnectionNameByDBTableData(DBTableData tableData) {
Connection database = tableData.getDatabase();
if (database instanceof NameDatabaseConnection) {
return ((NameDatabaseConnection) database).getName();
}
return StringUtils.EMPTY;
}
} }

Loading…
Cancel
Save