@Override
 public Image getColumnImage(Object element, int columnIndex) {
   // TODO Auto-generated method stub
   if (columnIndex == 0) {
     ExtendTableColumnDAO columnDao = (ExtendTableColumnDAO) element;
     if (columnDao.isCheck()) {
       return CHECKED;
     } else {
       return UNCHECKED;
     }
   }
   return null;
 }
  private String buildDeleteSQL() {
    StringBuffer resultSQL = new StringBuffer();
    if (chkComment.getSelection()) resultSQL.append("/* Tadpole SQL Generator */"); // $NON-NLS-1$

    int cnt = 0;

    resultSQL.append("DELETE FROM  " + tableDAO.getSysName()); // $NON-NLS-1$
    for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
      if ("PK".equals(allDao.getKey())) { // $NON-NLS-1$

        if (cnt == 0) resultSQL.append(" WHERE "); // $NON-NLS-1$
        else resultSQL.append("\t AND "); // $NON-NLS-1$

        resultSQL.append(allDao.getSysName()).append(" = ? "); // $NON-NLS-1$
        if (chkComment.getSelection()) {
          resultSQL.append("/* " + allDao.getType() + " */"); // $NON-NLS-1$ //$NON-NLS-2$
        }
        cnt++;
      }
    }

    return lastSQLGen(resultSQL.toString());
  }
  private void initData() {
    try {
      List<TableColumnDAO> showTableColumns =
          TadpoleObjectQuery.makeShowTableColumns(userDB, tableDAO);
      List<ExtendTableColumnDAO> newTableColumns = new ArrayList<ExtendTableColumnDAO>();

      ExtendTableColumnDAO newTableDAO =
          new ExtendTableColumnDAO(
              "*",
              "",
              "",
              textTableAlias.getText().trim()); // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
      newTableDAO.setCheck(true);

      newTableColumns.add(newTableDAO);
      for (TableColumnDAO tableColumnDAO : showTableColumns) {
        String strSysName = SQLUtil.makeIdentifierName(userDB, tableColumnDAO.getField());
        newTableDAO =
            new ExtendTableColumnDAO(
                tableColumnDAO.getField(),
                tableColumnDAO.getType(),
                tableColumnDAO.getKey(),
                textTableAlias.getText().trim());
        newTableDAO.setSysName(strSysName);
        newTableDAO.setComment(tableColumnDAO.getComment());

        newTableColumns.add(newTableDAO);
      }

      tableViewer.setInput(newTableColumns);

      tableViewer.refresh();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  @Override
  public String getColumnText(Object element, int columnIndex) {
    ExtendTableColumnDAO dao = (ExtendTableColumnDAO) element;

    switch (columnIndex) {
      case 0:
        return dao.getColumnNamebyTableAlias();
      case 1:
        return dao.getType();
      case 2:
        return dao.getKey();
      case 3:
        return dao.getSysName();
      case 4:
        return dao.getComment();
    }

    return "*** not set column value ***"; //$NON-NLS-1$
  }
  /**
   * Generate INSERT statement
   *
   * @return
   */
  private String buildInsertSQL() {
    StringBuffer resultSQL = new StringBuffer();
    if (chkComment.getSelection()) resultSQL.append("/* Tadpole SQL Generator */"); // $NON-NLS-1$

    int cnt = 0;

    resultSQL.append("INSERT INTO " + tableDAO.getSysName() + " ( "); // $NON-NLS-1$ //$NON-NLS-2$

    ExtendTableColumnDAO firstDao = (ExtendTableColumnDAO) tableViewer.getElementAt(0);
    if (firstDao.isCheck()) {
      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if ("*".equals(allDao.getField())) continue; // $NON-NLS-1$

        if (cnt > 0) resultSQL.append(", "); // $NON-NLS-1$
        resultSQL.append(allDao.getSysName());

        cnt++;
      }

    } else {

      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if (allDao.isCheck()) {
          if (cnt > 0) resultSQL.append(", "); // $NON-NLS-1$
          resultSQL.append(allDao.getSysName());

          cnt++;
        }
      }
    }
    resultSQL.append(
        ")" + PublicTadpoleDefine.LINE_SEPARATOR + " VALUES ( "); // $NON-NLS-1$ //$NON-NLS-2$
    cnt = 0;

    if (firstDao.isCheck()) {
      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if ("*".equals(allDao.getSysName())) continue; // $NON-NLS-1$

        if (cnt > 0) resultSQL.append(", "); // $NON-NLS-1$
        resultSQL.append("?"); // $NON-NLS-1$

        if (chkComment.getSelection()) {
          resultSQL.append(
              "/* "
                  + allDao.getField()
                  + ":"
                  + allDao.getType()
                  + " */"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        }

        cnt++;
      }

    } else {

      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if (allDao.isCheck()) {
          if (cnt > 0) resultSQL.append(", "); // $NON-NLS-1$

          resultSQL.append("?"); // $NON-NLS-1$
          if (chkComment.getSelection()) {
            resultSQL.append(
                "/* "
                    + allDao.getField()
                    + ":"
                    + allDao.getType()
                    + " */"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
          }
          cnt++;
        }
      }
    }

    resultSQL.append(")"); // $NON-NLS-1$

    return lastSQLGen(resultSQL.toString());
  }
  /**
   * Generate UPDATE statement
   *
   * @return
   */
  private String buildUpdateSQL() {
    StringBuffer resultSQL = new StringBuffer();
    if (chkComment.getSelection()) resultSQL.append("/* Tadpole SQL Generator */"); // $NON-NLS-1$

    int cnt = 0;

    resultSQL.append(
        "UPDATE "
            + this.tableDAO.getSysName()
            + " "
            + this.textTableAlias.getText().trim()); // $NON-NLS-1$ //$NON-NLS-2$

    ExtendTableColumnDAO firstDao = (ExtendTableColumnDAO) tableViewer.getElementAt(0);
    if (firstDao.isCheck()) {
      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if ("*".equals(allDao.getField())) continue; // $NON-NLS-1$

        if (cnt == 0) resultSQL.append(" SET "); // $NON-NLS-1$
        else resultSQL.append(" , "); // $NON-NLS-1$

        resultSQL.append(allDao.getColumnNamebyTableAlias()).append(" = ? "); // $NON-NLS-1$
        if (chkComment.getSelection()) {
          resultSQL.append("/* " + allDao.getType() + " */"); // $NON-NLS-1$ //$NON-NLS-2$
        }
        cnt++;
      }

    } else {

      for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
        if (allDao.isCheck()) {
          if (cnt == 0) resultSQL.append(" SET "); // $NON-NLS-1$
          else resultSQL.append(", "); // $NON-NLS-1$

          resultSQL.append(allDao.getColumnNamebyTableAlias()).append(" = ? "); // $NON-NLS-1$
          if (chkComment.getSelection()) {
            resultSQL.append("/* " + allDao.getType() + " */"); // $NON-NLS-1$ //$NON-NLS-2$
          }
          cnt++;
        }
      }
    }
    cnt = 0;
    for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
      if ("PK".equals(allDao.getKey())) { // $NON-NLS-1$

        if (cnt == 0) resultSQL.append(" WHERE "); // $NON-NLS-1$
        else resultSQL.append(" AND "); // $NON-NLS-1$

        resultSQL.append(allDao.getColumnNamebyTableAlias()).append(" = ? "); // $NON-NLS-1$

        if (chkComment.getSelection()) {
          resultSQL.append("/* " + allDao.getType() + " */"); // $NON-NLS-1$ //$NON-NLS-2$
        }
        cnt++;
      }
    }

    return lastSQLGen(resultSQL.toString());
  }
  /**
   * Generate SELECT statment
   *
   * @return
   */
  private String buildSelectSQL() {
    StringBuffer resultSQL = new StringBuffer();
    if (chkComment.getSelection()) {
      resultSQL.append("/* Tadpole SQL Generator */"); // $NON-NLS-1$
    }
    resultSQL.append("SELECT "); // $NON-NLS-1$
    int cnt = 0;

    StringBuffer sbColumn = new StringBuffer();
    for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
      if (allDao.isCheck()) {
        if (cnt != 0) sbColumn.append("\t, "); // $NON-NLS-1$

        if ("*".equals(allDao.getField())) { // $NON-NLS-1$
          sbColumn.append(allDao.getSysName());
        } else {
          String strTableAlias =
              !"".equals(textTableAlias.getText().trim())
                  ? //$NON-NLS-1$
                  textTableAlias.getText().trim()
                      + "."
                      + allDao.getSysName()
                      + " as "
                      + allDao.getColumnAlias()
                  : //$NON-NLS-1$ //$NON-NLS-2$
                  allDao.getSysName() + " as " + allDao.getColumnAlias(); // $NON-NLS-1$

          sbColumn.append(strTableAlias);
        }
        cnt++;
      }
    }
    if (StringUtils.isEmpty(StringUtils.trim(sbColumn.toString())))
      sbColumn.append(" * "); // $NON-NLS-1$

    resultSQL.append(sbColumn.toString());
    resultSQL.append(
        "  FROM "
            + this.tableDAO.getSysName()
            + " "
            + this.textTableAlias.getText().trim()); // $NON-NLS-1$ //$NON-NLS-2$
    cnt = 0;
    for (ExtendTableColumnDAO allDao : (List<ExtendTableColumnDAO>) tableViewer.getInput()) {
      if ("PK".equals(allDao.getKey())) { // $NON-NLS-1$

        if (cnt == 0) {
          resultSQL.append(" WHERE "); // $NON-NLS-1$
        } else {
          resultSQL.append(" AND "); // $NON-NLS-1$
        }
        resultSQL.append(allDao.getColumnNamebyTableAlias()).append(" = ? "); // $NON-NLS-1$
        if (chkComment.getSelection()) {
          resultSQL.append("/* " + allDao.getType() + " */"); // $NON-NLS-1$ //$NON-NLS-2$
        }
        cnt++;
      }
    }

    return lastSQLGen(resultSQL.toString());
  }