From 543376af521b1ad3fcef89e1c6d5890c274783ca Mon Sep 17 00:00:00 2001 From: flifloo Date: Thu, 17 Dec 2020 11:59:26 +0100 Subject: [PATCH] Add exception when new object is not present in the DB --- src/main/java/DB/Competition.java | 19 ++++++----- src/main/java/DB/DB.java | 32 ++++++++++++++++++- src/main/java/DB/Movie.java | 13 ++++---- src/main/java/DB/Projection.java | 15 ++++----- src/main/java/DB/Room.java | 13 ++++---- src/main/java/DB/Slot.java | 11 +++---- src/main/java/DB/Table.java | 19 +++++++++-- src/main/java/DB/User.java | 13 ++++---- src/main/java/DB/UserType.java | 11 +++---- src/main/java/Exceptions/NotFoundInTable.java | 7 ++++ src/main/java/ProjectionPlanning/Main.java | 6 ++-- 11 files changed, 101 insertions(+), 58 deletions(-) create mode 100644 src/main/java/Exceptions/NotFoundInTable.java diff --git a/src/main/java/DB/Competition.java b/src/main/java/DB/Competition.java index 7fbaeff..2cc58fe 100644 --- a/src/main/java/DB/Competition.java +++ b/src/main/java/DB/Competition.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -29,11 +30,9 @@ import java.util.ArrayList; public class Competition extends Table { @Getter final private String name; - public Competition(String name) { + public Competition(String name) throws NotFoundInTable { + super("Competition", "name", name); this.name = name; - tableName = "Competition"; - check = "name"; - this.checkValue = this.name; } public Integer getDays() { @@ -67,7 +66,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Competition(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -81,7 +80,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new User(rs.getString("email"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -95,7 +94,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Slot(rs.getInt("idk"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -109,7 +108,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Room(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -123,7 +122,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Projection(rs.getInt("id"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -137,7 +136,7 @@ public class Competition extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Movie(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/DB.java b/src/main/java/DB/DB.java index 25a82bc..4b5527f 100644 --- a/src/main/java/DB/DB.java +++ b/src/main/java/DB/DB.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Data; import lombok.Getter; @@ -62,12 +63,26 @@ public class DB { returnValue = rs.getTime(value); else if (cl == Data.class) returnValue = rs.getDate(value); + else if (cl == Competition.class) + returnValue = new Competition(rs.getString(value)); + else if (cl == Movie.class) + returnValue = new Movie(rs.getString(value)); + else if (cl == Projection.class) + returnValue = new Projection(rs.getInt(value)); + else if (cl == Room.class) + returnValue = new Room(rs.getString(value)); + else if (cl == Slot.class) + returnValue = new Slot(rs.getInt(value)); + else if (cl == User.class) + returnValue = new Slot(rs.getInt(value)); + else if (cl == UserType.class) + returnValue = new UserType(rs.getString(value)); else returnValue = rs.getObject(value); ps.close(); return (T)returnValue; } - } catch (SQLException e) { + } catch (SQLException | NotFoundInTable e) { return null; } return null; @@ -88,6 +103,21 @@ public class DB { return false; } + static public boolean exist(String table, String check, String checkValue) { + try { + boolean r = false; + PreparedStatement ps = DB.connection.prepareStatement("SELECT * FROM "+table+" WHERE "+check+" = ?"); + ps.setString(1, checkValue); + ps.execute(); + if (ps.getResultSet().next()) + r = true; + ps.close(); + return r; + } catch (SQLException e) { + return false; + } + } + static public boolean delete(String table, String check, String checkValue) { try { PreparedStatement ps = DB.connection.prepareStatement("DELETE FROM "+table+" WHERE "+check+" = ?"); diff --git a/src/main/java/DB/Movie.java b/src/main/java/DB/Movie.java index ffc98d3..f9df91d 100644 --- a/src/main/java/DB/Movie.java +++ b/src/main/java/DB/Movie.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -11,11 +12,9 @@ import java.util.ArrayList; public class Movie extends Table { @Getter final private String name; - public Movie(String name) { + public Movie(String name) throws NotFoundInTable { + super("Movie", "name", name); this.name = name; - tableName = "Movie"; - check = "name"; - this.checkValue = this.name; } public String getDirector() { @@ -27,7 +26,7 @@ public class Movie extends Table { } public Competition getCompetition() { - return new Competition(get(String.class, "CompetitionName")); + return get(Competition.class, "CompetitionName"); } public boolean setDirector(String director) { @@ -49,7 +48,7 @@ public class Movie extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Movie(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -63,7 +62,7 @@ public class Movie extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Projection(rs.getInt("id"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/Projection.java b/src/main/java/DB/Projection.java index 1b89a25..57c722a 100644 --- a/src/main/java/DB/Projection.java +++ b/src/main/java/DB/Projection.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -11,11 +12,9 @@ import java.util.Date; public class Projection extends Table { @Getter final private int id; - public Projection(int id) { + public Projection(int id) throws NotFoundInTable { + super("Projection", "id", Integer.toString(id)); this.id = id; - tableName = "Projection"; - check = "id"; - this.checkValue = Integer.toString(this.id); } public Date getStartDate() { @@ -23,15 +22,15 @@ public class Projection extends Table { } public Competition getCompetition() { - return new Competition(get(String.class, "CompetitionName")); + return get(Competition.class, "CompetitionName"); } public Room getRoom() { - return new Room(get(String.class, "RoomName")); + return get(Room.class, "RoomName"); } public Movie getMovie() { - return new Movie(get(String.class, "MovieName")); + return get(Movie.class, "MovieName"); } public boolean setStartDate(Date startDate) { @@ -57,7 +56,7 @@ public class Projection extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Projection(rs.getInt("id"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/Room.java b/src/main/java/DB/Room.java index c9d5df4..3a8effa 100644 --- a/src/main/java/DB/Room.java +++ b/src/main/java/DB/Room.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -10,11 +11,9 @@ import java.util.ArrayList; public class Room extends Table { @Getter final private String name; - public Room(String name) { + public Room(String name) throws NotFoundInTable { + super("Room", "name", name); this.name = name; - tableName = "Room"; - check = "name"; - this.checkValue = this.name; } public Integer getPlaces() { @@ -32,7 +31,7 @@ public class Room extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Room(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -46,7 +45,7 @@ public class Room extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Competition(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -60,7 +59,7 @@ public class Room extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Projection(rs.getInt("id"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/Slot.java b/src/main/java/DB/Slot.java index 9574295..d871e00 100644 --- a/src/main/java/DB/Slot.java +++ b/src/main/java/DB/Slot.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -11,11 +12,9 @@ import java.util.Date; public class Slot extends Table { @Getter final private int id; - public Slot(int id) { + public Slot(int id) throws NotFoundInTable { + super("Slot", "id", Integer.toString(id)); this.id = id; - tableName = "Slot"; - check = "id"; - this.checkValue = Integer.toString(this.id); } public Date getStartTime() { @@ -23,7 +22,7 @@ public class Slot extends Table { } public Competition getCompetition() { - return new Competition(get(String.class, "CompetitionName")); + return get(Competition.class, "CompetitionName"); } public boolean setCompetition(Competition competition) { @@ -41,7 +40,7 @@ public class Slot extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new Slot(rs.getInt("id"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/Table.java b/src/main/java/DB/Table.java index 9a159ca..58e4892 100644 --- a/src/main/java/DB/Table.java +++ b/src/main/java/DB/Table.java @@ -1,10 +1,19 @@ package DB; +import Exceptions.NotFoundInTable; public abstract class Table { - static protected String tableName; - static protected String check; - protected String checkValue; + final protected String tableName; + final protected String check; + final protected String checkValue; + + protected Table(String tableName, String check, String checkValue) throws NotFoundInTable { + this.tableName = tableName; + this.check = check; + this.checkValue = checkValue; + if (!exist()) + throw new NotFoundInTable(this.tableName); + } protected T get(Class cl, String value) { return DB.get(cl, tableName, value, check, checkValue); @@ -14,6 +23,10 @@ public abstract class Table { return DB.set(tableName, value, newValue, check, checkValue); } + public boolean exist() { + return DB.exist(tableName, check, checkValue); + } + public boolean delete() { return DB.delete(tableName, check, checkValue); } diff --git a/src/main/java/DB/User.java b/src/main/java/DB/User.java index c6c1cb0..2f5e1da 100644 --- a/src/main/java/DB/User.java +++ b/src/main/java/DB/User.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -10,11 +11,9 @@ import java.util.ArrayList; public class User extends Table { @Getter final private String email; - public User(String email) { + public User(String email) throws NotFoundInTable { + super("User", "email", email); this.email = email; - tableName = "User"; - check = "email"; - this.checkValue = this.email; } public String getFirstName() { @@ -30,11 +29,11 @@ public class User extends Table { } public UserType getType() { - return new UserType(get(String.class, "UserTypeName")); + return get(UserType.class, "UserTypeName"); } public Competition getCompetition() { - return new Competition(get(String.class, "competitionName")); + return get(Competition.class, "competitionName"); } private String getPasswordHash() { @@ -76,7 +75,7 @@ public class User extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new User(rs.getString("email"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/DB/UserType.java b/src/main/java/DB/UserType.java index d2dbb89..e557448 100644 --- a/src/main/java/DB/UserType.java +++ b/src/main/java/DB/UserType.java @@ -1,5 +1,6 @@ package DB; +import Exceptions.NotFoundInTable; import lombok.Getter; import java.sql.PreparedStatement; @@ -10,11 +11,9 @@ import java.util.ArrayList; public class UserType extends Table { @Getter final private String name; - public UserType(String name) { + public UserType(String name) throws NotFoundInTable { + super("UserType", "name", name); this.name = name; - tableName = "UserType"; - check = "name"; - this.checkValue = this.name; } static public ArrayList getAll() { @@ -24,7 +23,7 @@ public class UserType extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new UserType(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; @@ -38,7 +37,7 @@ public class UserType extends Table { for (ResultSet rs = ps.executeQuery(); rs.next();) list.add(new User(rs.getString("name"))); ps.close(); - } catch (SQLException | NullPointerException e) { + } catch (SQLException | NullPointerException | NotFoundInTable e) { return null; } return list; diff --git a/src/main/java/Exceptions/NotFoundInTable.java b/src/main/java/Exceptions/NotFoundInTable.java new file mode 100644 index 0000000..df4ea98 --- /dev/null +++ b/src/main/java/Exceptions/NotFoundInTable.java @@ -0,0 +1,7 @@ +package Exceptions; + +public class NotFoundInTable extends Exception { + public NotFoundInTable(String name) { + super(name+" not found in table"); + } +} diff --git a/src/main/java/ProjectionPlanning/Main.java b/src/main/java/ProjectionPlanning/Main.java index 237f2a3..d0d0ac1 100644 --- a/src/main/java/ProjectionPlanning/Main.java +++ b/src/main/java/ProjectionPlanning/Main.java @@ -1,12 +1,12 @@ package ProjectionPlanning; import DB.*; -import GUI.GUI; +import Exceptions.NotFoundInTable; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws NotFoundInTable { //new GUI(); DB.connect(); - System.out.println(new User("test@test.com").delete()); + System.out.println(new User("test@test.com").exist()); } }