public void initComponents() {
   competitors =
       DB.getCompetitors(turniej.getId())
           .stream()
           .filter(c -> c.getGoesFinal())
           .collect(Collectors.toList());
   competitorMap = competitors.stream().collect(Collectors.toMap(c -> c.getId(), c -> c));
   singleGames =
       DB.getSingleGames(turniej.getId(), true)
           .stream()
           .filter(
               sg ->
                   competitorMap.containsKey(sg.getCompetitorW())
                       && competitorMap.containsKey(sg.getCompetitorB()))
           .collect(Collectors.toList());
   // filtrowanie powyżej, bo baza zwraca również gry,
   // gdzie grali (dostał się do finałów) vs (nie dostał się)
   // można to naprawić w bazie
   for (Competitor c : competitors) {
     competitorGames.put(c, new LinkedList<>());
   }
   for (SingleGame sg : singleGames) {
     competitorGames.get(competitorMap.get(sg.getCompetitorW())).add(sg);
     competitorGames.get(competitorMap.get(sg.getCompetitorB())).add(sg);
   }
   removeAll();
   table = new JTable(new MyTableModel());
   add(new JScrollPane(table));
   updateTables();
 }
 public void setSBBounds() {
   int graczy = DB.getCompetitors(turniej.getId()).size();
   groupsSB.setMinimum(2);
   groupsSB.setMaximum((int) Math.ceil(graczy / 2) + 2);
   groupsSB.setValue(turniej.getRounds());
   recalcStats();
 }
 public void recalcStats() { // TODO - poprawić przewidywany czas turnieju
   groupsL.setText(Strings.groupsT + groupsSB.getValue());
   boardsL.setText(Strings.boardsT + boardsSB.getValue());
   sgTimeL.setText(Strings.sgTimeT + (sgTimeSB.getValue() / 2f) + " min");
   int graczy = DB.getCompetitors(turniej.getId()).size();
   if (turniej.getBoards() < 1 || graczy < 2) return;
   float czasSG = sgTimeSB.getValue() / 2f;
   int grup = groupsSB.getValue();
   int rozgrywek = Simulator.rozgrywek_eliminacje(graczy, grup);
   stats1L.setText(Strings.gamesT + String.valueOf(rozgrywek));
   int gier_naraz = (int) Math.min(Math.floor(graczy / 2), turniej.getBoards());
   stats2L.setText(Strings.timeRRET + Math.ceil(rozgrywek / gier_naraz) * czasSG + " min");
 }