mirror of
https://github.com/AJMicke/KickerELO.git
synced 2026-03-11 13:31:02 +01:00
Refactor
This commit is contained in:
@@ -3,8 +3,10 @@ package org.kickerelo.kickerelo.repository;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -12,10 +14,23 @@ import java.util.Optional;
|
||||
public interface SpielerRepository extends JpaRepository<Spieler, Long> {
|
||||
Optional<Spieler> findByName(String name);
|
||||
|
||||
@Query("SELECT s FROM Spieler s WHERE EXISTS (SELECT 1 FROM Ergebnis1vs1 e WHERE e.gewinner=s OR e.verlierer=s)")
|
||||
@Query("SELECT s FROM Spieler s WHERE EXISTS (SELECT 1 FROM Ergebnis1vs1 e WHERE e.gewinner=s OR e.verlierer=s) " +
|
||||
"order by s.elo1vs1 desc ")
|
||||
List<Spieler> getSpielerWith1vs1Games();
|
||||
|
||||
@Query("SELECT s FROM Spieler s WHERE EXISTS (SELECT 1 FROM Ergebnis2vs2 e " +
|
||||
"WHERE e.gewinnerVorn=s OR e.verliererVorn=s OR e.gewinnerHinten=s OR e.verliererHinten=s)")
|
||||
"WHERE e.gewinnerVorn=s OR e.verliererVorn=s OR e.gewinnerHinten=s OR e.verliererHinten=s) " +
|
||||
"order by s.elo2vs2 desc")
|
||||
List<Spieler> getSpielerWith2vs2Games();
|
||||
|
||||
@Query("select distinct s from Spieler s join Ergebnis1vs1 e on (s = e.verlierer or s = e.gewinner) " +
|
||||
"where e.timestamp >= :dateTime " +
|
||||
"order by s.elo1vs1 desc")
|
||||
List<Spieler> getSpielerWith1vs1GamesSince(@Param("dateTime") LocalDateTime dateTime);
|
||||
|
||||
@Query("select distinct s from Spieler s join Ergebnis2vs2 e " +
|
||||
"on (s = e.verliererVorn or s = e.gewinnerVorn or s = e.verliererHinten or s = e.gewinnerHinten) " +
|
||||
"where e.timestamp >= :dateTime " +
|
||||
"order by s.elo2vs2 desc")
|
||||
List<Spieler> getSpielerWith2vs2GamesSince(@Param("dateTime") LocalDateTime dateTime);
|
||||
}
|
||||
|
||||
@@ -4,23 +4,19 @@ import com.vaadin.flow.component.checkbox.Checkbox;
|
||||
import com.vaadin.flow.component.html.H2;
|
||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import org.kickerelo.kickerelo.repository.Ergebnis1vs1Repository;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.kickerelo.kickerelo.repository.SpielerRepository;
|
||||
import org.kickerelo.kickerelo.util.comparator.Spieler1vs1EloComparator;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route("graph1vs1")
|
||||
public class Graph1vs1View extends VerticalLayout {
|
||||
private final Ergebnis1vs1Repository ergebnisRepository;
|
||||
private final SpielerRepository spielerRepository;
|
||||
private Chart chart;
|
||||
|
||||
public Graph1vs1View(Ergebnis1vs1Repository ergebnisRepository, SpielerRepository spielerRepository) {
|
||||
this.ergebnisRepository = ergebnisRepository;
|
||||
public Graph1vs1View(SpielerRepository spielerRepository) {
|
||||
this.spielerRepository = spielerRepository;
|
||||
setSizeFull();
|
||||
H2 subheading = new H2("1 vs 1 Elo");
|
||||
@@ -43,22 +39,12 @@ public class Graph1vs1View extends VerticalLayout {
|
||||
List<String> names = new ArrayList<>();
|
||||
List<Float> elo = new ArrayList<>();
|
||||
|
||||
spielerRepository.getSpielerWith1vs1Games().stream()
|
||||
.filter((spieler) -> {
|
||||
if (!onlyActive) {
|
||||
return true;
|
||||
}
|
||||
List<Spieler> spieler = (onlyActive) ?
|
||||
spielerRepository.getSpielerWith1vs1GamesSince(LocalDateTime.now().minusWeeks(4))
|
||||
: spielerRepository.getSpielerWith1vs1Games();
|
||||
|
||||
spieler.forEach((s) -> {names.add(s.getName()); elo.add(s.getElo1vs1());});
|
||||
|
||||
var results = ergebnisRepository.getResultsForSpieler(spieler);
|
||||
return results.stream().anyMatch((result) -> {
|
||||
var twoWeeksAgo = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).minusWeeks(2);
|
||||
return result.getTimestamp().isAfter(twoWeeksAgo);
|
||||
});
|
||||
})
|
||||
.sorted(new Spieler1vs1EloComparator()).forEach((s) -> {
|
||||
names.add(s.getName());
|
||||
elo.add(s.getElo1vs1());
|
||||
});
|
||||
return new Chart(names, elo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,23 +4,19 @@ import com.vaadin.flow.component.checkbox.Checkbox;
|
||||
import com.vaadin.flow.component.html.H2;
|
||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.router.Route;
|
||||
import org.kickerelo.kickerelo.repository.Ergebnis2vs2Repository;
|
||||
import org.kickerelo.kickerelo.data.Spieler;
|
||||
import org.kickerelo.kickerelo.repository.SpielerRepository;
|
||||
import org.kickerelo.kickerelo.util.comparator.Spieler2vs2EloComparator;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route("graph2vs2")
|
||||
public class Graph2vs2View extends VerticalLayout {
|
||||
private final Ergebnis2vs2Repository ergebnisRepository;
|
||||
private final SpielerRepository spielerRepository;
|
||||
private Chart chart;
|
||||
|
||||
public Graph2vs2View(Ergebnis2vs2Repository ergebnisRepository, SpielerRepository spielerRepository) {
|
||||
this.ergebnisRepository = ergebnisRepository;
|
||||
public Graph2vs2View(SpielerRepository spielerRepository) {
|
||||
this.spielerRepository = spielerRepository;
|
||||
setSizeFull();
|
||||
H2 subheading = new H2("2 vs 2 Elo");
|
||||
@@ -43,22 +39,12 @@ public class Graph2vs2View extends VerticalLayout {
|
||||
List<String> names = new ArrayList<>();
|
||||
List<Float> elo = new ArrayList<>();
|
||||
|
||||
spielerRepository.getSpielerWith2vs2Games().stream()
|
||||
.filter((spieler) -> {
|
||||
if (!onlyActive) {
|
||||
return true;
|
||||
}
|
||||
List<Spieler> spieler = (onlyActive) ?
|
||||
spielerRepository.getSpielerWith2vs2GamesSince(LocalDateTime.now().minusWeeks(4))
|
||||
: spielerRepository.getSpielerWith2vs2Games();
|
||||
|
||||
spieler.forEach((s) -> {names.add(s.getName()); elo.add(s.getElo2vs2());});
|
||||
|
||||
var results = ergebnisRepository.getResultsForSpieler(spieler);
|
||||
return results.stream().anyMatch((result) -> {
|
||||
var twoWeeksAgo = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).minusWeeks(2);
|
||||
return result.getTimestamp().isAfter(twoWeeksAgo);
|
||||
});
|
||||
})
|
||||
.sorted(new Spieler2vs2EloComparator()).forEach((s) -> {
|
||||
names.add(s.getName());
|
||||
elo.add(s.getElo2vs2());
|
||||
});
|
||||
return new Chart(names, elo);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user