/** wzhang Comment method "isDBComponent". */
 private boolean isDBComponent(String dbmsId) {
   if (dbmsId != null) {
     try {
       Dbms dbms = MetadataTalendType.getDbms(dbmsId);
       if (dbms != null) {
         return true;
       }
     } catch (Exception e) {
       // nothing to do
     }
   }
   return false;
 }
 @Override
 public String getColumnTalendType(Object column) throws NoSQLServerException {
   String talendType = null;
   try {
     String dbType = getColumnDbType(column);
     MappingTypeRetriever mappingTypeRetriever =
         MetadataTalendType.getMappingTypeRetriever(dbmsId);
     talendType = mappingTypeRetriever.getDefaultSelectedTalendType(dbType);
     if (talendType == null) {
       talendType = JavaTypesManager.STRING.getId();
     }
   } catch (Exception e) {
     throw new NoSQLServerException(e);
   }
   return talendType;
 }
  public Object createNewEntry() {
    List<IContextParameter> listParams =
        getContextManager().getDefaultContext().getContextParameterList();
    Integer numParam = new Integer(1);
    boolean paramNameFound;
    String paramName = null;
    do { // look for a new name
      paramNameFound = true;
      paramName = NEW_PARAM_NAME + numParam;
      for (int i = 0; i < listParams.size(); i++) {
        if (paramName.equals(listParams.get(i).getName())) {
          paramNameFound = false;
        }
      }
      if (!paramNameFound) {
        numParam++;
      }
    } while (!paramNameFound);

    JobContextParameter contextParam = new JobContextParameter();
    contextParam.setName(paramName);
    ECodeLanguage curLanguage = LanguageManager.getCurrentLanguage();
    if (curLanguage == ECodeLanguage.JAVA) {
      contextParam.setType(ContextParameterJavaTypeManager.getDefaultJavaType().getId());
    } else {
      contextParam.setType(MetadataTalendType.getDefaultTalendType());
    }
    contextParam.setPrompt(paramName + "?"); // $NON-NLS-1$
    String defaultValue;
    if (curLanguage == ECodeLanguage.JAVA) {
      defaultValue =
          ContextParameterJavaTypeManager.getDefaultValueFromJavaIdType(
              ContextParameterJavaTypeManager.getDefaultJavaType().getId(), false);
    } else {
      defaultValue = TalendQuoteUtils.addQuotes(""); // $NON-NLS-1$
    }
    contextParam.setValue(defaultValue);
    contextParam.setComment(""); // $NON-NLS-1$
    contextParam.setSource(""); // $NON-NLS-1$
    return contextParam;
  }
  public void refreshMetaDataTable(final CsvArray csvArray, ProcessDescription processDescription) {
    informationLabel.setText(
        "   " + Messages.getString("FileStep3.guessIsDone")); // $NON-NLS-1$ //$NON-NLS-2$
    // clear all items
    tableEditorView.getMetadataEditor().removeAll();

    List<MetadataColumn> columns = new ArrayList<MetadataColumn>();
    if (csvArray == null || csvArray.getRows().isEmpty()) {
      return;
    } else {

      List<String[]> csvRows = csvArray.getRows();
      Integer numberOfCol = getRightFirstRow(csvRows);

      // define the label to the metadata width the content of the first row
      int firstRowToExtractMetadata = 0;
      List<IMetadataColumn> listColumns = processDescription.getSchema().get(0).getListColumns();
      // the first rows is used to define the label of any metadata
      String[] label = new String[numberOfCol.intValue()];
      for (int i = 0; i < numberOfCol; i++) {
        label[i] = DEFAULT_LABEL + i;
        if (firstRowToExtractMetadata == 0) {

          label[i] = "" + listColumns.get(i); // $NON-NLS-1$
        }
      }

      for (int i = 0; i < numberOfCol.intValue(); i++) {
        // define the first currentType and assimile it to globalType
        String globalType = null;
        int lengthValue = 0;
        int precisionValue = 0;
        boolean nullAble = true;

        int current = firstRowToExtractMetadata;
        while (globalType == null) {
          String value = csvRows.get(current)[i];
          if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA) {
            if (i >= csvRows.get(current).length) {
              globalType = "id_String"; // $NON-NLS-1$
            } else {
              if (value != null && !"".equals(value)) { // $NON-NLS-1$
                globalType = JavaDataTypeHelper.getTalendTypeOfValue(value);
              } else {
                globalType = listColumns.get(i).getTalendType();
              }
              current++;
            }
          } else {
            if (i >= csvRows.get(current).length) {
              globalType = "String"; // $NON-NLS-1$
            } else {
              globalType = PerlDataTypeHelper.getTalendTypeOfValue(value);
              current++;
            }
          }
        }
        nullAble = listColumns.get(i).isNullable();
        lengthValue = listColumns.get(i).getLength();
        precisionValue = listColumns.get(i).getPrecision();

        // define the metadataColumn to field i
        MetadataColumn metadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn();
        // Convert javaType to TalendType
        String talendType = null;
        if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA) {
          talendType = globalType;
          if (globalType.equals(JavaTypesManager.FLOAT.getId())
              || globalType.equals(JavaTypesManager.DOUBLE.getId())) {
            metadataColumn.setPrecision(precisionValue);
          } else {
            metadataColumn.setPrecision(0);
          }
        } else {
          talendType =
              PerlTypesManager.getNewTypeName(
                  MetadataTalendType.loadTalendType(
                      globalType, "TALENDDEFAULT", false)); // $NON-NLS-1$
          if (globalType.equals("FLOAT")
              || globalType.equals("DOUBLE")) { // $NON-NLS-1$ //$NON-NLS-2$
            metadataColumn.setPrecision(precisionValue);
          } else {
            metadataColumn.setPrecision(0);
          }
        }

        metadataColumn.setNullable(nullAble);
        metadataColumn.setTalendType(talendType);
        metadataColumn.setLength(lengthValue);
        // bug 6758
        if (talendType.equals("id_Date")) { // $NON-NLS-1$
          String pattern = listColumns.get(i).getPattern();
          metadataColumn.setPattern(pattern);
        }
        // Check the label and add it to the table
        metadataColumn.setLabel(
            tableEditorView.getMetadataEditor().getNextGeneratedColumnName(label[i]));
        columns.add(i, metadataColumn);
      }
    }
    // tableEditorView.getMetadataEditor().registerDataList(columns);
    tableEditorView.getMetadataEditor().addAll(columns);

    checkFieldsValue();
    tableEditorView.getTableViewerCreator().layout();
    informationLabel.setText(Messages.getString("FileStep3.guessTip")); // $NON-NLS-1$
  }