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"); }