From 6452df94491e23a46682f61a92ef9cd9ec7c87ec Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Thu, 30 Apr 2020 11:22:14 +0800 Subject: [PATCH 1/6] REPORT-27998 bugfix --- .../datapane/TableDataCreatorProducer.java | 2 + .../datapane/TableDataNameObjectCreator.java | 50 +++++++++++++++---- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java index 533139b37..d4e1c61b7 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java @@ -60,6 +60,7 @@ public class TableDataCreatorProducer { "Proc", "/com/fr/design/images/data/store_procedure.png", StoreProcedure.class, ProcedureDataPane.class) { + @Override public boolean shouldInsertSeparator() { return true; } @@ -92,6 +93,7 @@ public class TableDataCreatorProducer { }; TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"), "/com/fr/design/images/data/store_procedure.png", StoreProcedure.class, ProcedureDataPane.class) { + @Override public boolean shouldInsertSeparator() { return true; } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index a90f7a126..339eda7b9 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -1,14 +1,19 @@ package com.fr.design.data.datapane; import com.fr.base.BaseUtils; +import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; import com.fr.design.actions.tabledata.TableDataAction; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.data.DesignTableDataManager; import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.UnrepeatedNameHelper; import com.fr.design.icon.WarningIcon; import com.fr.general.ComparatorUtils; +import com.fr.general.NameObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; import com.fr.stable.StringUtils; import javax.swing.Icon; @@ -32,6 +37,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { private boolean isNeedInsertSeparator = false; private String prefix = ""; private java.util.List names = new ArrayList(); + private String[] allDSNames; public TableDataNameObjectCreator(TableDataAction action) { super(action.getDisplayName(), action.getIconPath(), action.getTableDataClass(), action.getUpdateTableDataPaneClass()); @@ -90,11 +96,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { } } - /** - * 取得菜单的图片 - * - * @return 图片 - */ + @Override public Icon menuIcon() { return createMenuIcon(); } @@ -107,11 +109,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { return b ? new WarningIcon(this.menuImage) : this.menuIcon; } - /** - * 创建提示 - * - * @return 提示 - */ + @Override public String createTooltip() { return b ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connect_SQL_Cannot_Null") : null; } @@ -166,11 +164,43 @@ public class TableDataNameObjectCreator extends NameObjectCreator { return false; } + @Override public boolean equals(Object obj) { return obj instanceof TableDataNameObjectCreator && ComparatorUtils.equals(menuName, ((TableDataNameObjectCreator) obj).menuName); } + @Override + public Nameable createNameable(UnrepeatedNameHelper helper) { + try { + return new NameObject(this.createUnrepeatedName(this.getPrefix()), clazzOfInitCase.newInstance()); + } catch (InstantiationException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + public String createUnrepeatedName(String prefix) { + int count = 1; + + while (isDsNameRepeated(prefix + count)) { + count++; + } + return prefix + count; + } + + private boolean isDsNameRepeated(String name) { + if (allDSNames == null) { + TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); + allDSNames = DesignTableDataManager.getAllDSNames(source); + } + for (String allDSName : allDSNames) { + if (ComparatorUtils.equals(name, allDSName)) { + return true; + } + } + return false; + } + @Override public int hashCode() { return menuName == null ? 0 : menuName.hashCode(); From ff1e06b88fec1964590e0224791c1f741fd2b1e8 Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Wed, 6 May 2020 11:16:45 +0800 Subject: [PATCH 2/6] REPORT-27998 bugfix add comment --- .../data/datapane/TableDataNameObjectCreator.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index 339eda7b9..20df61791 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -96,6 +96,11 @@ public class TableDataNameObjectCreator extends NameObjectCreator { } } + /** + * 取得菜单的图片 + * + * @return 图片 + */ @Override public Icon menuIcon() { return createMenuIcon(); @@ -109,6 +114,11 @@ public class TableDataNameObjectCreator extends NameObjectCreator { return b ? new WarningIcon(this.menuImage) : this.menuIcon; } + /** + * 创建提示 + * + * @return 提示 + */ @Override public String createTooltip() { return b ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connect_SQL_Cannot_Null") : null; From e1dfc732845e75c2669fa39d82fa8ad050a7c667 Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Wed, 6 May 2020 11:45:55 +0800 Subject: [PATCH 3/6] REPORT-27998 bugfix use ArrayUtils.contains to simply code. --- .../design/data/datapane/TableDataNameObjectCreator.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index 20df61791..3ff2ed51b 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -203,12 +203,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); allDSNames = DesignTableDataManager.getAllDSNames(source); } - for (String allDSName : allDSNames) { - if (ComparatorUtils.equals(name, allDSName)) { - return true; - } - } - return false; + return ArrayUtils.contains(allDSNames, name); } @Override From 9a68b44324045012480ccddcfa1785746f5acbb9 Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Wed, 6 May 2020 16:18:15 +0800 Subject: [PATCH 4/6] REPORT-27998 bugfix --- .../datapane/TableDataNameObjectCreator.java | 19 +-------- .../data/datapane/TableDataPaneListPane.java | 39 ++++++++----------- 2 files changed, 17 insertions(+), 41 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index 3ff2ed51b..5c32b3cb5 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -183,29 +183,12 @@ public class TableDataNameObjectCreator extends NameObjectCreator { @Override public Nameable createNameable(UnrepeatedNameHelper helper) { try { - return new NameObject(this.createUnrepeatedName(this.getPrefix()), clazzOfInitCase.newInstance()); + return new NameObject(helper.createUnrepeatedName(this.getPrefix()), clazzOfInitCase.newInstance()); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } } - public String createUnrepeatedName(String prefix) { - int count = 1; - - while (isDsNameRepeated(prefix + count)) { - count++; - } - return prefix + count; - } - - private boolean isDsNameRepeated(String name) { - if (allDSNames == null) { - TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); - allDSNames = DesignTableDataManager.getAllDSNames(source); - } - return ArrayUtils.contains(allDSNames, name); - } - @Override public int hashCode() { return menuName == null ? 0 : menuName.hashCode(); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java index d2fdc3229..35f6077b8 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -14,6 +14,7 @@ import com.fr.file.ProcedureConfig; import com.fr.file.TableDataConfig; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; +import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; import com.fr.stable.core.PropertyChangeAdapter; @@ -133,36 +134,28 @@ public class TableDataPaneListPane extends JListControlPane implements TableData return super.createUnrepeatedName(prefix); } String[] allDsNames = DesignTableDataManager.getAllDSNames(source); + + // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. + int count = 1; + while (isDsNameRepeated(prefix + count, allDsNames)) { + count++; + } + return prefix + count; + } + + private boolean isDsNameRepeated(String name, String[] allDsNames) { DefaultListModel model = this.getModel(); Nameable[] all = new Nameable[model.getSize()]; for (int i = 0; i < model.size(); i++) { all[i] = ((ListModelElement) model.get(i)).wrapper; } - // richer:生成的名字从1开始. kunsnat: 添加属性从0开始. - int count = all.length + 1; - while (true) { - String name_test = prefix + count; - boolean repeated = false; - for (int i = 0, len = model.size(); i < len; i++) { - Nameable nameable = all[i]; - if (ComparatorUtils.equals(nameable.getName(), name_test)) { - repeated = true; - break; - } - } - for (String dsname : allDsNames) { - if (ComparatorUtils.equals(dsname, name_test)) { - repeated = true; - break; - } + for (int i = 0, len = model.size(); i < len; i++) { + Nameable nameable = all[i]; + if (ComparatorUtils.equals(nameable.getName(), name)) { + return true; } - - if (!repeated) { - return name_test; - } - - count++; } + return ArrayUtils.contains(allDsNames, name); } @Override From 04a30afae4e902b12158af465972d59e346e6b46 Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Wed, 6 May 2020 17:07:50 +0800 Subject: [PATCH 5/6] =?UTF-8?q?REPORT-27998=20bugfix=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E7=B1=BB=E5=92=8C=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/data/datapane/TableDataNameObjectCreator.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index 5c32b3cb5..ce92574dc 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -1,11 +1,9 @@ package com.fr.design.data.datapane; import com.fr.base.BaseUtils; -import com.fr.data.TableDataSource; import com.fr.data.impl.DBTableData; import com.fr.design.actions.tabledata.TableDataAction; import com.fr.design.beans.BasicBeanPane; -import com.fr.design.data.DesignTableDataManager; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.UnrepeatedNameHelper; import com.fr.design.icon.WarningIcon; @@ -16,8 +14,8 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; -import javax.swing.Icon; -import java.awt.Image; +import javax.swing.*; +import java.awt.*; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; @@ -37,7 +35,6 @@ public class TableDataNameObjectCreator extends NameObjectCreator { private boolean isNeedInsertSeparator = false; private String prefix = ""; private java.util.List names = new ArrayList(); - private String[] allDSNames; public TableDataNameObjectCreator(TableDataAction action) { super(action.getDisplayName(), action.getIconPath(), action.getTableDataClass(), action.getUpdateTableDataPaneClass()); From bd68a99584552b1ecc8a560f08ce0e52715a839c Mon Sep 17 00:00:00 2001 From: "Java.Edge" Date: Wed, 6 May 2020 17:39:06 +0800 Subject: [PATCH 6/6] =?UTF-8?q?REPORT-27998=20bugfix=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/datapane/TableDataNameObjectCreator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index ce92574dc..3f0f08f35 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -14,8 +14,8 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.StringUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.Icon; +import java.awt.Image; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays;