private void readProblemInfo(String pathName) {
    ProblemManager problemManager = new ProblemManager();
    File file = new File(pathName);
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
      String line;
      while ((line = br.readLine()) != null) {
        String[] sp = line.split(",");
        String input = MyUtil.readFromFile(new File(sp[1]));
        String output = MyUtil.readFromFile(new File(sp[2]));
        int timeLimit = Integer.valueOf(sp[3]);
        int memoryLimit = Integer.valueOf(sp[4]);
        String judgeMethod = "";
        if (sp.length == 6) judgeMethod = MyUtil.readFromFile(new File(sp[5]));

        Map<String, String> pinfo = new HashMap<String, String>();
        this.problems.put(sp[0], new ProblemInfo(sp[0], timeLimit, memoryLimit, 0));
        pinfo.put("problem_id", sp[0]);
        pinfo.put("time_limit", String.valueOf(timeLimit));
        pinfo.put("memory_limit", String.valueOf(memoryLimit));
        pinfo.put("special_judge", judgeMethod);
        pinfo.put("input", input);
        pinfo.put("output", output);
        pinfo.put("time_stamp", "0");
        problemManager.addEntry(pinfo);
      }
    } catch (IOException e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
  private void readConfigure() throws FileNotFoundException {
    ConfigureManager configureManager = new ConfigureManager();
    AccountManager accountManager = new AccountManager();
    ProblemManager problemManager = new ProblemManager();
    SubmissionManager submissionManager = new SubmissionManager();
    QAManager qaManager = new QAManager();
    ClarificationManager clarificationManager = new ClarificationManager();
    Map<String, String> config = new HashMap<String, String>();

    configureManager.createTable();
    accountManager.createTable();
    problemManager.createTable();
    submissionManager.createTable();
    qaManager.createTable();
    clarificationManager.createTable();
    this.port = 8888;
    this.scoreBoardPort = 8889;
    // default port

    File file = new File("config.txt");
    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
      String line;
      while ((line = br.readLine()) != null) {
        String[] sp = line.split(":");
        if (sp[0].equals("port")) this.port = Integer.valueOf(sp[1]);
        else if (sp[0].equals("scoreboardport")) this.scoreBoardPort = Integer.valueOf(sp[1]);
        else if (sp[0].equals("team")) {
          readTeamAccount(sp[1]);
        } else if (sp[0].equals("judge")) {
          readJudgeAccount(sp[1]);
        } else if (sp[0].equals("problem")) {
          readProblemInfo(sp[1]);
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
      System.exit(1);
    }

    config.put("ip", this.ip.getHostAddress());
    config.put("port", Integer.toString(this.port));
    config.put("scoreboard_port", Integer.toString(this.scoreBoardPort));
    config.put("start_time", "0");
    config.put("duration", "300");
    config.put("time_stamp", "0");
    configureManager.addEntry(config);
  }
 private void readJudgeAccount(String pathName) {
   AccountManager accountManager = new AccountManager();
   File file = new File(pathName);
   try (BufferedReader br = new BufferedReader(new FileReader(file))) {
     String line;
     while ((line = br.readLine()) != null) {
       String[] sp = line.split(",");
       this.judges.put(sp[0], new Judge(sp[0], null));
       Map<String, String> judge_account = new HashMap<String, String>();
       judge_account.put("account", sp[0]);
       judge_account.put("password", sp[1]);
       judge_account.put("type", "judge");
       accountManager.addEntry(judge_account);
     }
   } catch (IOException e) {
     e.printStackTrace();
     System.exit(1);
   }
 }