2022-09-08 10:42:57 +02:00
|
|
|
/*
|
|
|
|
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.Table;
|
|
|
|
import lombok.AllArgsConstructor;
|
|
|
|
import lombok.Getter;
|
|
|
|
|
|
|
|
import java.sql.Timestamp;
|
2023-01-23 16:30:35 +01:00
|
|
|
import java.time.Instant;
|
|
|
|
import java.util.List;
|
2022-09-08 10:42:57 +02:00
|
|
|
|
|
|
|
@AllArgsConstructor
|
|
|
|
public class Event {
|
|
|
|
|
2023-05-03 17:50:27 +02:00
|
|
|
static {
|
|
|
|
SchematicType.Normal.name(); // Ensure SchematicType is loaded.
|
|
|
|
}
|
|
|
|
|
2022-09-08 10:42:57 +02:00
|
|
|
private static final Table<Event> table = new Table<>(Event.class);
|
2023-01-23 16:30:35 +01:00
|
|
|
|
|
|
|
private static final SelectStatement<Event> byCurrent = new SelectStatement<>(table, "SELECT * FROM Event WHERE Start < now() AND End > now()");
|
2022-09-08 10:42:57 +02:00
|
|
|
private static final SelectStatement<Event> byId = table.select(Table.PRIMARY);
|
2023-01-23 16:30:35 +01:00
|
|
|
private static final SelectStatement<Event> byName = table.select("eventName");
|
|
|
|
private static final SelectStatement<Event> byComing = new SelectStatement<>(table, "SELECT * FROM Event WHERE Start > now()");
|
|
|
|
|
|
|
|
private static Event current = null;
|
|
|
|
|
|
|
|
public static Event get(){
|
|
|
|
if(current != null && current.now())
|
|
|
|
return current;
|
|
|
|
|
|
|
|
current = byCurrent.select();
|
|
|
|
return current;
|
|
|
|
}
|
2022-09-08 10:42:57 +02:00
|
|
|
|
|
|
|
public static Event get(int eventID){
|
|
|
|
return byId.select(eventID);
|
|
|
|
}
|
|
|
|
|
2023-01-23 16:30:35 +01:00
|
|
|
public static Event get(String eventName) {
|
|
|
|
return byName.select(eventName);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static List<Event> getComing() {
|
|
|
|
return byComing.listSelect();
|
|
|
|
}
|
|
|
|
|
2022-09-08 10:42:57 +02:00
|
|
|
@Getter
|
|
|
|
@Field(keys = {Table.PRIMARY}, autoincrement = true)
|
|
|
|
private final int eventID;
|
|
|
|
@Getter
|
|
|
|
@Field(keys = {"eventName"})
|
2022-12-23 23:17:13 +01:00
|
|
|
private final String eventName;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Getter
|
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final Timestamp deadline;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Getter
|
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final Timestamp start;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Getter
|
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final Timestamp end;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Getter
|
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final int maximumTeamMembers;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Field(nullable = true)
|
2022-12-23 23:17:13 +01:00
|
|
|
private final SchematicType schemType;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final boolean publicSchemsOnly;
|
2022-09-08 10:42:57 +02:00
|
|
|
@Field
|
2022-12-23 23:17:13 +01:00
|
|
|
private final boolean spectateSystem;
|
2022-09-08 10:42:57 +02:00
|
|
|
|
|
|
|
public boolean publicSchemsOnly() {
|
|
|
|
return publicSchemsOnly;
|
|
|
|
}
|
|
|
|
public boolean spectateSystem(){
|
|
|
|
return spectateSystem;
|
|
|
|
}
|
2022-11-30 14:22:50 +01:00
|
|
|
|
|
|
|
public SchematicType getSchematicType() {
|
|
|
|
return schemType;
|
|
|
|
}
|
2023-01-23 16:30:35 +01:00
|
|
|
|
|
|
|
private boolean now() {
|
|
|
|
Instant now = Instant.now();
|
|
|
|
return now.isAfter(start.toInstant()) && now.isBefore(end.toInstant());
|
|
|
|
}
|
2022-09-08 10:42:57 +02:00
|
|
|
}
|