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..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 @@ -5,10 +5,13 @@ import com.fr.data.impl.DBTableData; import com.fr.design.actions.tabledata.TableDataAction; import com.fr.design.beans.BasicBeanPane; 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; @@ -95,6 +98,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { * * @return 图片 */ + @Override public Icon menuIcon() { return createMenuIcon(); } @@ -112,6 +116,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { * * @return 提示 */ + @Override public String createTooltip() { return b ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Connect_SQL_Cannot_Null") : null; } @@ -166,11 +171,21 @@ 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(helper.createUnrepeatedName(this.getPrefix()), clazzOfInitCase.newInstance()); + } catch (InstantiationException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + @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