Lixfel
8dbf62e560
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
Signed-off-by: Lixfel <agga-games@gmx.de>
133 Zeilen
3.9 KiB
Java
133 Zeilen
3.9 KiB
Java
/*
|
|
This file is a part of the SteamWar software.
|
|
|
|
Copyright (C) 2020 SteamWar.de-Serverteam
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
package de.steamwar.sql;
|
|
|
|
import de.steamwar.sql.internal.Field;
|
|
import de.steamwar.sql.internal.SelectStatement;
|
|
import de.steamwar.sql.internal.Statement;
|
|
import de.steamwar.sql.internal.Table;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Getter;
|
|
|
|
import java.sql.Timestamp;
|
|
import java.util.*;
|
|
|
|
import static java.time.temporal.ChronoUnit.SECONDS;
|
|
|
|
@AllArgsConstructor
|
|
public class EventFight implements Comparable<EventFight> {
|
|
|
|
private static final Table<EventFight> table = new Table<>(EventFight.class);
|
|
private static final SelectStatement<EventFight> byId = table.select(Table.PRIMARY);
|
|
private static final SelectStatement<EventFight> allComing = new SelectStatement<>(table, "SELECT * FROM EventFight WHERE StartTime > now() ORDER BY StartTime ASC");
|
|
private static final SelectStatement<EventFight> event = new SelectStatement<>(table, "SELECT * FROM EventFight WHERE EventID = ? ORDER BY StartTime ASC");
|
|
private static final Statement reschedule = table.update(Table.PRIMARY, "StartTime");
|
|
private static final Statement setResult = table.update(Table.PRIMARY, "Ergebnis");
|
|
private static final Statement setFight = table.update(Table.PRIMARY, "Fight");
|
|
|
|
private static final Queue<EventFight> fights = new PriorityQueue<>();
|
|
|
|
public static EventFight get(int fightID) {
|
|
return byId.select(fightID);
|
|
}
|
|
|
|
public static void loadAllComingFights() {
|
|
fights.clear();
|
|
fights.addAll(allComing.listSelect());
|
|
}
|
|
|
|
public static List<EventFight> getEvent(int eventID) {
|
|
return event.listSelect(eventID);
|
|
}
|
|
|
|
public static Queue<EventFight> getFights() {
|
|
return fights;
|
|
}
|
|
|
|
@Getter
|
|
@Field
|
|
private final int eventID;
|
|
@Getter
|
|
@Field(keys = {Table.PRIMARY}, autoincrement = true)
|
|
private final int fightID;
|
|
@Getter
|
|
@Field
|
|
private Timestamp startTime;
|
|
@Getter
|
|
@Field
|
|
private final String spielmodus;
|
|
@Getter
|
|
@Field
|
|
private final String map;
|
|
@Getter
|
|
@Field
|
|
private final int teamBlue;
|
|
@Getter
|
|
@Field
|
|
private final int teamRed;
|
|
@Getter
|
|
@Field
|
|
private final int kampfleiter;
|
|
@Getter
|
|
@Field(def = "0")
|
|
private int ergebnis;
|
|
@Field(nullable = true)
|
|
private int fight;
|
|
|
|
public void setErgebnis(int winner) {
|
|
this.ergebnis = winner;
|
|
setResult.update(winner, fightID);
|
|
}
|
|
|
|
public void setFight(int fight) {
|
|
//Fight.FightID, not EventFight.FightID
|
|
this.fight = fight;
|
|
setFight.update(fight, fightID);
|
|
}
|
|
|
|
public boolean hasFinished() {
|
|
return fight != 0;
|
|
}
|
|
|
|
public void reschedule() {
|
|
startTime = Timestamp.from(new Date().toInstant().plus(30, SECONDS));
|
|
reschedule.update(startTime, fightID);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode(){
|
|
return fightID;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o){
|
|
if(o == null)
|
|
return false;
|
|
if(!(o instanceof EventFight))
|
|
return false;
|
|
return fightID == ((EventFight) o).fightID;
|
|
}
|
|
|
|
@Override
|
|
public int compareTo(EventFight o) {
|
|
return startTime.compareTo(o.startTime);
|
|
}
|
|
}
|