From f1c2e12a436ce40c70820c351cbe7148ef5e2e4d Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Tue, 31 Jan 2023 14:10:05 +0800 Subject: [PATCH 01/15] =?UTF-8?q?REPORT-88365=20=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E6=95=B0=E6=8D=AE=E5=88=97=EF=BC=8C=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E5=85=83=E7=B4=A0=E9=A1=B5=E9=9D=A2=E6=9C=89=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E3=80=91=E5=8D=95=E9=80=89=E6=97=B6=E9=BB=98=E8=AE=A4=E5=B0=86?= =?UTF-8?q?cellDSColumnAdvancedPane=E7=9A=84visible=E8=AE=BE=E4=B8=BAtrue?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91?= =?UTF-8?q?=E7=BB=93=E5=90=88cellDSColumnAdvancedPane=E7=9A=84=E5=8E=9F?= =?UTF-8?q?=E5=A7=8Bvisible=E7=8A=B6=E6=80=81=E5=8F=8A=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E7=9A=84=E5=8D=95=E9=80=89=E5=A4=9A=E9=80=89=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=86=8D=E8=BF=9B=E8=A1=8C=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/quickeditor/cellquick/CellDSColumnEditor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 575f89fb07..e9917d2c21 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -162,6 +162,7 @@ public class CellDSColumnEditor extends CellQuickEditor { // 由于多选的时候修改了 cellDSColumnBasicPane 中组件的visiable属性,切换时需要将其设置为false cellDSColumnBasicPane.setVisible(false); + cellDSColumnAdvancedPane.setVisible(false); card.show(cardContainer, paneList.get(index).title4PopupWindow()); paneList.get(index).populate(); @@ -1064,7 +1065,10 @@ public class CellDSColumnEditor extends CellQuickEditor { @Override public void refreshMultipleDetails() { tabsHeaderIconPane.setVisible(tc.isSelectedOneCell()); - cellDSColumnAdvancedPane.setVisible(tc.isSelectedOneCell()); + + // 需要结合AdvancedPane的原始visible状态设置单选多选visible + boolean advancedPaneVisible = cellDSColumnAdvancedPane.isVisible(); + cellDSColumnAdvancedPane.setVisible(advancedPaneVisible && tc.isSelectedOneCell()); cellDSColumnBasicPane.setMultipleVisible(tc.isSelectedOneCell()); } From f418358d6cad2a366a1144ccdecbec5af882674f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Wed, 8 Feb 2023 10:35:02 +0800 Subject: [PATCH 02/15] =?UTF-8?q?REPORT-29522=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=86=85=E5=AF=BC=E5=87=BA=E6=8C=89=E9=92=AE=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=96=87=E5=AD=97=E5=B8=A6=E6=9C=89"..."=20=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=96=87=E5=AD=97=E5=8F=88=E6=B2=A1=E6=9C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/file/export/ExcelExportAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java b/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java index 171a68ce8d..0933387062 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java @@ -12,7 +12,7 @@ public class ExcelExportAction extends AbstractExcelExportAction { public ExcelExportAction(JWorkBook jwb) { super(jwb); this.setMenuKeySet(KeySetUtils.SIMPLE_EXCEL_EXPORT); - this.setName(getMenuKeySet().getMenuKeySetName()); + this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/excel.png")); } From d03ba95f17bb09eecfe8063c6c3825de9f914b29 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Thu, 9 Feb 2023 09:40:10 +0800 Subject: [PATCH 03/15] =?UTF-8?q?REPORT-88826=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E5=A2=9E=E4=B8=8D=E6=94=AF=E6=8C=81=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B=E6=9C=AA=E5=8F=97?= =?UTF-8?q?=E5=88=B0=E9=99=90=E5=88=B6=20=E3=80=90=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E3=80=91=E6=9C=AA=E8=80=83=E8=99=91=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=AE=BE=E8=AE=A1=E4=B8=8B=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=9A=84lic=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0rpc=E6=8E=A5=E5=8F=A3=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8lic=E6=98=AF=E5=90=A6=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/datapane/connect/ConnectionListPane.java | 5 +++-- 1 file changed, 3 insertions(+), 2 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 eaa4c37d8d..8eb13afca0 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 @@ -30,6 +30,7 @@ import com.fr.stable.core.PropertyChangeAdapter; import com.fr.transaction.Configurations; import com.fr.transaction.WorkerFacade; import com.fr.workspace.WorkContext; +import com.fr.workspace.server.database.DataBaseTypeOperator; import java.awt.Window; import java.sql.SQLException; @@ -132,8 +133,8 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh DatabaseConnectionPane.JNDI.class ); NameableCreator[] creators; - if (FRCoreContext.getLicense().limitDatabaseType()) { - // 不支持JDNI,屏蔽接口 + if (WorkContext.getCurrent().get(DataBaseTypeOperator.class).limitDatabaseType()) { + // 不支持JNDI,屏蔽接口 creators = new NameableCreator[]{jdbc}; } else { creators = new NameableCreator[]{jdbc, jndi}; From ec630185df63bd1fc551211cb7ed788badadf649 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 10:24:35 +0800 Subject: [PATCH 04/15] =?UTF-8?q?REPORT-89171=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E5=A2=9E=E4=B8=8D=E6=94=AF=E6=8C=81=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B=E6=9C=AA=E5=8F=97?= =?UTF-8?q?=E5=88=B0=E9=99=90=E5=88=B6=20=E3=80=90=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E3=80=91=E6=9C=AA=E8=80=83=E8=99=91=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=AE=BE=E8=AE=A1=E4=B8=8B=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=9A=84lic=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0rpc=E6=8E=A5=E5=8F=A3=EF=BC=8C=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8lic=E6=98=AF=E5=90=A6=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/connect/ConnectionListPane.java | 3 ++- .../datapane/connect/ConnectionManagerPane.java | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 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 8eb13afca0..0e0a655a08 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 @@ -22,7 +22,6 @@ import com.fr.file.ConnectionConfig; import com.fr.file.ConnectionOperator; import com.fr.general.NameObject; import com.fr.log.FineLoggerFactory; -import com.fr.regist.FRCoreContext; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; @@ -116,6 +115,8 @@ public class ConnectionListPane extends JListControlPane implements ConnectionSh /** * 创建菜单项 + *

+ * 方法中获取limitDatabaseType使用了远程rpc调用,可能会比较耗时 * * @return 菜单项 */ diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index 0c1d88022e..eb8171d353 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -1,14 +1,16 @@ package com.fr.design.data.datapane.connect; import com.fr.data.impl.Connection; +import com.fr.data.impl.JDBCDatabaseConnection; import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.file.ConnectionConfig; import com.fr.general.NameObject; -import com.fr.license.database.DatabaseTypeValidateUtil; import com.fr.license.exception.DataBaseNotSupportedException; import com.fr.stable.Nameable; +import com.fr.workspace.WorkContext; +import com.fr.workspace.server.database.DataBaseTypeOperator; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -75,7 +77,14 @@ public class ConnectionManagerPane extends LoadingBasicPane implements Connectio Nameable wrapper = selectedValue.wrapper; try { Connection connection = (Connection) ((NameObject) wrapper).getObject(); - DatabaseTypeValidateUtil.validateDatabaseType(connection.getDriver(), connection.feature()); + // 仅校验jdbc连接,其他插件数据连接不进行校验 + if (connection instanceof JDBCDatabaseConnection) { + DataBaseNotSupportedException exception = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); + if (exception != null) { + throw exception; + } + } + } catch (DataBaseNotSupportedException e) { // 仅抛出数据库类型不支持异常 throw e; From af372c267fc88f335d388cd56ffaa545819542e3 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 11:25:18 +0800 Subject: [PATCH 05/15] =?UTF-8?q?REPORT-88826=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E5=A2=9E=E4=B8=8D=E6=94=AF=E6=8C=81=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=9E=8B=E6=9C=AA=E5=8F=97?= =?UTF-8?q?=E5=88=B0=E9=99=90=E5=88=B6=20=E5=B0=81=E8=A3=85DataBaseNotSupp?= =?UTF-8?q?ortedException=E7=94=A8=E4=BA=8Erpc=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/connect/ConnectionManagerPane.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index eb8171d353..c664438f0a 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -11,6 +11,7 @@ import com.fr.license.exception.DataBaseNotSupportedException; import com.fr.stable.Nameable; import com.fr.workspace.WorkContext; import com.fr.workspace.server.database.DataBaseTypeOperator; +import com.fr.workspace.server.database.DatabaseExceptionBean; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -79,9 +80,9 @@ public class ConnectionManagerPane extends LoadingBasicPane implements Connectio Connection connection = (Connection) ((NameObject) wrapper).getObject(); // 仅校验jdbc连接,其他插件数据连接不进行校验 if (connection instanceof JDBCDatabaseConnection) { - DataBaseNotSupportedException exception = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); - if (exception != null) { - throw exception; + DatabaseExceptionBean bean = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); + if (bean != null) { + throw new DataBaseNotSupportedException(bean.getErrorMsg()); } } From 3d57a6bff5e66c7f4a5b2cfd153ef8c3ab58c941 Mon Sep 17 00:00:00 2001 From: roger Date: Fri, 10 Feb 2023 13:19:18 +0800 Subject: [PATCH 06/15] =?UTF-8?q?REPORT-87542=20=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E7=82=B9=E5=87=BB=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E8=A7=A6=E5=8F=91=E7=B2=98=E8=B4=B4?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E6=8F=90=E7=A4=BA=E6=B2=A1=E6=9C=89=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/file/DefaultTemplateTreeDefineProcessor.java | 5 +++++ .../src/main/java/com/fr/design/file/TemplateTreePane.java | 1 + 2 files changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java index feb1e696fd..63b88132bc 100644 --- a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java +++ b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java @@ -28,6 +28,7 @@ import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.collections.CollectionUtils; import com.fr.stable.project.ProjectConstants; +import com.fr.workspace.WorkContext; import javax.swing.BorderFactory; import javax.swing.JDialog; @@ -229,6 +230,10 @@ public class DefaultTemplateTreeDefineProcessor extends AbstractTemplateTreeDefi } //确定目标目录并检查权限 FileOperations selectedOperation = DesignerFrameFileDealerPane.getInstance().getSelectedOperation(); + //没有选中目标目录时粘贴,允许超管往根目录粘贴 + if (selectedOperation.getFileNode() == null && WorkContext.getCurrent().isRoot()) { + return true; + } if (!selectedOperation.access()) { FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Basic_Template_Permission_Denied"), diff --git a/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java b/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java index 18abbb7e28..2867c121b6 100644 --- a/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java +++ b/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java @@ -307,6 +307,7 @@ public class TemplateTreePane extends JPanel implements FileOperations { if (reportletsTree.getSelectionCount() == 0) { //没选中文件刷新根目录 reportletsTree.refresh(); + return; } reportletsTree.refreshParent(Objects.requireNonNull(reportletsTree.getSelectionPath())); DesignerFrameFileDealerPane.getInstance().refreshRightToolBarBy(null); From 9c3d02995035cc6c84af517d7f2bf6c4339ca2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Fri, 10 Feb 2023 13:47:08 +0800 Subject: [PATCH 07/15] =?UTF-8?q?REPORT-88426=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E9=87=8D=E5=90=8D=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A8=A1=E6=9D=BF=E4=BC=9A=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/BasicTableDataTreePane.java | 8 ++------ .../fr/design/data/DesignTableDataManager.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java index fa1fe545ed..b3c090d549 100644 --- a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java @@ -378,12 +378,8 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp protected boolean isDsNameRepeaded(String name) { allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); - for (int i = 0; i < allDSNames.length; i++) { - if (ComparatorUtils.equals(name, allDSNames[i])) { - return true; - } - } - return false; + Set allDSNamesWithoutPermissions = DesignTableDataManager.getAllDSNamesWithoutPermissions(tc.getBook()); + return allDSNamesWithoutPermissions.contains(name); } protected KeyAdapter getTableTreeNodeListener(final UpdateAction editAction, final UpdateAction previewTableDataAction, final UpdateAction removeAction, final TableDataSourceOP op, final TableDataTree dataTree) { diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index e18b2a47d3..536ce1f972 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -48,6 +48,7 @@ import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -295,6 +296,22 @@ public abstract class DesignTableDataManager { return list.toArray(new String[0]); } + /** + * 获取所有的数据集名称,无论模板是不是有数据集的权限 + */ + public static Set getAllDSNamesWithoutPermissions(TableDataSource source) { + Set names = new HashSet<>(); + String[] allDSNames = getAllDSNames(source); + Map tableDatas = TableDataConfig.getInstance().getTableDatas(); + for (String dsName : allDSNames) { + names.add(dsName); + } + for (Map.Entry entry : tableDatas.entrySet()) { + names.add(entry.getKey()); + } + return names; + } + /** * 不根据过滤设置,返回当前模板数据集、服务器数据集、存储过程本身,是有顺序的 */ From fe9ba332303577e5e1fb515496be9ac58ef980db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Fri, 10 Feb 2023 13:48:47 +0800 Subject: [PATCH 08/15] =?UTF-8?q?REPORT-88426=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E9=87=8D=E5=90=8D=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A8=A1=E6=9D=BF=E4=BC=9A=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/file/export/ExcelExportAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java b/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java index 0933387062..171a68ce8d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/file/export/ExcelExportAction.java @@ -12,7 +12,7 @@ public class ExcelExportAction extends AbstractExcelExportAction { public ExcelExportAction(JWorkBook jwb) { super(jwb); this.setMenuKeySet(KeySetUtils.SIMPLE_EXCEL_EXPORT); - this.setName(getMenuKeySet().getMenuKeySetName() + "..."); + this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/excel.png")); } From ddafd1f39352af2f36578562991ec5dfd2346c25 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 14:33:19 +0800 Subject: [PATCH 09/15] =?UTF-8?q?REPORT-88826=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=B1=BB=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/datapane/connect/ConnectionManagerPane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index c664438f0a..a79ec6edc0 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -11,7 +11,7 @@ import com.fr.license.exception.DataBaseNotSupportedException; import com.fr.stable.Nameable; import com.fr.workspace.WorkContext; import com.fr.workspace.server.database.DataBaseTypeOperator; -import com.fr.workspace.server.database.DatabaseExceptionBean; +import com.fr.workspace.server.database.ResultBean; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -80,7 +80,7 @@ public class ConnectionManagerPane extends LoadingBasicPane implements Connectio Connection connection = (Connection) ((NameObject) wrapper).getObject(); // 仅校验jdbc连接,其他插件数据连接不进行校验 if (connection instanceof JDBCDatabaseConnection) { - DatabaseExceptionBean bean = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); + ResultBean bean = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); if (bean != null) { throw new DataBaseNotSupportedException(bean.getErrorMsg()); } From 071b96c7120458bc897a0147432dbb3c65caf7e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Fri, 10 Feb 2023 14:44:49 +0800 Subject: [PATCH 10/15] =?UTF-8?q?REPORT-88426=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=92=8C=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E9=87=8D=E5=90=8D=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=A8=A1=E6=9D=BF=E4=BC=9A=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C--=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/data/DesignTableDataManager.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java index 536ce1f972..5134e88c8b 100644 --- a/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java +++ b/designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java @@ -301,11 +301,16 @@ public abstract class DesignTableDataManager { */ public static Set getAllDSNamesWithoutPermissions(TableDataSource source) { Set names = new HashSet<>(); - String[] allDSNames = getAllDSNames(source); - Map tableDatas = TableDataConfig.getInstance().getTableDatas(); - for (String dsName : allDSNames) { - names.add(dsName); + Map resMap = new HashMap<>(); + // 模板数据集 + addTemplateData(resMap, source); + // 存储过程 + addStoreProcedureData(resMap); + for (Map.Entry entry : resMap.entrySet()) { + names.add(entry.getKey()); } + //服务器数据集 + Map tableDatas = TableDataConfig.getInstance().getTableDatas(); for (Map.Entry entry : tableDatas.entrySet()) { names.add(entry.getKey()); } From 4da40ee14d3532bdde8e57fb632ccb64f1f80e6b Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 14:47:15 +0800 Subject: [PATCH 11/15] =?UTF-8?q?REPORT-88826=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=B1=BB=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connect/ConnectionManagerPane.java | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index a79ec6edc0..2641452218 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -11,7 +11,7 @@ import com.fr.license.exception.DataBaseNotSupportedException; import com.fr.stable.Nameable; import com.fr.workspace.WorkContext; import com.fr.workspace.server.database.DataBaseTypeOperator; -import com.fr.workspace.server.database.ResultBean; +import com.fr.workspace.server.database.DatabaseResultBean; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -76,21 +76,13 @@ public class ConnectionManagerPane extends LoadingBasicPane implements Connectio ListModelElement selectedValue = this.connectionListPane.getSelectedValue(); if (selectedValue != null) { Nameable wrapper = selectedValue.wrapper; - try { - Connection connection = (Connection) ((NameObject) wrapper).getObject(); - // 仅校验jdbc连接,其他插件数据连接不进行校验 - if (connection instanceof JDBCDatabaseConnection) { - ResultBean bean = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); - if (bean != null) { - throw new DataBaseNotSupportedException(bean.getErrorMsg()); - } + Connection connection = (Connection) ((NameObject) wrapper).getObject(); + // 仅校验jdbc连接,其他插件数据连接不进行校验 + if (connection instanceof JDBCDatabaseConnection) { + DatabaseResultBean bean = WorkContext.getCurrent().get(DataBaseTypeOperator.class).validateDatabaseType(connection.getDriver(), connection.feature()); + if (bean.equals(DatabaseResultBean.DefaultBean())) { + throw new DataBaseNotSupportedException(bean.getMsg()); } - - } catch (DataBaseNotSupportedException e) { - // 仅抛出数据库类型不支持异常 - throw e; - } catch (Exception e) { - // ignore } } } From 0895e173b57b411fd49b4ec34a254e7e4dc881dd Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 14:59:41 +0800 Subject: [PATCH 12/15] =?UTF-8?q?REPORT-89353=20&&=20REPORT-89358=20&&=20R?= =?UTF-8?q?EPORT-89237=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0?= =?UTF-8?q?=E3=80=91=20REPORT-89358=EF=BC=9A=E4=B8=8A=E7=A7=BB=E4=B8=8B?= =?UTF-8?q?=E7=A7=BB=E5=88=A0=E9=99=A4=E6=9C=AA=E8=A7=A6=E5=8F=91=E6=A8=A1?= =?UTF-8?q?=E7=89=88=E4=BF=9D=E5=AD=98=E4=BA=8B=E4=BB=B6=20EPORT-89353?= =?UTF-8?q?=EF=BC=9A=E6=9C=AA=E5=B0=86=E8=84=B1=E6=95=8F=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?list=E5=86=99=E5=85=A5=E5=88=B0frm=E5=86=B3=E7=AD=96=E8=A1=A8?= =?UTF-8?q?=20REPORT-89237=EF=BC=9A=E9=A2=84=E8=A7=88=E6=97=B6=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E6=A0=BC=E5=BC=8F=E7=94=9F=E6=95=88=E5=9C=A8?= =?UTF-8?q?=E5=86=99=E5=85=A5html=E6=97=B6=EF=BC=8C=E5=9C=A8SE=E4=B8=AD?= =?UTF-8?q?=E4=BB=85=E5=AF=B9=E5=8E=9F=E5=A7=8B=E5=80=BC=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BA=86=E8=84=B1=E6=95=8F=EF=BC=9B=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=BD=A2=E6=80=81=E8=AE=A1=E7=AE=97=E5=9C=A8=E8=84=B1=E6=95=8F?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=90=8E=20=E3=80=90=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=80=9D=E8=B7=AF=E3=80=91=20EPORT-89358=EF=BC=9A=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=A2=9E=E5=8A=A0=E8=A7=A6=E5=8F=91=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E4=BA=8B=E4=BB=B6=20EPORT-89353=EF=BC=9Afrm?= =?UTF-8?q?=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8=E6=B7=BB=E5=8A=A0=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E5=86=99=E5=85=A5list=E4=BF=A1=E6=81=AF=20REPORT-8923?= =?UTF-8?q?7=EF=BC=9A=E8=8B=A5=E5=8D=95=E5=85=83=E6=A0=BC=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E6=A0=BC=E5=BC=8F=E5=B1=9E=E6=80=A7=EF=BC=8C?= =?UTF-8?q?=E5=B0=86=E5=9C=A8=E5=86=99=E5=85=A5html=E6=97=B6=E5=86=8D?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=84=B1=E6=95=8F=EF=BC=9B=E5=B0=86=E8=84=B1?= =?UTF-8?q?=E6=95=8F=E8=AE=A1=E7=AE=97=E4=BF=AE=E6=94=B9=E5=88=B0=E5=BD=A2?= =?UTF-8?q?=E6=80=81=E8=AE=A1=E7=AE=97=E5=90=8E=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/CellDesensitizationTableModel.java | 9 ++++----- .../model/DesensitizationCellPane.java | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/CellDesensitizationTableModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/CellDesensitizationTableModel.java index f73b344a80..dcc1232396 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/CellDesensitizationTableModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/CellDesensitizationTableModel.java @@ -99,11 +99,10 @@ public class CellDesensitizationTableModel extends UITableModelAdapter roleMap; private DesensitizationRule rule; + private static Map> latestRules; private CellDesensitizationTableModel model; @@ -87,6 +90,7 @@ public class DesensitizationCellPane extends BasicBeanPane { rolesComboBox = new RuleUIComboCheckBox(); rolesComboBox.setPlaceHolder(Toolkit.i18nText("Fine-Design_Report_Desensitization_Role_Place_Holder")); rolesComboBox.setEnabled(true); + latestRules = new HashMap<>(); emptyTextField = new UITextField(); emptyTextField.setEnabled(false); @@ -127,7 +131,7 @@ public class DesensitizationCellPane extends BasicBeanPane { Set roleIds = generateRolesIdsBySelectedValues(); if (Objects.nonNull(selectBean) && !selectBean.getRoleIds().equals(roleIds)) { selectBean.setRoleIds(generateRolesIdsBySelectedValues()); - model.fireAttrChanged(); + model.fireTableDataChanged(); } } }; @@ -135,8 +139,10 @@ public class DesensitizationCellPane extends BasicBeanPane { private final ActionListener chooseRuleListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + CellDesensitizationBean selectBean = model.getSelectedValue(); - DesensitizationRulePane rulePane = new DesensitizationRulePane(new HashMap<>()); + latestRules = DesensitizationRuleManager.getInstance().getAllRules(); + DesensitizationRulePane rulePane = new DesensitizationRulePane(latestRules); BasicDialog ruleDialog = rulePane.showWindowWithCustomSize(SwingUtilities.getWindowAncestor(parent), new DialogActionAdapter() { @Override @@ -149,7 +155,7 @@ public class DesensitizationCellPane extends BasicBeanPane { // 非正常状态需要颜色修改为红色 refreshRuleState(selectBean); - model.fireAttrChanged(); + model.fireTableDataChanged(); } rule = null; } @@ -211,6 +217,9 @@ public class DesensitizationCellPane extends BasicBeanPane { label.setText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Setting") + row); } + /** + * 刷新用户组信息 + */ private void refreshRoles() { Map roles = TableDataPreviewDesensitizeManager.getInstance().getAllRoles(); if (!roleMap.equals(roles)) { @@ -220,7 +229,7 @@ public class DesensitizationCellPane extends BasicBeanPane { } private void refreshRuleState(CellDesensitizationBean value) { - DesensitizationRuleStatus ruleStatus = DesensitizationRuleManager.getInstance().getRuleStatus(value.getDesensitizationRule()); + DesensitizationRuleStatus ruleStatus = DesensitizationRuleManager.getInstance().getRuleStatus(value.getDesensitizationRule(), latestRules); if (value.equals(CellDesensitizationBean.createEmptyBean())) { ruleTextField.setForeground(Color.GRAY); } else if (ruleStatus != DesensitizationRuleStatus.NORMAL) { From 716209f89003ecbd7b90f0ec7c7e509a72e5759b Mon Sep 17 00:00:00 2001 From: roger Date: Fri, 10 Feb 2023 16:26:00 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/DefaultTemplateTreeDefineProcessor.java | 10 ++++++---- .../main/java/com/fr/design/file/TemplateTreePane.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java index 63b88132bc..1bcfe3c622 100644 --- a/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java +++ b/designer-base/src/main/java/com/fr/design/file/DefaultTemplateTreeDefineProcessor.java @@ -230,11 +230,13 @@ public class DefaultTemplateTreeDefineProcessor extends AbstractTemplateTreeDefi } //确定目标目录并检查权限 FileOperations selectedOperation = DesignerFrameFileDealerPane.getInstance().getSelectedOperation(); - //没有选中目标目录时粘贴,允许超管往根目录粘贴 - if (selectedOperation.getFileNode() == null && WorkContext.getCurrent().isRoot()) { - return true; + boolean rootAuthority = true; + if (selectedOperation.getFileNode() == null && selectedOperation instanceof TemplateTreePane) { + //没有选中文件节点时,默认粘贴到根目录下,所以直接检测根目录是否有权限 + ExpandMutableTreeNode root = (ExpandMutableTreeNode) ((TemplateTreePane) selectedOperation).getTemplateFileTree().getModel().getRoot(); + rootAuthority = root.hasFullAuthority(); } - if (!selectedOperation.access()) { + if (!rootAuthority && !selectedOperation.access()) { FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Basic_Template_Permission_Denied"), Toolkit.i18nText("Fine-Design_Basic_Alert"), diff --git a/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java b/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java index 2867c121b6..d985595f5f 100644 --- a/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java +++ b/designer-base/src/main/java/com/fr/design/file/TemplateTreePane.java @@ -311,7 +311,7 @@ public class TemplateTreePane extends JPanel implements FileOperations { } reportletsTree.refreshParent(Objects.requireNonNull(reportletsTree.getSelectionPath())); DesignerFrameFileDealerPane.getInstance().refreshRightToolBarBy(null); - FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Template_File_Tree_Refresh_Successfully") + "!"); + FineLoggerFactory.getLogger().info(Toolkit.i18nText("Fine-Design_Basic_Template_File_Tree_Refresh_Successfully")); } From 40c8cc780085e69d1a339cf419d2e35edc66cef6 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Fri, 10 Feb 2023 17:39:31 +0800 Subject: [PATCH 14/15] =?UTF-8?q?REPORT-83849=20&&=20REPORT-89327=20?= =?UTF-8?q?=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91=E6=9C=AA?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=9B=E8=84=B1=E6=95=8F=E8=AE=A1=E7=AE=97=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=9A=84=E9=83=A8=E9=97=A8id=20api=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=9C=89=E8=AF=AF=EF=BC=8C=E6=9C=AA=E6=8B=BC=E6=8E=A5=E9=83=A8?= =?UTF-8?q?=E5=88=86id=E4=B8=8E=E8=81=8C=E4=BD=8Did=20=E3=80=90=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E5=A2=9E=E5=8A=A0=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3=EF=BC=9B=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=8E=B7=E5=8F=96=E9=83=A8=E5=88=86id=20=E7=9A=84api?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TableDataPreviewDesensitizeManager.java | 74 ------------------- .../TableDataDesensitizationTablePane.java | 4 +- .../model/DesensitizationCellEditor.java | 10 +++ .../model/DesensitizationCellPane.java | 27 ++++--- 4 files changed, 29 insertions(+), 86 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/TableDataPreviewDesensitizeManager.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/TableDataPreviewDesensitizeManager.java index 4fca1b49f0..abd5a4d166 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/TableDataPreviewDesensitizeManager.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/TableDataPreviewDesensitizeManager.java @@ -124,80 +124,6 @@ public class TableDataPreviewDesensitizeManager implements DesensitizationManage return Collections.EMPTY_LIST; } - /** - * 这个api会返回 部门职位 + 自定义角色 的Map - * 其中 key为 "pid" + "_" + "id",value为 "ptext" + "text" - * - * @return - */ - public Map getAllRoles() { - Map rolesMap = new LinkedHashMap<>(); - // 处理部门职位相关的用户组 - addDepartmentAndPositionRoles2Map(rolesMap); - // 处理自定义角色相关的用户组 - addCustomRoles2Map(rolesMap); - return rolesMap; - } - - /** - * 获取所有的部门职位,按照 key为 "pid" + "_" + "id",value为 "ptext" + "text"的格式添加到参数Map中 - * - * @param rolesMap - */ - private void addDepartmentAndPositionRoles2Map(Map rolesMap) { - try { - List postBeans = PositionService.getInstance().getDepartmentPostNameList(); - for (DepartmentPostBean postBean : postBeans) { - String department = postBean.getpText(); - String position = postBean.getText(); - String departmentId = postBean.getpId(); - String positionId = postBean.getId(); - if (!ComparatorUtils.equals(DecisionServiceConstants.DECISION_DEP_ROOT, postBean.getId()) && StringUtils.isNotEmpty(position)) { - // 只添加部门和职位同时存在的 - rolesMap.put(mergeRoleId(departmentId, positionId), mergeRoleText(department, position)); - } - } - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e, "[Desensitization] failed to add department and position roles to map for {}", e.getMessage()); - } - } - - /** - * 获取所有的自定义角色,按照 id - name添加到参数map里 - * - * @param rolesMap - */ - private void addCustomRoles2Map(Map rolesMap) { - try { - List allCustomRole = CustomRoleService.getInstance().getAllCustomRoleNameList(null); - allCustomRole.forEach(roleBean -> rolesMap.put(roleBean.getId(), roleBean.getText())); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e, "[Desensitization] failed to add custom role to map for {}", e.getMessage()); - } - } - - /** - * 合并部门 + 职位的名称 - * - * @param departmentName - * @param positionName - * @return - */ - private String mergeRoleText(String departmentName, String positionName) { - return departmentName + positionName; - } - - /** - * 合并部门 + 职位的id - * - * @param departmentId - * @param positionId - * @return - */ - private String mergeRoleId(String departmentId, String positionId) { - return departmentId + CONNECTOR + positionId; - } - /** * 根据列名,从PreviewTableModel中匹配列序号,如果返回-1代表未匹配到 * @param desensitizationItem diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java index a2fe6529c0..f1470d62d5 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java @@ -1,5 +1,6 @@ package com.fr.design.data.datapane.preview.desensitization.view.setting; +import com.fr.base.operator.org.OrganizationOperator; import com.fr.data.desensitize.base.DesensitizationTableData; import com.fr.data.desensitize.base.TableDataDesensitizationItem; import com.fr.data.desensitize.rule.DesensitizationRuleManager; @@ -10,6 +11,7 @@ import com.fr.design.data.tabledata.tabledatapane.loading.TipsPane; import com.fr.design.gui.itableeditorpane.UITableEditorPane; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.log.FineLoggerFactory; +import com.fr.workspace.WorkContext; import javax.swing.JPanel; import javax.swing.SwingWorker; @@ -89,7 +91,7 @@ public class TableDataDesensitizationTablePane extends JPanel { // 获取当前数据集的所有列名 columnNames.addAll(TableDataPreviewDesensitizeManager.getInstance().getColumnNamesByTableData(tableData)); // 获取当前所有用户组 - roleMap.putAll(TableDataPreviewDesensitizeManager.getInstance().getAllRoles()); + roleMap.putAll(WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles()); // 获取当前最新的所有规则 latestRules.putAll(DesensitizationRuleManager.getInstance().getAllRules()); return null; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java index a204833647..1dad93ff85 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java @@ -5,6 +5,7 @@ import com.fr.report.cell.desensitization.CellDesensitizationBean; import javax.swing.AbstractCellEditor; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.SwingWorker; import javax.swing.border.LineBorder; import javax.swing.table.TableCellEditor; import java.awt.Color; @@ -26,6 +27,15 @@ public class DesensitizationCellEditor extends AbstractCellEditor implements Tab @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + // 点击脱敏设置时刷新用户组信息和所有规则 + new SwingWorker(){ + + @Override + protected Void doInBackground() throws Exception { + editPane.refresh(); + return null; + } + }.execute(); editPane.populate((CellDesensitizationBean) value, row); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java index 91857800c5..1cd87f5048 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java @@ -1,11 +1,11 @@ package com.fr.design.mainframe.cell.settingpane.desensitization.model; +import com.fr.base.operator.org.OrganizationOperator; import com.fr.data.desensitize.rule.DesensitizationRuleManager; import com.fr.data.desensitize.rule.base.DesensitizationRule; import com.fr.data.desensitize.rule.base.DesensitizationRuleSource; import com.fr.data.desensitize.rule.base.DesensitizationRuleStatus; import com.fr.design.beans.BasicBeanPane; -import com.fr.design.data.datapane.preview.desensitization.TableDataPreviewDesensitizeManager; import com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRulePane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; @@ -22,11 +22,11 @@ import com.fr.design.layout.VerticalFlowLayout; import com.fr.report.cell.desensitization.CellDesensitizationBean; import com.fr.stable.StringUtils; import com.fr.third.org.apache.commons.collections4.map.HashedMap; +import com.fr.workspace.WorkContext; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingUtilities; -import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -56,8 +56,8 @@ public class DesensitizationCellPane extends BasicBeanPane { private UITextField ruleTextField; private UIComboCheckBox rolesComboBox; private static final String APOSTROPHE = "..."; - private Map roleMap; private DesensitizationRule rule; + private static Map roleMap; private static Map> latestRules; private CellDesensitizationTableModel model; @@ -141,7 +141,6 @@ public class DesensitizationCellPane extends BasicBeanPane { public void actionPerformed(ActionEvent e) { CellDesensitizationBean selectBean = model.getSelectedValue(); - latestRules = DesensitizationRuleManager.getInstance().getAllRules(); DesensitizationRulePane rulePane = new DesensitizationRulePane(latestRules); BasicDialog ruleDialog = rulePane.showWindowWithCustomSize(SwingUtilities.getWindowAncestor(parent), new DialogActionAdapter() { @@ -204,7 +203,6 @@ public class DesensitizationCellPane extends BasicBeanPane { public void populate(CellDesensitizationBean value, int row) { refreshRoles(); - String ruleName = value.getDesensitizationRule().getRuleName(); ruleTextField.setText(ruleName); @@ -218,14 +216,10 @@ public class DesensitizationCellPane extends BasicBeanPane { } /** - * 刷新用户组信息 + * combobox组件刷新用户组信息 */ private void refreshRoles() { - Map roles = TableDataPreviewDesensitizeManager.getInstance().getAllRoles(); - if (!roleMap.equals(roles)) { - roleMap = roles; - rolesComboBox.refreshCombo(roles.values().toArray()); - } + rolesComboBox.refreshCombo(roleMap.values().toArray()); } private void refreshRuleState(CellDesensitizationBean value) { @@ -310,4 +304,15 @@ public class DesensitizationCellPane extends BasicBeanPane { return omitText.equals(StringUtils.EMPTY) ? text : omitText; } } + + /** + * 刷新用户组和平台规则 + */ + public void refresh() { + + roleMap = WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles(); + + latestRules = DesensitizationRuleManager.getInstance().getAllRules(); + } + } From 2e97b4532853134885d9f5b5fc2867462e044109 Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Mon, 13 Feb 2023 10:37:07 +0800 Subject: [PATCH 15/15] =?UTF-8?q?REPORT-83849=20&&=20REPORT-89327=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TableDataDesensitizationTablePane.java | 2 +- .../model/DesensitizationCellEditor.java | 12 ++--- .../model/DesensitizationCellPane.java | 42 +++++++++++------ .../model/UpdateDataWorker.java | 47 +++++++++++++++++++ 4 files changed, 79 insertions(+), 24 deletions(-) create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/UpdateDataWorker.java diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java index f1470d62d5..6473a02d07 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/setting/TableDataDesensitizationTablePane.java @@ -91,7 +91,7 @@ public class TableDataDesensitizationTablePane extends JPanel { // 获取当前数据集的所有列名 columnNames.addAll(TableDataPreviewDesensitizeManager.getInstance().getColumnNamesByTableData(tableData)); // 获取当前所有用户组 - roleMap.putAll(WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles()); + roleMap.putAll(WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles4Desensitization()); // 获取当前最新的所有规则 latestRules.putAll(DesensitizationRuleManager.getInstance().getAllRules()); return null; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java index 1dad93ff85..3d581f4e43 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellEditor.java @@ -10,6 +10,7 @@ import javax.swing.border.LineBorder; import javax.swing.table.TableCellEditor; import java.awt.Color; import java.awt.Component; +import java.util.Map; /** * 脱敏规则设置cellEditor @@ -24,18 +25,11 @@ public class DesensitizationCellEditor extends AbstractCellEditor implements Tab editPane = new DesensitizationCellPane(parent, model); } - @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // 点击脱敏设置时刷新用户组信息和所有规则 - new SwingWorker(){ - - @Override - protected Void doInBackground() throws Exception { - editPane.refresh(); - return null; - } - }.execute(); + SwingWorker, Void> updateDateWorker = new UpdateDataWorker(); + updateDateWorker.execute(); editPane.populate((CellDesensitizationBean) value, row); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java index 1cd87f5048..818a26205d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/DesensitizationCellPane.java @@ -10,6 +10,7 @@ import com.fr.design.data.datapane.preview.desensitization.view.rule.Desensitiza import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; import com.fr.design.event.UIObserverListener; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.icombocheckbox.UIComboCheckBox; import com.fr.design.gui.ilable.UILabel; @@ -19,6 +20,8 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.VerticalFlowLayout; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JTemplateActionListener; import com.fr.report.cell.desensitization.CellDesensitizationBean; import com.fr.stable.StringUtils; import com.fr.third.org.apache.commons.collections4.map.HashedMap; @@ -27,6 +30,7 @@ import com.fr.workspace.WorkContext; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -39,6 +43,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * 单元格脱敏规则设置面板 @@ -60,6 +65,7 @@ public class DesensitizationCellPane extends BasicBeanPane { private static Map roleMap; private static Map> latestRules; private CellDesensitizationTableModel model; + private static final CellDesensitizationBean EMPTY_BEAN = CellDesensitizationBean.createEmptyBean(); DesensitizationCellPane(Component parent, CellDesensitizationTableModel model) { @@ -149,10 +155,6 @@ public class DesensitizationCellPane extends BasicBeanPane { rule = rulePane.updateBean(); if (Objects.nonNull(selectBean) && Objects.nonNull(rule) && !selectBean.getDesensitizationRule().equals(rule)) { selectBean.setDesensitizationRule(rule); - ruleTextField.setText(rule.getRuleName()); - - // 非正常状态需要颜色修改为红色 - refreshRuleState(selectBean); model.fireTableDataChanged(); } @@ -203,28 +205,42 @@ public class DesensitizationCellPane extends BasicBeanPane { public void populate(CellDesensitizationBean value, int row) { refreshRoles(); - String ruleName = value.getDesensitizationRule().getRuleName(); - ruleTextField.setText(ruleName); + refreshRuleText(value); // 非正常状态需要颜色修改为红色 refreshRuleState(value); Map map = generateRolesCheckBoxSelectedValues(value); rolesComboBox.setSelectedValues(map); - label.setText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Setting") + row); + label.setText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Setting") + (row + 1)); + } + + /** + * 刷新规则文本 + * + * @param value + */ + private void refreshRuleText(CellDesensitizationBean value) { + ruleTextField.setText(StringUtils.EMPTY); + DesensitizationRule desensitizationRule = value.getDesensitizationRule(); + if (desensitizationRule != null) { + String ruleName = desensitizationRule.getRuleName(); + ruleTextField.setText(ruleName); + } } /** * combobox组件刷新用户组信息 */ private void refreshRoles() { + rolesComboBox.clearText(); rolesComboBox.refreshCombo(roleMap.values().toArray()); } private void refreshRuleState(CellDesensitizationBean value) { DesensitizationRuleStatus ruleStatus = DesensitizationRuleManager.getInstance().getRuleStatus(value.getDesensitizationRule(), latestRules); - if (value.equals(CellDesensitizationBean.createEmptyBean())) { + if (EMPTY_BEAN.equals(value)) { ruleTextField.setForeground(Color.GRAY); } else if (ruleStatus != DesensitizationRuleStatus.NORMAL) { ruleTextField.setForeground(Color.RED); @@ -306,13 +322,11 @@ public class DesensitizationCellPane extends BasicBeanPane { } /** - * 刷新用户组和平台规则 + * 更新用户组和平台规则 */ - public void refresh() { - - roleMap = WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles(); - - latestRules = DesensitizationRuleManager.getInstance().getAllRules(); + public static void updateData(Map roleMap, Map> latestRules) { + DesensitizationCellPane.roleMap = roleMap; + DesensitizationCellPane.latestRules = latestRules; } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/UpdateDataWorker.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/UpdateDataWorker.java new file mode 100644 index 0000000000..d60e9a2c82 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/model/UpdateDataWorker.java @@ -0,0 +1,47 @@ +package com.fr.design.mainframe.cell.settingpane.desensitization.model; + +import com.fr.base.operator.org.OrganizationOperator; +import com.fr.data.desensitize.rule.DesensitizationRuleManager; +import com.fr.data.desensitize.rule.base.DesensitizationRule; +import com.fr.data.desensitize.rule.base.DesensitizationRuleSource; +import com.fr.workspace.WorkContext; + +import javax.swing.SwingWorker; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutionException; + +/** + * 刷新脱敏设置全局 roles 和 rules SwingWorker + * + * @author Leo.Qin + * @version 11.0 + * Created by Leo.Qin on 2023/1/5 + */ +public class UpdateDataWorker extends SwingWorker, Void> { + + private final String ROLE_KEY = "Roles"; + private final String RULE_KEY = "Rules"; + + @Override + protected Map doInBackground() { + Map result = new HashMap<>(); + Map allRoles = WorkContext.getCurrent().get(OrganizationOperator.class).getAllRoles4Desensitization(); + Map> allRules = DesensitizationRuleManager.getInstance().getAllRules(); + + result.put(ROLE_KEY, allRoles); + result.put(RULE_KEY, allRules); + + return result; + } + + @Override + protected void done() { + try { + Map result = get(); + DesensitizationCellPane.updateData((Map) result.get(ROLE_KEY), (Map>) result.get(RULE_KEY)); + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } +}