/**
   * Method declaration
   *
   * @param t
   * @throws SQLException
   */
  void transferStructure() throws Exception {

    String Statement = new String("");

    if (destDb.helper.needTransferTransaction()) {
      try {
        destDb.setAutoCommit(false);
      } catch (Exception e) {
      }
    }

    if (Stmts.bTransfer == false) {
      tracer.trace("Table " + Stmts.sSourceTable + " not transfered");

      return;
    }

    tracer.trace("Table " + Stmts.sSourceTable + ": start transfer");

    try {
      if (Stmts.bDropIndex) {
        if (Stmts.sDestDropIndex.charAt(Stmts.sDestDropIndex.length() - 1) != ';') {
          Stmts.sDestDropIndex += ";";
        }

        int lastsemicolon = 0;
        int nextsemicolon = Stmts.sDestDropIndex.indexOf(';');

        while (nextsemicolon > lastsemicolon) {
          Statement = Stmts.sDestDropIndex.substring(lastsemicolon, nextsemicolon);

          while (Statement.charAt(Statement.length() - 1) == ';') {
            Statement = Statement.substring(0, Statement.length() - 1);
          }

          try {
            tracer.trace("Executing " + Statement);
            destDb.execute(Statement);
          } catch (Exception e) {
            tracer.trace("Ignoring error " + e.getMessage());
          }

          lastsemicolon = nextsemicolon + 1;
          nextsemicolon =
              lastsemicolon + Stmts.sDestDropIndex.substring(lastsemicolon).indexOf(';');
        }
      }

      if (Stmts.bDelete) {
        if (Stmts.sDestDelete.charAt(Stmts.sDestDelete.length() - 1) != ';') {
          Stmts.sDestDelete += ";";
        }

        int lastsemicolon = 0;
        int nextsemicolon = Stmts.sDestDelete.indexOf(';');

        while (nextsemicolon > lastsemicolon) {
          Statement = Stmts.sDestDelete.substring(lastsemicolon, nextsemicolon);

          while (Statement.charAt(Statement.length() - 1) == ';') {
            Statement = Statement.substring(0, Statement.length() - 1);
          }

          try {
            tracer.trace("Executing " + Statement);
            destDb.execute(Statement);
          } catch (Exception e) {
            tracer.trace("Ignoring error " + e.getMessage());
          }

          lastsemicolon = nextsemicolon + 1;
          nextsemicolon = lastsemicolon + Stmts.sDestDelete.substring(lastsemicolon).indexOf(';');
        }
      }

      if (Stmts.bDrop) {
        if (Stmts.sDestDrop.charAt(Stmts.sDestDrop.length() - 1) != ';') {
          Stmts.sDestDrop += ";";
        }

        int lastsemicolon = 0;
        int nextsemicolon = Stmts.sDestDrop.indexOf(';');

        while (nextsemicolon > lastsemicolon) {
          Statement = Stmts.sDestDrop.substring(lastsemicolon, nextsemicolon);

          while (Statement.charAt(Statement.length() - 1) == ';') {
            Statement = Statement.substring(0, Statement.length() - 1);
          }

          try {
            tracer.trace("Executing " + Statement);
            destDb.execute(Statement);
          } catch (Exception e) {
            tracer.trace("Ignoring error " + e.getMessage());
          }

          lastsemicolon = nextsemicolon + 1;
          nextsemicolon = lastsemicolon + Stmts.sDestDrop.substring(lastsemicolon).indexOf(';');
        }
      }

      if (Stmts.bCreate) {
        if (Stmts.sDestCreate.charAt(Stmts.sDestCreate.length() - 1) != ';') {
          Stmts.sDestCreate += ";";
        }

        int lastsemicolon = 0;
        int nextsemicolon = Stmts.sDestCreate.indexOf(';');

        while (nextsemicolon > lastsemicolon) {
          Statement = Stmts.sDestCreate.substring(lastsemicolon, nextsemicolon);

          while (Statement.charAt(Statement.length() - 1) == ';') {
            Statement = Statement.substring(0, Statement.length() - 1);
          }

          tracer.trace("Executing " + Statement);
          destDb.execute(Statement);

          lastsemicolon = nextsemicolon + 1;
          nextsemicolon = lastsemicolon + Stmts.sDestCreate.substring(lastsemicolon).indexOf(';');
        }
      }
    } catch (Exception e) {
      try {
        if (!destDb.getAutoCommit()) {
          destDb.rollback();
        }
      } catch (Exception e1) {
      }

      throw (e);
    }

    if (!destDb.getAutoCommit()) {
      destDb.commit();

      try {
        destDb.setAutoCommit(true);
      } catch (Exception e) {
      }
    }
  }