Program: 118437
Project: 118437
Buggy source:
@SuppressWarnings("String_Node_Str") private void updateSchema(){
  Object updateObject=result.getUpdateObject();
  if (updateObject == null) {
    return;
  }
  if (updateObject instanceof Node) {
    Node node=(Node)updateObject;
    boolean builtIn=true;
    final IExternalNode externalNode=node.getExternalNode();
    if (result.getResultType() == EUpdateResult.UPDATE) {
      if (result.isChecked()) {
        if (result.getParameter() instanceof List) {
          if (PluginChecker.isEBCDICPluginLoaded()) {
            IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
            if (service != null) {
              if (service.isEbcdicNode(node)) {
                List<Object> parameter=(List<Object>)result.getParameter();
                if (parameter.size() >= 2) {
                  IMetadataTable newTable=(IMetadataTable)parameter.get(0);
                  String schemaName=(String)parameter.get(1);
                  IMetadataTable metadataTable=MetadataToolHelper.getMetadataTableFromNodeLabel(node,schemaName);
                  if (metadataTable != null) {
                    MetadataToolHelper.copyTable(newTable,metadataTable);
                  }
                  syncSchemaForEBCDIC(node,metadataTable);
                }
                return;
              }
            }
          }
          if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
            IDesignerMapperService service=(IDesignerMapperService)GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
            if (service != null && externalNode != null && externalNode.getExternalData() != null) {
              List<Object> parameter=(List<Object>)result.getParameter();
              if (parameter.size() >= 2) {
                if (node.getComponent() != null && "String_Node_Str".equals(node.getComponent().getName())) {
                  IMetadataTable newTable=(IMetadataTable)parameter.get(0);
                  String schemaId=(String)parameter.get(1);
                  service.updateMapperTableEntries(externalNode,schemaId,newTable);
                  node.setMetadataList(externalNode.getMetadataList());
                  syncSchemaForTMap(node);
                  for (                  IExternalMapTable latestTable : externalNode.getExternalData().getOutputTables()) {
                    for (                    IMetadataTable tableExsit : node.getMetadataList()) {
                      if (latestTable.getName().equals(tableExsit.getTableName())) {
                        List<IMetadataColumn> newColumns=newTable.getListColumns();
                        for (                        IMetadataColumn column : tableExsit.getListColumns()) {
                          for (                          IMetadataColumn newColumn : newColumns) {
                            if (tableExsit.getTableName().equals(newTable.getTableName()) && newColumn.getLabel().equals(column.getLabel())) {
                              column.setTalendType(newColumn.getTalendType());
                              column.setNullable(newColumn.isNullable());
                              column.setComment(newColumn.getComment());
                              column.setDefault(newColumn.getDefault());
                              column.setLength(newColumn.getLength());
                              column.setType(newColumn.getType());
                              column.setKey(newColumn.isKey());
                              column.setPrecision(newColumn.getPrecision());
                              break;
                            }
                          }
                        }
                        break;
                      }
                    }
                  }
                }
              }
            }
          }
        }
 else         if (result.getParameter() instanceof IMetadataTable) {
          IMetadataTable newTable=(IMetadataTable)result.getParameter();
          if (newTable != null) {
            INodeConnector nodeConnector=node.getConnectorFromName(newTable.getAttachedConnector());
            if (nodeConnector != null) {
              List<IElementParameter> params=node.getElementParametersFromField(EParameterFieldType.SCHEMA_TYPE);
              if (params == null || params.isEmpty()) {
                params=node.getElementParametersFromField(EParameterFieldType.SCHEMA_REFERENCE);
              }
              if (params != null) {
                for (                IElementParameter param : params) {
                  if (!newTable.getAttachedConnector().equals(param.getContext())) {
                    continue;
                  }
                  ChangeMetadataCommand cmd=null;
                  if (param.getChildParameters() != null && param.getChildParameters().get("String_Node_Str") != null && result.getContextModeConnectionItem() != null) {
                    final Object value=param.getChildParameters().get("String_Node_Str").getValue();
                    String remark=result.getRemark();
                    String namePrefix="String_Node_Str";
                    if (remark != null) {
                      String[] split=remark.split(UpdatesConstants.SEGMENT_LINE);
                      if (split.length == 2) {
                        String tableName=split[1];
                        String[] tableSplit=tableName.split("String_Node_Str");
                        if (tableSplit.length == 3) {
                          namePrefix=tableSplit[0] + "String_Node_Str" + tableSplit[1]+ "String_Node_Str";
                        }
                      }
                    }
                    String idAndName=result.getContextModeConnectionItem().getProperty().getId() + UpdatesConstants.SEGMENT_LINE + namePrefix+ newTable.getLabel();
                    if (idAndName.equals(value)) {
                      cmd=new ChangeMetadataCommand(node,param,null,newTable);
                    }
                  }
 else {
                    cmd=new ChangeMetadataCommand(node,param,null,newTable);
                  }
                  if (cmd != null) {
                    String propertyValue=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
                    IRepositoryViewObject lastVersion=UpdateRepositoryUtils.getRepositoryObjectById(propertyValue);
                    Connection repositoryConn=null;
                    if (lastVersion != null) {
                      final Item item=lastVersion.getProperty().getItem();
                      if (item != null && item instanceof ConnectionItem) {
                        repositoryConn=((ConnectionItem)item).getConnection();
                      }
                    }
                    cmd.setConnection(repositoryConn);
                    if (node.getProcess() instanceof IProcess2) {
                      IUpdateManager updateManager=((IProcess2)node.getProcess()).getUpdateManager();
                      if (updateManager instanceof AbstractUpdateManager) {
                        cmd.setColumnRenameMap(((AbstractUpdateManager)updateManager).getColumnRenamedMap());
                      }
                    }
                    cmd.setRepositoryMode(true);
                    cmd.execute(true);
                  }
                }
              }
 else {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
            builtIn=false;
          }
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.RENAME) {
      List<Object> parameter=(List<Object>)result.getParameter();
      if (parameter.size() >= 3) {
        IMetadataTable newTable=(IMetadataTable)parameter.get(0);
        String oldSourceId=(String)parameter.get(1);
        String newSourceId=(String)parameter.get(2);
        if (PluginChecker.isEBCDICPluginLoaded()) {
          IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
          if (service != null) {
            if (service.isEbcdicNode(node)) {
              String[] sourceIdAndChildName=UpdateManagerUtils.getSourceIdAndChildName(oldSourceId);
              final String oldSchemaName=sourceIdAndChildName[1];
              sourceIdAndChildName=UpdateManagerUtils.getSourceIdAndChildName(newSourceId);
              final String newSchemaName=sourceIdAndChildName[1];
              IMetadataTable metadataTable=MetadataToolHelper.getMetadataTableFromNodeLabel(node,oldSchemaName);
              if (metadataTable != null && oldSchemaName != null) {
                List<Map<String,Object>> paramValues=(List<Map<String,Object>>)node.getPropertyValue(IEbcdicConstant.TABLE_SCHEMAS);
                for (                Map<String,Object> line : paramValues) {
                  if (line.get(IEbcdicConstant.FIELD_SCHEMA).equals(oldSchemaName)) {
                    line.remove(IEbcdicConstant.FIELD_SCHEMA);
                    line.put(IEbcdicConstant.FIELD_SCHEMA,newSchemaName);
                  }
                }
                PropertyChangeCommand cmd=new PropertyChangeCommand(node,IEbcdicConstant.TABLE_SCHEMAS,paramValues);
                cmd.execute();
                MetadataToolHelper.copyTable(newTable,metadataTable);
                metadataTable.setLabel(newSchemaName);
                syncSchemaForEBCDIC(node,metadataTable);
              }
            }
          }
        }
        if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
          IDesignerMapperService service=(IDesignerMapperService)GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
          if (service != null && externalNode != null && externalNode.getExternalData() != null) {
            parameter=(List<Object>)result.getParameter();
            if (parameter.size() >= 3) {
              if (node.getComponent() != null && "String_Node_Str".equals(node.getComponent().getName())) {
                newTable=(IMetadataTable)parameter.get(0);
                String schemaId=(String)parameter.get(1);
                String newSchemaId=(String)parameter.get(2);
                service.renameMapperTable(externalNode,schemaId,newSchemaId,newTable);
                node.setMetadataList(externalNode.getMetadataList());
                syncSchemaForTMap(node);
              }
            }
          }
        }
        String schemaParamName=UpdatesConstants.SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        IElementParameter repositoryParam=node.getElementParameter(schemaParamName);
        if (repositoryParam == null) {
          schemaParamName=UpdatesConstants.SCHEMA_FLOW + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
          repositoryParam=node.getElementParameter(schemaParamName);
        }
        if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
          node.setPropertyValue(schemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
        String inputSchemaParamName=UpdatesConstants.INPUT_SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        IElementParameter inputRepositoryParam=node.getElementParameter(inputSchemaParamName);
        if (inputRepositoryParam != null && oldSourceId.equals(inputRepositoryParam.getValue())) {
          node.setPropertyValue(inputSchemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
        schemaParamName=UpdatesConstants.SCHEMA_TARGET + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        repositoryParam=node.getElementParameter(schemaParamName);
        if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
          node.setPropertyValue(schemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(repositoryParam.getContext())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.BUIL_IN) {
      if (UpdatesConstants.SCHEMA_TARGET.equals(result.getParameter())) {
        node.setPropertyValue(UpdatesConstants.SCHEMA_TARGET + "String_Node_Str" + EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
      }
 else {
        if (PluginChecker.isEBCDICPluginLoaded()) {
          IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
          if (service != null) {
            if (service.isEbcdicNode(node)) {
              Object parameter=result.getParameter();
              if (parameter instanceof Map) {
                Map<String,Object> lineValue=(Map<String,Object>)parameter;
                lineValue.remove(IEbcdicConstant.FIELD_SCHEMA + IEbcdicConstant.REF_TYPE);
              }
              node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
              return;
            }
          }
        }
        if (PluginChecker.isJobLetPluginLoaded()) {
          IJobletProviderService service=(IJobletProviderService)GlobalServiceRegister.getDefault().getService(IJobletProviderService.class);
          if (service != null && service.isJobletInOutComponent(node)) {
            node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName() + "String_Node_Str" + EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
          }
        }
        node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
        for (        IElementParameter param : node.getElementParameters()) {
          SAPParametersUtils.setNoRepositoryParams(param);
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.DELETE) {
      node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
    }
 else     if (result.getResultType() == EUpdateResult.RELOAD) {
      List<Object> parameter=(List<Object>)result.getParameter();
      String connectionId=null;
      String tableLabel=null;
      IRepositoryViewObject toReload=null;
      IMetadataTable tableToReload=null;
      if (parameter instanceof List) {
        List listParameter=parameter;
        connectionId=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
        tableLabel=((String)listParameter.get(0)).split(UpdatesConstants.SEGMENT_LINE)[0];
      }
      if (connectionId != null) {
        try {
          toReload=ProxyRepositoryFactory.getInstance().getLastVersion(connectionId);
        }
 catch (        PersistenceException e) {
          ExceptionHandler.process(e);
        }
      }
      if (toReload != null) {
        Item item=toReload.getProperty().getItem();
        if (item != null && item instanceof DatabaseConnectionItem) {
          DatabaseConnectionItem dbItem=(DatabaseConnectionItem)item;
          Connection connection=dbItem.getConnection();
          if (connection instanceof DatabaseConnection) {
            DatabaseConnection dbConn=(DatabaseConnection)connection;
            Set<MetadataTable> tables=ProjectNodeHelper.getTablesFromSpecifiedDataPackage(dbConn);
            if (tables != null && !tables.isEmpty()) {
              Iterator it=tables.iterator();
              while (it.hasNext() && tableToReload == null) {
                MetadataTable table=(MetadataTable)it.next();
                String label=table.getLabel();
                if (tableLabel != null) {
                  if (label != null && label.equals(tableLabel)) {
                    tableToReload=ConvertionHelper.convert(table);
                    break;
                  }
                }
              }
            }
            Set<org.talend.core.model.metadata.builder.connection.MetadataTable> newTables=ConnectionHelper.getTables(connection);
            if (newTables != null && !newTables.isEmpty() && tableToReload == null) {
              Iterator it=newTables.iterator();
              while (it.hasNext() && tableToReload == null) {
                MetadataTable table=(MetadataTable)it.next();
                String label=table.getLabel();
                if (tableLabel != null) {
                  if (label != null && label.equals(tableLabel)) {
                    tableToReload=ConvertionHelper.convert(table);
                    break;
                  }
                }
              }
            }
          }
        }
        if (tableToReload != null) {
          int index=-1;
          List<IMetadataTable> tablesInNode=node.getMetadataList();
          for (          IMetadataTable table : tablesInNode) {
            if (table.getLabel().equals(tableToReload.getLabel())) {
              index=tablesInNode.indexOf(table);
              break;
            }
          }
          if (index >= 0) {
            IMetadataTable oldTable=tablesInNode.get(index);
            tableToReload.setAttachedConnector(oldTable.getAttachedConnector());
            tableToReload.setDbms(oldTable.getDbms());
            tablesInNode.remove(index);
            tablesInNode.add(index,tableToReload);
            builtIn=false;
          }
        }
      }
    }
    if (builtIn) {
      node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
    }
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void updateSchema(){
  Object updateObject=result.getUpdateObject();
  if (updateObject == null) {
    return;
  }
  if (updateObject instanceof Node) {
    Node node=(Node)updateObject;
    boolean builtIn=true;
    final IExternalNode externalNode=node.getExternalNode();
    if (result.getResultType() == EUpdateResult.UPDATE) {
      if (result.isChecked()) {
        if (result.getParameter() instanceof List) {
          if (PluginChecker.isEBCDICPluginLoaded()) {
            IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
            if (service != null) {
              if (service.isEbcdicNode(node)) {
                List<Object> parameter=(List<Object>)result.getParameter();
                if (parameter.size() >= 2) {
                  IMetadataTable newTable=(IMetadataTable)parameter.get(0);
                  String schemaName=(String)parameter.get(1);
                  IMetadataTable metadataTable=MetadataToolHelper.getMetadataTableFromNodeLabel(node,schemaName);
                  if (metadataTable != null) {
                    MetadataToolHelper.copyTable(newTable,metadataTable);
                  }
                  syncSchemaForEBCDIC(node,metadataTable);
                }
                return;
              }
            }
          }
          if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
            IDesignerMapperService service=(IDesignerMapperService)GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
            if (service != null && externalNode != null && externalNode.getExternalData() != null) {
              List<Object> parameter=(List<Object>)result.getParameter();
              if (parameter.size() >= 2) {
                if (node.getComponent() != null && "String_Node_Str".equals(node.getComponent().getName())) {
                  IMetadataTable newTable=(IMetadataTable)parameter.get(0);
                  String schemaId=(String)parameter.get(1);
                  service.updateMapperTableEntries(externalNode,schemaId,newTable);
                  node.setMetadataList(externalNode.getMetadataList());
                  syncSchemaForTMap(node);
                  for (                  IExternalMapTable latestTable : externalNode.getExternalData().getOutputTables()) {
                    for (                    IMetadataTable tableExsit : node.getMetadataList()) {
                      if (latestTable.getName().equals(tableExsit.getTableName())) {
                        List<IMetadataColumn> newColumns=newTable.getListColumns();
                        for (                        IMetadataColumn column : tableExsit.getListColumns()) {
                          for (                          IMetadataColumn newColumn : newColumns) {
                            if (tableExsit.getTableName().equals(newTable.getTableName()) && newColumn.getLabel().equals(column.getLabel())) {
                              column.setTalendType(newColumn.getTalendType());
                              column.setNullable(newColumn.isNullable());
                              column.setComment(newColumn.getComment());
                              column.setDefault(newColumn.getDefault());
                              column.setLength(newColumn.getLength());
                              column.setType(newColumn.getType());
                              column.setKey(newColumn.isKey());
                              column.setPrecision(newColumn.getPrecision());
                              break;
                            }
                          }
                        }
                        break;
                      }
                    }
                  }
                }
              }
            }
          }
        }
 else         if (result.getParameter() instanceof IMetadataTable) {
          IMetadataTable newTable=(IMetadataTable)result.getParameter();
          if (newTable != null) {
            INodeConnector nodeConnector=node.getConnectorFromName(newTable.getAttachedConnector());
            if (nodeConnector != null) {
              List<IElementParameter> params=node.getElementParametersFromField(EParameterFieldType.SCHEMA_TYPE);
              if (params == null || params.isEmpty()) {
                params=node.getElementParametersFromField(EParameterFieldType.SCHEMA_REFERENCE);
              }
              if (params != null) {
                for (                IElementParameter param : params) {
                  if (!newTable.getAttachedConnector().equals(param.getContext())) {
                    continue;
                  }
                  ChangeMetadataCommand cmd=null;
                  if (param.getChildParameters() != null && param.getChildParameters().get("String_Node_Str") != null && result.getContextModeConnectionItem() != null) {
                    final Object value=param.getChildParameters().get("String_Node_Str").getValue();
                    String remark=result.getRemark();
                    String namePrefix="String_Node_Str";
                    if (remark != null) {
                      String[] split=remark.split(UpdatesConstants.SEGMENT_LINE);
                      if (split.length == 2) {
                        String tableName=split[1];
                        String[] tableSplit=tableName.split("String_Node_Str");
                        if (tableSplit.length == 3) {
                          namePrefix=tableSplit[0] + "String_Node_Str" + tableSplit[1]+ "String_Node_Str";
                        }
                      }
                    }
                    String idAndName=result.getContextModeConnectionItem().getProperty().getId() + UpdatesConstants.SEGMENT_LINE + namePrefix+ newTable.getLabel();
                    if (idAndName.equals(value)) {
                      cmd=new ChangeMetadataCommand(node,param,null,newTable);
                    }
                  }
 else {
                    cmd=new ChangeMetadataCommand(node,param,null,newTable);
                  }
                  if (cmd != null) {
                    String propertyValue=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
                    IRepositoryViewObject lastVersion=UpdateRepositoryUtils.getRepositoryObjectById(propertyValue);
                    Connection repositoryConn=null;
                    if (lastVersion != null) {
                      final Item item=lastVersion.getProperty().getItem();
                      if (item != null && item instanceof ConnectionItem) {
                        repositoryConn=((ConnectionItem)item).getConnection();
                      }
                    }
                    cmd.setConnection(repositoryConn);
                    if (node.getProcess() instanceof IProcess2) {
                      IUpdateManager updateManager=((IProcess2)node.getProcess()).getUpdateManager();
                      if (updateManager instanceof AbstractUpdateManager) {
                        cmd.setColumnRenameMap(((AbstractUpdateManager)updateManager).getColumnRenamedMap());
                      }
                    }
                    cmd.setRepositoryMode(true);
                    cmd.execute(true);
                  }
                }
              }
 else {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
            builtIn=false;
          }
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.RENAME) {
      List<Object> parameter=(List<Object>)result.getParameter();
      if (parameter.size() >= 3) {
        IMetadataTable newTable=(IMetadataTable)parameter.get(0);
        String oldSourceId=(String)parameter.get(1);
        String newSourceId=(String)parameter.get(2);
        if (PluginChecker.isEBCDICPluginLoaded()) {
          IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
          if (service != null) {
            if (service.isEbcdicNode(node)) {
              String[] sourceIdAndChildName=UpdateManagerUtils.getSourceIdAndChildName(oldSourceId);
              final String oldSchemaName=sourceIdAndChildName[1];
              sourceIdAndChildName=UpdateManagerUtils.getSourceIdAndChildName(newSourceId);
              final String newSchemaName=sourceIdAndChildName[1];
              IMetadataTable metadataTable=MetadataToolHelper.getMetadataTableFromNodeLabel(node,oldSchemaName);
              if (metadataTable != null && oldSchemaName != null) {
                List<Map<String,Object>> paramValues=(List<Map<String,Object>>)node.getPropertyValue(IEbcdicConstant.TABLE_SCHEMAS);
                for (                Map<String,Object> line : paramValues) {
                  if (line.get(IEbcdicConstant.FIELD_SCHEMA).equals(oldSchemaName)) {
                    line.remove(IEbcdicConstant.FIELD_SCHEMA);
                    line.put(IEbcdicConstant.FIELD_SCHEMA,newSchemaName);
                  }
                }
                PropertyChangeCommand cmd=new PropertyChangeCommand(node,IEbcdicConstant.TABLE_SCHEMAS,paramValues);
                cmd.execute();
                MetadataToolHelper.copyTable(newTable,metadataTable);
                metadataTable.setLabel(newSchemaName);
                syncSchemaForEBCDIC(node,metadataTable);
              }
            }
          }
        }
        if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMapperService.class)) {
          IDesignerMapperService service=(IDesignerMapperService)GlobalServiceRegister.getDefault().getService(IDesignerMapperService.class);
          if (service != null && externalNode != null && externalNode.getExternalData() != null) {
            parameter=(List<Object>)result.getParameter();
            if (parameter.size() >= 3) {
              if (node.getComponent() != null && "String_Node_Str".equals(node.getComponent().getName())) {
                newTable=(IMetadataTable)parameter.get(0);
                String schemaId=(String)parameter.get(1);
                String newSchemaId=(String)parameter.get(2);
                service.renameMapperTable(externalNode,schemaId,newSchemaId,newTable);
                node.setMetadataList(externalNode.getMetadataList());
                syncSchemaForTMap(node);
              }
            }
          }
        }
        String schemaParamName=UpdatesConstants.SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        IElementParameter repositoryParam=node.getElementParameter(schemaParamName);
        if (repositoryParam == null) {
          schemaParamName=UpdatesConstants.SCHEMA_FLOW + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
          repositoryParam=node.getElementParameter(schemaParamName);
        }
        if (repositoryParam == null) {
          IElementParameter schemaParentParam=node.getElementParameterFromField(EParameterFieldType.SCHEMA_REFERENCE);
          if (schemaParentParam != null) {
            schemaParamName=schemaParentParam.getName() + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
            repositoryParam=node.getElementParameter(schemaParamName);
          }
        }
        if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
          node.setPropertyValue(schemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
        String inputSchemaParamName=UpdatesConstants.INPUT_SCHEMA + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        IElementParameter inputRepositoryParam=node.getElementParameter(inputSchemaParamName);
        if (inputRepositoryParam != null && oldSourceId.equals(inputRepositoryParam.getValue())) {
          node.setPropertyValue(inputSchemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(newTable.getAttachedConnector())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
        schemaParamName=UpdatesConstants.SCHEMA_TARGET + UpdatesConstants.COLON + EParameterName.REPOSITORY_SCHEMA_TYPE.getName();
        repositoryParam=node.getElementParameter(schemaParamName);
        if (repositoryParam != null && oldSourceId.equals(repositoryParam.getValue())) {
          node.setPropertyValue(schemaParamName,newSourceId);
          if (newTable != null) {
            for (            INodeConnector nodeConnector : node.getListConnector()) {
              if (nodeConnector.getBaseSchema().equals(repositoryParam.getContext())) {
                MetadataToolHelper.copyTable(newTable,node.getMetadataFromConnector(nodeConnector.getName()));
              }
            }
          }
          builtIn=false;
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.BUIL_IN) {
      if (UpdatesConstants.SCHEMA_TARGET.equals(result.getParameter())) {
        node.setPropertyValue(UpdatesConstants.SCHEMA_TARGET + "String_Node_Str" + EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
      }
 else {
        if (PluginChecker.isEBCDICPluginLoaded()) {
          IEBCDICProviderService service=(IEBCDICProviderService)GlobalServiceRegister.getDefault().getService(IEBCDICProviderService.class);
          if (service != null) {
            if (service.isEbcdicNode(node)) {
              Object parameter=result.getParameter();
              if (parameter instanceof Map) {
                Map<String,Object> lineValue=(Map<String,Object>)parameter;
                lineValue.remove(IEbcdicConstant.FIELD_SCHEMA + IEbcdicConstant.REF_TYPE);
              }
              node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
              return;
            }
          }
        }
        if (PluginChecker.isJobLetPluginLoaded()) {
          IJobletProviderService service=(IJobletProviderService)GlobalServiceRegister.getDefault().getService(IJobletProviderService.class);
          if (service != null && service.isJobletInOutComponent(node)) {
            node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName() + "String_Node_Str" + EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
          }
        }
        node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
        for (        IElementParameter param : node.getElementParameters()) {
          SAPParametersUtils.setNoRepositoryParams(param);
        }
      }
    }
 else     if (result.getResultType() == EUpdateResult.DELETE) {
      node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
    }
 else     if (result.getResultType() == EUpdateResult.RELOAD) {
      List<Object> parameter=(List<Object>)result.getParameter();
      String connectionId=null;
      String tableLabel=null;
      IRepositoryViewObject toReload=null;
      IMetadataTable tableToReload=null;
      if (parameter instanceof List) {
        List listParameter=parameter;
        connectionId=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
        tableLabel=((String)listParameter.get(0)).split(UpdatesConstants.SEGMENT_LINE)[0];
      }
      if (connectionId != null) {
        try {
          toReload=ProxyRepositoryFactory.getInstance().getLastVersion(connectionId);
        }
 catch (        PersistenceException e) {
          ExceptionHandler.process(e);
        }
      }
      if (toReload != null) {
        Set<MetadataTable> newTables=null;
        Item item=toReload.getProperty().getItem();
        if (item instanceof DatabaseConnectionItem) {
          DatabaseConnectionItem dbItem=(DatabaseConnectionItem)item;
          Connection connection=dbItem.getConnection();
          if (connection instanceof DatabaseConnection) {
            DatabaseConnection dbConn=(DatabaseConnection)connection;
            Set<MetadataTable> tables=ProjectNodeHelper.getTablesFromSpecifiedDataPackage(dbConn);
            if (tables != null && !tables.isEmpty()) {
              Iterator it=tables.iterator();
              while (it.hasNext() && tableToReload == null) {
                MetadataTable table=(MetadataTable)it.next();
                String label=table.getLabel();
                if (tableLabel != null) {
                  if (label != null && label.equals(tableLabel)) {
                    tableToReload=ConvertionHelper.convert(table);
                    break;
                  }
                }
              }
            }
            newTables=ConnectionHelper.getTables(connection);
          }
        }
 else {
          IGenericWizardService wizardService=null;
          if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
            wizardService=(IGenericWizardService)GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
          }
          if (wizardService != null && wizardService.isGenericItem(item)) {
            Connection connection=((ConnectionItem)item).getConnection();
            List<MetadataTable> metadataTables=wizardService.getMetadataTables(connection);
            newTables=new HashSet<>(metadataTables);
          }
        }
        if (newTables != null && !newTables.isEmpty() && tableToReload == null) {
          Iterator<MetadataTable> it=newTables.iterator();
          while (it.hasNext() && tableToReload == null) {
            MetadataTable table=it.next();
            String label=table.getLabel();
            if (tableLabel != null) {
              if (label != null && label.equals(tableLabel)) {
                tableToReload=ConvertionHelper.convert(table);
                break;
              }
            }
          }
        }
        if (tableToReload != null) {
          int index=-1;
          List<IMetadataTable> tablesInNode=node.getMetadataList();
          for (          IMetadataTable table : tablesInNode) {
            if (table.getLabel().equals(tableToReload.getLabel())) {
              index=tablesInNode.indexOf(table);
              break;
            }
          }
          if (index >= 0) {
            IMetadataTable oldTable=tablesInNode.get(index);
            tableToReload.setAttachedConnector(oldTable.getAttachedConnector());
            tableToReload.setDbms(oldTable.getDbms());
            tablesInNode.remove(index);
            tablesInNode.add(index,tableToReload);
            builtIn=false;
          }
        }
      }
    }
    if (builtIn) {
      node.setPropertyValue(EParameterName.SCHEMA_TYPE.getName(),EmfComponent.BUILTIN);
    }
  }
}