1
0
Fork 0

Add getAvailable on Movie, Projection, Room and Slot

This commit is contained in:
Ethanell 2021-01-04 17:54:51 +01:00
parent 480d8bd62c
commit 9d7216673f
4 changed files with 84 additions and 8 deletions

View file

@ -66,6 +66,20 @@ public class Movie extends Table {
return list;
}
static public ArrayList<Movie> getAvailable(Competition competition) {
ArrayList<Movie> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT name FROM Movie WHERE CompetitionName = ?");
ps.setString(1, competition.getName());
for (ResultSet rs = ps.executeQuery(); rs.next();)
list.add(new Movie(rs.getString("name")));
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return list;
}
public ArrayList<Projection> getProjections() {
ArrayList<Projection> list = new ArrayList<>();
try {

View file

@ -18,12 +18,13 @@ public class Projection extends Table {
this.id = id;
}
public Projection(Date startDate, Competition competition, Room room, Movie movie) {
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("MovieName", movie.getName()),
Map.entry("SlotId", Integer.toString(slot.getId()))
));
this.id = Integer.parseInt(super.checkValue);
}
@ -44,6 +45,10 @@ public class Projection extends Table {
return get(Movie.class, "MovieName");
}
public Slot getSlot() {
return get(Slot.class, "SlotId");
}
public boolean setStartDate(Date startDate) {
return set("startDate", startDate.toString());
}
@ -73,6 +78,20 @@ public class Projection extends Table {
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;
}
@Override
public boolean delete() {
return false;

View file

@ -4,6 +4,7 @@ import Exceptions.AlreadyOnTable;
import Exceptions.NotFoundInTable;
import lombok.Getter;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@ -47,6 +48,22 @@ public class Room extends Table {
return list;
}
static public ArrayList<Room> getAvailable(Movie movie, Slot slot, Date date) {
ArrayList<Room> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT R.name FROM Room R INNER JOIN CompetitionRoom CR on R.name = CR.RoomName LEFT JOIN Projection P on R.name = P.RoomName LEFT JOIN Slot S on S.id = P.SlotId WHERE CR.CompetitionName = ? AND NOT (S.id = ? AND P.startDate = ?) OR P.id IS NULL");
ps.setString(1, movie.getCompetition().getName());
ps.setInt(2, slot.getId());
ps.setDate(3, date);
for (ResultSet rs = ps.executeQuery(); rs.next();)
list.add(new Room(rs.getString("name")));
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return list;
}
public ArrayList<Competition> getCompetitions() {
ArrayList<Competition> list = new ArrayList<>();
try {

View file

@ -3,10 +3,7 @@ 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.sql.*;
import java.util.ArrayList;
import java.util.Map;
@ -26,8 +23,8 @@ public class Slot extends Table {
this.id = Integer.parseInt(super.checkValue);
}
public Date getStartTime() {
return get(Date.class, "startTime");
public Time getStartTime() {
return get(Time.class, "startTime");
}
public Competition getCompetition() {
@ -42,6 +39,20 @@ public class Slot extends Table {
return set("startTime", startTime.toString());
}
public ArrayList<Projection> getProjections() {
ArrayList<Projection> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT id FROM Projection WHERE SlotId = ?");
ps.setInt(1, id);
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<Slot> getAll() {
ArrayList<Slot> list = new ArrayList<>();
try {
@ -54,4 +65,19 @@ public class Slot extends Table {
}
return list;
}
static public ArrayList<Slot> getAvailable(Competition competition, Date date) {
ArrayList<Slot> list = new ArrayList<>();
try {
PreparedStatement ps = DB.getConnection().prepareStatement("SELECT S.id FROM Slot S LEFT JOIN Projection P ON S.id = P.SlotId WHERE S.CompetitionName = ? AND P.startDate != ? OR P.id IS NULL");
ps.setString(1, competition.getName());
ps.setDate(2, date);
for (ResultSet rs = ps.executeQuery(); rs.next();)
list.add(new Slot(rs.getInt("id")));
ps.close();
} catch (SQLException | NullPointerException | NotFoundInTable e) {
return null;
}
return list;
}
}