1
0
Fork 0
This repository has been archived on 2024-02-17. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Projection_Planning/src/main/java/DB/Projection.java
Tergel TSAGAAN a9e867237a dispose dialog when escape
handling multiple projection on same slot and room
2021-01-13 15:37:51 +01:00

124 lines
4.1 KiB
Java

package DB;
import Exceptions.NotFoundInTable;
import lombok.Getter;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Map;
public class Projection extends Table {
@Getter final private int id;
public Projection(int id) throws NotFoundInTable {
super("Projection", "id", Integer.toString(id));
this.id = id;
}
public Projection(Date startDate, Competition competition, Room room, Movie movie, Slot slot) {
super("Projection", "id", Map.ofEntries(
Map.entry("startDate", startDate.toString()),
Map.entry("CompetitionName", competition.getName()),
Map.entry("RoomName", room.getName()),
Map.entry("MovieName", movie.getName()),
Map.entry("SlotId", Integer.toString(slot.getId()))
));
this.id = Integer.parseInt(super.checkValue);
}
public Date getStartDate() {
return get(Date.class, "startDate");
}
public Competition getCompetition() {
return get(Competition.class, "CompetitionName");
}
public Room getRoom() {
return get(Room.class, "RoomName");
}
public Movie getMovie() {
return get(Movie.class, "MovieName");
}
public Slot getSlot() {
return get(Slot.class, "SlotId");
}
public boolean setStartDate(Date startDate) {
return set("startDate", startDate.toString());
}
public boolean setCompetition(Competition competition) {
return set("CompetitionName", competition.getName());
}
public boolean setRoom(Room room) {
return set("RoomName", room.getName());
}
public boolean setMovie(Movie movie) {
return set("MovieName", movie.getName());
}
static public ArrayList<Projection> getAll() {
ArrayList<Projection> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT id FROM Projection");
for (ResultSet rs = ps.executeQuery(); rs.next();)
list.add(new Projection(rs.getInt("id")));
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return list;
}
static public ArrayList<Projection> getAvailable(Competition competition) {
ArrayList<Projection> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT id FROM Projection WHERE CompetitionName = ?");
ps.setString(1, competition.getName());
for (ResultSet rs = ps.executeQuery(); rs.next();)
list.add(new Projection(rs.getInt("id")));
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return list;
}
static public Projection find(Date date, Competition competition, Room room, Movie movie, Slot slot) {
Projection projection = null;
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT id FROM Projection WHERE startDate = ? AND CompetitionName = ? AND RoomName = ? AND MovieName = ? AND SlotId = ?");
ps.setDate(1, date);
ps.setString(2, competition.getName());
ps.setString(3, room.getName());
ps.setString(4, movie.getName());
ps.setInt(5, slot.getId());
if (ps.execute()) {
ResultSet rs = ps.getResultSet();
rs.next();
projection = new Projection(rs.getInt("id"));
}
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return projection;
}
@Override
public String toString() {
return getMovie().getName();
}
public String[] toArray() {
return new String[]{getMovie().toString(), getCompetition().toString(), getRoom().toString(), getStartDate().toString(), getSlot().toString()};
}
}