diff --git a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaCellEditor.java b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaCellEditor.java index 6acc4d9116..2125729e56 100644 --- a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaCellEditor.java +++ b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaCellEditor.java @@ -153,7 +153,7 @@ public class SchemaCellEditor extends DialogCellEditor { } if ("tSAPBapi".equals(node.getComponent().getName())) { node.getMetadataFromConnector(schemaToEdit); - executeCommand(new RepositoryChangeMetadataForSAPBapi(node, functionUnit, metaTable, null)); + executeCommand(new RepositoryChangeMetadataForSAPBapi(node, functionUnit, metaTable, null, index)); } else { executeCommand(new RepositoryChangeMetadataForSAPCommand(node, ISAPConstant.TABLE_SCHEMAS, metaTable.getLabel(), metaTable, index)); diff --git a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaOperationChoiceDialog.java b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaOperationChoiceDialog.java index 152caf2ace..0eb7c1026e 100644 --- a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaOperationChoiceDialog.java +++ b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/celleditor/SchemaOperationChoiceDialog.java @@ -250,6 +250,9 @@ public class SchemaOperationChoiceDialog extends SelectionDialog { setButtonAndStatus(checkSchema()); if (schemaCombo != null) { schemaCombo.setVisible(true); + if (schemaCombo.getItemCount() == 0) { + getOkButton().setEnabled(false); + } } } @@ -328,6 +331,7 @@ public class SchemaOperationChoiceDialog extends SelectionDialog { valid = false; } } + if (!valid && processType == EProcessType.BUILTIN) { // only, change to repository if (schemaCombo.getText().equals(schemaName)) { @@ -349,7 +353,7 @@ public class SchemaOperationChoiceDialog extends SelectionDialog { break; } } - } else { + } else if (item != null) { Set tables = ConnectionHelper.getTables(item.getConnection()); for (MetadataTable table : (Set) tables) { if (table.getLabel().equals(schemaCombo.getText())) { diff --git a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/command/RepositoryChangeMetadataForSAPBapi.java b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/command/RepositoryChangeMetadataForSAPBapi.java index c176ddc064..5447c61b7d 100644 --- a/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/command/RepositoryChangeMetadataForSAPBapi.java +++ b/main/plugins/org.talend.core.ui/src/main/java/org/talend/core/ui/metadata/command/RepositoryChangeMetadataForSAPBapi.java @@ -52,8 +52,10 @@ public class RepositoryChangeMetadataForSAPBapi extends Command { private final String TRUE = "true"; //$NON-NLS-1$ + private Integer selectionIndex; + public RepositoryChangeMetadataForSAPBapi(INode node, SAPFunctionUnit functionUnit, IMetadataTable newMetadatTable, - IMetadataTable oldMetadataTable) { + IMetadataTable oldMetadataTable, Integer selectionIndex) { super(); this.node = node; this.functionUnit = functionUnit; @@ -62,6 +64,13 @@ public class RepositoryChangeMetadataForSAPBapi extends Command { newMetadatTable.setTableType(newMetadatTable.getTableType()); } this.oldMetadataTable = oldMetadataTable; + this.selectionIndex = selectionIndex; + + } + + public RepositoryChangeMetadataForSAPBapi(INode node, SAPFunctionUnit functionUnit, IMetadataTable newMetadatTable, + IMetadataTable oldMetadataTable) { + this(node, functionUnit, newMetadatTable, oldMetadataTable, null); } @Override @@ -104,10 +113,6 @@ public class RepositoryChangeMetadataForSAPBapi extends Command { inputTableParam.setValue(paramValues); } if (newMetadatTable != null) { - Map properties = newMetadatTable.getAdditionalProperties(); - if (properties != null) { - properties.put(ISINPUT, TRUE); - } // create new line createNewSchema(paramValues, newMetadatTable, MetadataSchemaType.INPUT.name()); } else { @@ -143,7 +148,7 @@ public class RepositoryChangeMetadataForSAPBapi extends Command { return; } Boolean isInput = MetadataSchemaType.INPUT.name().equals(tableType); - HashMap valueMap = new HashMap(); + Map valueMap = null; String uinqueTableName = node.getProcess().generateUniqueConnectionName( MultiSchemasUtil.getConnectionBaseName(newMetadatTable.getLabel())); @@ -151,14 +156,24 @@ public class RepositoryChangeMetadataForSAPBapi extends Command { if (paramType == null) { return; } + if (selectionIndex != null && selectionIndex < paramValues.size()) { + valueMap = paramValues.get(selectionIndex); + } + if (valueMap == null) { + valueMap = new HashMap(); + paramValues.add(valueMap); + } valueMap.put(ISAPConstant.NAME, TalendQuoteUtils.addQuotes(newMetadatTable.getLabel())); valueMap.put(ISAPConstant.TYPE, paramType); valueMap.put(ISAPConstant.FIELD_SCHEMA, uinqueTableName); if (isInput) { valueMap.put(ISAPConstant.PARENT_ROW, ""); //$NON-NLS-1$ + Map properties = newMetadatTable.getAdditionalProperties(); + if (properties != null) { + properties.put(ISINPUT, TRUE); + } } - paramValues.add(valueMap); if (oldMetadataTable != null) { CoreUIPlugin.getDefault().getDesignerCoreService().removeConnection(node, oldMetadataTable.getTableName());