From b5c6415475c407b49c1cabf048c07f9a96915ec3 Mon Sep 17 00:00:00 2001 From: Kara Date: Mon, 23 Mar 2020 16:28:20 +0800 Subject: [PATCH] REPORT-28202 && REPORT-28259 && REPORT-27271 && REPORT-28036 --- .../com/fr/design/data/DesignTableDataManager.java | 9 +++++++++ .../tabledata/wrapper/AbstractTableDataWrapper.java | 13 ++++++++++--- .../fr/design/file/HistoryTemplateListCache.java | 3 +-- .../src/main/java/com/fr/start/BaseDesigner.java | 2 -- .../fr/design/data/DesignTableDataManagerTest.java | 9 +++++++++ 5 files changed, 29 insertions(+), 7 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 a84e1337b..dc7002fa8 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 @@ -248,6 +248,15 @@ public abstract class DesignTableDataManager { } } + public static String[] getDsColumnNames(String dsName) { + TableDataSource dataSource = getEditingTableDataSource(); + Map map = columnCache.get(dataSource); + if (map == null) { + return new String[0]; + } + return map.get(dsName); + } + /** * august:返回当前正在编辑的具有报表数据源的模板(基本报表、聚合报表) 包括 : 图表模板 * diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java index 812eb25af..a5d20cfcf 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/AbstractTableDataWrapper.java @@ -50,10 +50,11 @@ public abstract class AbstractTableDataWrapper implements TableDataWrapper { DesignModelAdapter adapter = DesignModelAdapter.getCurrentModelAdapter(); TableDataSource tds = adapter == null ? null : adapter.getBook(); String[] colNames = tabledata.getColumnNames(tds); + String[] colNamesInCache = DesignTableDataManager.getDsColumnNames(name); if(ArrayUtils.isNotEmpty(colNames)){ - columnNameList = new ArrayList(); - columnNameList.addAll(Arrays.asList(colNames)); - return columnNameList; + return toColumnNameList(colNames); + } else if (ArrayUtils.isNotEmpty(colNamesInCache)) { + return toColumnNameList(colNames); } EmbeddedTableData embeddedTableData = null; @@ -69,6 +70,12 @@ public abstract class AbstractTableDataWrapper implements TableDataWrapper { return columnNameList; } + private List toColumnNameList(String[] colNames) { + columnNameList = new ArrayList<>(); + columnNameList.addAll(Arrays.asList(colNames)); + return columnNameList; + } + /** * 生成子节点 * diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java index 6568f458d..f8b089fe6 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListCache.java @@ -407,8 +407,7 @@ public class HistoryTemplateListCache implements CallbackEvent { JTemplate jt = getCurrentEditingTemplate(); boolean access = jt != null && jt.getEditingFILE() != null && jt.getEditingFILE().exists(); if (access) { - closeSelectedReport(jt); - DesignerContext.getDesignerFrame().openTemplate(jt.getEditingFILE()); + jt.refreshResource(); } } diff --git a/designer-base/src/main/java/com/fr/start/BaseDesigner.java b/designer-base/src/main/java/com/fr/start/BaseDesigner.java index ba231a335..90ac634ce 100644 --- a/designer-base/src/main/java/com/fr/start/BaseDesigner.java +++ b/designer-base/src/main/java/com/fr/start/BaseDesigner.java @@ -3,7 +3,6 @@ */ package com.fr.start; -import com.fr.common.detect.CommonPortDetector; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.constants.DesignerLaunchStatus; @@ -77,7 +76,6 @@ public abstract class BaseDesigner extends ToolBarMenuDock { public void on(Event event, Null param) { EventDispatcher.stopListen(this); collectUserInformation(); - CommonPortDetector.getInstance().execute(); } }); } diff --git a/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java b/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java index c6675da0d..9a5ce7b8c 100644 --- a/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java @@ -9,6 +9,7 @@ import com.fr.design.data.tabledata.wrapper.TemplateTableDataWrapper; import com.fr.file.ProcedureConfig; import com.fr.file.TableDataConfig; import com.fr.invoke.Reflect; +import com.fr.stable.ArrayUtils; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; @@ -146,4 +147,12 @@ public class DesignTableDataManagerTest { "columnCache").get(); Assert.assertEquals(new String[]{"a", "b", "c"}, map.get(null).get("ds1")); } + + @Test + public void testGetDsColumnNames() { + Assert.assertTrue(ArrayUtils.isEmpty(DesignTableDataManager.getDsColumnNames("ds1"))); + String[] columnNames = new String[]{"a", "b", "c"}; + DesignTableDataManager.addDsColumnNames("ds1", new String[]{"a", "b", "c"}); + Assert.assertEquals(columnNames, DesignTableDataManager.getDsColumnNames("ds1")); + } }