/*
   * Move include file symbolTable from mst to mift
   */
  public void mvIncludeFiles(List fileList, String file) throws IOException {
    if (GlobalDataApp.args_flags[3] == 1) {
      if (GlobalDataSqli.MainIncludeFilesTable.containsKey(file) == false) {
        if (GlobalDataSqli.MainSymbolTable.containsKey(file) == true) {
          GlobalDataSqli.MainIncludeFilesTable.put(
              file, (SymbolTable) GlobalDataSqli.MainSymbolTable.get(file));
          GlobalDataSqli.MainSymbolTable.remove(file);
        } else {
          try {
            // file include do not exists in mst and mift
            // Create AST
            buildAST ast = new buildAST(file, 0);
            CommonTreeNodeStream nodes = ast.getNodes();

            // build walker tree to SQLI
            buildWalkerTree_sqli sqli =
                new buildWalkerTree_sqli(
                    nodes,
                    file,
                    GlobalDataSqli.MainSymbolTable,
                    GlobalDataSqli.MainIncludeFilesTable,
                    GlobalDataSqli.MainFunctionsTable,
                    GlobalDataSqli.MainFunctionsTaintedTable,
                    GlobalDataSqli.MainTaintedTable,
                    GlobalDataSqli.mus,
                    GlobalDataSqli.MainLinesToCorrect,
                    GlobalDataSqli.MainClassesTable,
                    GlobalDataSqli.MainInstancesTable,
                    fileList);

            GlobalDataSqli.MainIncludeFilesTable.put(
                file, (SymbolTable) GlobalDataSqli.MainSymbolTable.get(file));
            GlobalDataSqli.MainSymbolTable.remove(file);
          } catch (RecognitionException ex) {
            Logger.getLogger(SymbolTable.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
      }
    }

    if (GlobalDataApp.args_flags[6] == 1) {
      if (GlobalDataCodeInj.MainIncludeFilesTable.containsKey(file) == false) {
        if (GlobalDataCodeInj.MainSymbolTable.containsKey(file) == true) {
          GlobalDataCodeInj.MainIncludeFilesTable.put(
              file, (SymbolTable) GlobalDataCodeInj.MainSymbolTable.get(file));
          GlobalDataCodeInj.MainSymbolTable.remove(file);
        } else {
          try {
            // file include do not exists in mst and mift
            // Create AST
            buildAST ast = new buildAST(file, 0);
            CommonTreeNodeStream nodes = ast.getNodes();

            // build walker tree to Code Injection
            buildWalkerTree_CodeInj ci =
                new buildWalkerTree_CodeInj(
                    nodes,
                    file,
                    GlobalDataCodeInj.MainSymbolTable,
                    GlobalDataCodeInj.MainIncludeFilesTable,
                    GlobalDataCodeInj.MainFunctionsTable,
                    GlobalDataCodeInj.MainFunctionsTaintedTable,
                    GlobalDataCodeInj.MainTaintedTable,
                    GlobalDataCodeInj.mus,
                    GlobalDataCodeInj.MainLinesToCorrect,
                    GlobalDataCodeInj.MainClassesTable,
                    GlobalDataCodeInj.MainInstancesTable,
                    fileList);

            GlobalDataCodeInj.MainIncludeFilesTable.put(
                file, (SymbolTable) GlobalDataCodeInj.MainSymbolTable.get(file));
            GlobalDataCodeInj.MainSymbolTable.remove(file);
          } catch (Exception ex) {
            Logger.getLogger(SymbolTable.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
      }
    }

    if (GlobalDataApp.args_flags[7] == 1) {
      if (GlobalDataXSS.MainIncludeFilesTable.containsKey(file) == false) {
        if (GlobalDataXSS.MainSymbolTable.containsKey(file) == true) {
          GlobalDataXSS.MainIncludeFilesTable.put(
              file, (SymbolTable) GlobalDataXSS.MainSymbolTable.get(file));
          GlobalDataXSS.MainSymbolTable.remove(file);
        } else {
          try {
            // file include do not exists in mst and mift
            // Create AST
            buildAST ast = new buildAST(file, 0);
            CommonTreeNodeStream nodes = ast.getNodes();

            // build walker tree to XSS
            buildWalkerTree_XSS xss =
                new buildWalkerTree_XSS(
                    nodes,
                    file,
                    GlobalDataXSS.MainSymbolTable,
                    GlobalDataXSS.MainIncludeFilesTable,
                    GlobalDataXSS.MainFunctionsTable,
                    GlobalDataXSS.MainFunctionsTaintedTable,
                    GlobalDataXSS.MainTaintedTable,
                    GlobalDataXSS.mus,
                    GlobalDataXSS.MainLinesToCorrect,
                    GlobalDataXSS.MainClassesTable,
                    GlobalDataXSS.MainInstancesTable,
                    fileList);

            GlobalDataXSS.MainIncludeFilesTable.put(
                file, (SymbolTable) GlobalDataXSS.MainSymbolTable.get(file));
            GlobalDataXSS.MainSymbolTable.remove(file);
          } catch (Exception ex) {
            Logger.getLogger(SymbolTable.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
      }
    }
  }
  /*
   * Move include file symbolTable from mst to mift
   */
  public void mvIncludeFiles(List fileList) throws IOException {
    for (Iterator<String> it1 = this.getIncludeFiles().iterator(); it1.hasNext(); ) {
      String s = it1.next();
      if (GlobalDataApp.args_flags[3] == 1) {
        if (GlobalDataSqli.MainSymbolTable.containsKey(s) == true) {
          GlobalDataSqli.MainIncludeFilesTable.put(
              s, (SymbolTable) GlobalDataSqli.MainSymbolTable.get(s));
          GlobalDataSqli.MainSymbolTable.remove(s);
        } else {
          if (GlobalDataSqli.MainIncludeFilesTable.containsKey(s) == false) {
            try {
              // file include do not exists in mst and mift
              // Create AST
              buildAST ast = new buildAST(s, 0);
              CommonTreeNodeStream nodes = ast.getNodes();

              // build walker tree to SQLI
              buildWalkerTree_sqli sqli =
                  new buildWalkerTree_sqli(
                      nodes,
                      s,
                      GlobalDataSqli.MainSymbolTable,
                      GlobalDataSqli.MainIncludeFilesTable,
                      GlobalDataSqli.MainFunctionsTable,
                      GlobalDataSqli.MainFunctionsTaintedTable,
                      GlobalDataSqli.MainTaintedTable,
                      GlobalDataSqli.mus,
                      GlobalDataSqli.MainLinesToCorrect,
                      GlobalDataSqli.MainClassesTable,
                      GlobalDataSqli.MainInstancesTable,
                      fileList);

              GlobalDataSqli.MainIncludeFilesTable.put(
                  s, (SymbolTable) GlobalDataSqli.MainSymbolTable.get(s));
              GlobalDataSqli.MainSymbolTable.remove(s);
            } catch (RecognitionException ex) {
              Logger.getLogger(SymbolTable.class.getName()).log(Level.SEVERE, null, ex);
            }
          }
        }

        SymbolTable st_aux = GlobalDataSqli.MainIncludeFilesTable.get(s);
        if (st_aux.getIncludeFiles().isEmpty() == false) {
          st_aux.mvIncludeFiles(fileList);
        }
      }

      if (GlobalDataApp.args_flags[6] == 1) {
        if (GlobalDataCodeInj.MainSymbolTable.containsKey(s) == true) {
          GlobalDataCodeInj.MainIncludeFilesTable.put(
              s, (SymbolTable) GlobalDataCodeInj.MainSymbolTable.get(s));
          GlobalDataCodeInj.MainSymbolTable.remove(s);
        } else {
          if (GlobalDataCodeInj.MainIncludeFilesTable.containsKey(s) == false) {
            // file include do not exists in mst and mift
            // Create AST
            buildAST ast = new buildAST(s, 0);
            CommonTreeNodeStream nodes = ast.getNodes();

            // build walker tree to SQLI
            buildWalkerTree_CodeInj ci =
                new buildWalkerTree_CodeInj(
                    nodes,
                    s,
                    GlobalDataCodeInj.MainSymbolTable,
                    GlobalDataCodeInj.MainIncludeFilesTable,
                    GlobalDataCodeInj.MainFunctionsTable,
                    GlobalDataCodeInj.MainFunctionsTaintedTable,
                    GlobalDataCodeInj.MainTaintedTable,
                    GlobalDataCodeInj.mus,
                    GlobalDataCodeInj.MainLinesToCorrect,
                    GlobalDataCodeInj.MainClassesTable,
                    GlobalDataCodeInj.MainInstancesTable,
                    fileList);

            GlobalDataCodeInj.MainIncludeFilesTable.put(
                s, (SymbolTable) GlobalDataCodeInj.MainSymbolTable.get(s));
            GlobalDataCodeInj.MainSymbolTable.remove(s);
          }
        }

        SymbolTable st_aux = GlobalDataCodeInj.MainIncludeFilesTable.get(s);
        if (st_aux.getIncludeFiles().isEmpty() == false) {
          st_aux.mvIncludeFiles(fileList);
        }
      }

      if (GlobalDataApp.args_flags[7] == 1) {
        if (GlobalDataXSS.MainSymbolTable.containsKey(s) == true) {
          GlobalDataXSS.MainIncludeFilesTable.put(
              s, (SymbolTable) GlobalDataXSS.MainSymbolTable.get(s));
          GlobalDataXSS.MainSymbolTable.remove(s);
        } else {
          if (GlobalDataXSS.MainIncludeFilesTable.containsKey(s) == false) {
            // file include do not exists in mst and mift
            // Create AST
            buildAST ast = new buildAST(s, 0);
            CommonTreeNodeStream nodes = ast.getNodes();

            // build walker tree to SQLI
            buildWalkerTree_XSS xss =
                new buildWalkerTree_XSS(
                    nodes,
                    s,
                    GlobalDataXSS.MainSymbolTable,
                    GlobalDataXSS.MainIncludeFilesTable,
                    GlobalDataXSS.MainFunctionsTable,
                    GlobalDataXSS.MainFunctionsTaintedTable,
                    GlobalDataXSS.MainTaintedTable,
                    GlobalDataXSS.mus,
                    GlobalDataXSS.MainLinesToCorrect,
                    GlobalDataXSS.MainClassesTable,
                    GlobalDataXSS.MainInstancesTable,
                    fileList);

            GlobalDataXSS.MainIncludeFilesTable.put(
                s, (SymbolTable) GlobalDataXSS.MainSymbolTable.get(s));
            GlobalDataXSS.MainSymbolTable.remove(s);
          }
        }

        SymbolTable st_aux = GlobalDataXSS.MainIncludeFilesTable.get(s);
        if (st_aux.getIncludeFiles().isEmpty() == false) {
          st_aux.mvIncludeFiles(fileList);
        }
      }
    }
  }