diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/Division.java b/src/main/java/edu/ntnu/idatt1002/k1g4/Division.java index 43a3eaf8b433e7962fab88f8823b4d65ce481f47..bd0399a439707cb7d4fc7167a75b4295cf4bab77 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/Division.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/Division.java @@ -3,7 +3,6 @@ package edu.ntnu.idatt1002.k1g4; import edu.ntnu.idatt1002.k1g4.dao.MatchDAO; import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; import java.util.*; /** diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/client/App.java b/src/main/java/edu/ntnu/idatt1002/k1g4/client/App.java index 2425c12e4c65fff4d29aabf67453760281939ed1..6923106a9ad597af023aa60b54cc490d909e3890 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/client/App.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/client/App.java @@ -1,6 +1,7 @@ package edu.ntnu.idatt1002.k1g4.client; import edu.ntnu.idatt1002.k1g4.dao.CreateDatabase; +import edu.ntnu.idatt1002.k1g4.dao.TeamDAO; import javafx.application.Application; import javafx.application.Platform; import javafx.scene.Scene; @@ -38,6 +39,8 @@ public class App extends Application { stage.setTitle("Floorball cup manager"); CreateDatabase.createNewDatabase("tournament.db"); CreateDatabase.createNewTables("tournament.db"); + TeamDAO teamDAO = new TeamDAO(); + System.out.println(teamDAO.getTeamById(1, 1)); stage.setMaxWidth(DEFAULT_WIDTH); stage.setMinWidth(DEFAULT_WIDTH); diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/client/Model.java b/src/main/java/edu/ntnu/idatt1002/k1g4/client/Model.java index 00e74491b9e1b624332664e9fe56cdd2f8b66abc..6064683e4abb7ea05cc45e71e6d7ea1caa8e586b 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/client/Model.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/client/Model.java @@ -283,6 +283,7 @@ public class Model { LocalDateTime startTime; long duration; String field; + if (teamOneComBox.getValue().equals(teamTwoComBox.getValue())) giveError("Teams cannot be the same"); try { MatchDAO matchDAO = new MatchDAO(); teamOne = teamOneComBox.getValue(); @@ -371,7 +372,8 @@ public class Model { team.setCompeting(true); try { teamDAO.addTeam(team, currentDivision.getDivisionId()); - teamDAO.linkTeamToDivision(teamDAO.getTeamByName(teamName).getTeamId(), currentDivision.getDivisionId()); + teamDAO.linkTeamToDivision(teamDAO.getTeamByName(teamName, currentDivision.getDivisionId()).getTeamId(), currentDivision.getDivisionId()); + System.out.println(teamDAO.getTeamByName(teamName, currentDivision.getDivisionId()).isCompeting()); } catch (IllegalArgumentException e) { result = false; giveError("Team already exists"); diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/DivisionOverviewController.java b/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/DivisionOverviewController.java index 2193ad40f2baae5002b16b8d5abd5b6d8c75d782..563c96f5f019803f3fe5d4996485f2d219199772 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/DivisionOverviewController.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/DivisionOverviewController.java @@ -154,7 +154,7 @@ public class DivisionOverviewController implements Initializable { if (rc) { TeamDAO teamDAO = new TeamDAO(); MatchDAO matchDAO = new MatchDAO(); - teamDAO.deleteTeam(getCurrentTeam().getTeamId()); + teamDAO.deleteTeam(getCurrentTeam().getTeamId(), getCurrentDivision().getDivisionId()); getCurrentDivision().setCompetingTeams(teamDAO.getTeamsByDivision(getCurrentDivision().getDivisionId())); getCurrentDivision().setMatches(matchDAO.getMatchesByDivision(getCurrentDivision().getDivisionId())); changeScene("division-overview"); diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/TeamOverviewController.java b/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/TeamOverviewController.java index 64badf3d8e453598445b2c7a103e6aa565cd7ef9..609c46ebc17d8d7d80a1231a32bd74a7a8076a23 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/TeamOverviewController.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/client/controllers/TeamOverviewController.java @@ -65,7 +65,7 @@ public class TeamOverviewController implements Initializable { if (rc) { TeamDAO teamDAO = new TeamDAO(); MatchDAO matchDAO = new MatchDAO(); - teamDAO.deleteTeam(getCurrentTeam().getTeamId()); + teamDAO.deleteTeam(getCurrentTeam().getTeamId(), getCurrentDivision().getDivisionId()); getCurrentDivision().setCompetingTeams(teamDAO.getTeamsByDivision(getCurrentDivision().getDivisionId())); getCurrentDivision().setMatches(matchDAO.getMatchesByDivision(getCurrentDivision().getDivisionId())); changeScene("division-overview"); diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CreateDatabase.java b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CreateDatabase.java index 59a6ac60a607dcc842414e242c7e9c432ccb2e67..0db93228a82f7ace4be9583e36414cfc3248edb5 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CreateDatabase.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CreateDatabase.java @@ -78,6 +78,7 @@ public class CreateDatabase { String divisionsTeamsSql = "CREATE TABLE IF NOT EXISTS divisionsteamslink(\n" + " divisionId integer,\n" + " teamId integer,\n" + + " competing bit, \n" + " FOREIGN KEY (divisionId) REFERENCES divisions(divisionId),\n" + " FOREIGN KEY (teamId) REFERENCES teams(teamId),\n" + " PRIMARY KEY (divisionId, teamId)\n" diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CupDAO.java b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CupDAO.java index 8e9cbfc687d4b44776aaff544bc324a1eb0b3a17..93d160126f7730d296c2e9c0314e15e22d3b7523 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CupDAO.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/CupDAO.java @@ -140,7 +140,7 @@ public class CupDAO { HashMap<Integer, Team> teams = teamDAO.getTeamsByDivision(division.getDivisionId()); teams.forEach((key, value) -> { System.out.println("Team key and value: " + key + " : " + value); - teamDAO.deleteTeam(key); + teamDAO.deleteTeam(key, division.getDivisionId()); }); ArrayList<Match> matches = matchDAO.getMatchesByDivision(division.getDivisionId()); for (Match match : matches) { diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/MatchDAO.java b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/MatchDAO.java index 260dd1e1e484b59e1cdfdffbe53fd31420abe958..afe54d13f63ec67230386c0b1d9460cd954aff5d 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/MatchDAO.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/MatchDAO.java @@ -44,8 +44,8 @@ public class MatchDAO { match = new Match(); teamDAO = new TeamDAO(); match.setDivisionId(resultSet.getInt("divisionId")); - match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id")))); - match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id")))); + match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id"), divisionId))); + match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id"), divisionId))); match.getTeamOne().setTeamId(resultSet.getInt("team1Id")); match.getTeamTwo().setTeamId(resultSet.getInt("team2Id")); match.setScore(new int[] {resultSet.getInt("scoreTeam1"), resultSet.getInt("scoreTeam2")}); @@ -90,8 +90,8 @@ public class MatchDAO { match = new Match(); teamDAO = new TeamDAO(); match.setDivisionId(resultSet.getInt("divisionId")); - match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id")))); - match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id")))); + match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id"), match.getDivisionId()))); + match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id"), match.getDivisionId()))); match.getTeamOne().setTeamId(resultSet.getInt("team1Id")); match.getTeamTwo().setTeamId(resultSet.getInt("team2Id")); match.setScore(new int[] {resultSet.getInt("scoreTeam1"), resultSet.getInt("scoreTeam2")}); @@ -133,8 +133,8 @@ public class MatchDAO { resultSet = preparedStatement.executeQuery(); TeamDAO teamDAO = new TeamDAO(); match.setDivisionId(resultSet.getInt("divisionId")); - match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id")))); - match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id")))); + match.setTeamOne(new Team(teamDAO.getTeamById(resultSet.getInt("team1Id"), resultSet.getInt("divisionId")))); + match.setTeamTwo(new Team(teamDAO.getTeamById(resultSet.getInt("team2Id"), resultSet.getInt("divisionId")))); match.getTeamOne().setTeamId(resultSet.getInt("team1Id")); match.getTeamTwo().setTeamId(resultSet.getInt("team2Id")); match.setScore(new int[] {resultSet.getInt("scoreTeam1"), resultSet.getInt("scoreTeam2")}); @@ -205,8 +205,8 @@ public class MatchDAO { preparedStatement.setString(8, match.getEndTime().toString()); if (match.isFinished()) { TeamDAO teamDAO = new TeamDAO(); - teamDAO.updateCompeting(match.getTeamOne()); - teamDAO.updateCompeting(match.getTeamTwo()); + teamDAO.updateCompeting(match.getTeamOne(), match.getDivisionId()); + teamDAO.updateCompeting(match.getTeamTwo(), match.getDivisionId()); } preparedStatement.setString(9, match.getField()); preparedStatement.setBoolean(10, match.isFinished()); diff --git a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/TeamDAO.java b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/TeamDAO.java index c85cd45622676f4b5d9a6eb522002caeab961aa3..630e5d9e17f5e0971b75e0de258b9ac5b84290de 100644 --- a/src/main/java/edu/ntnu/idatt1002/k1g4/dao/TeamDAO.java +++ b/src/main/java/edu/ntnu/idatt1002/k1g4/dao/TeamDAO.java @@ -37,7 +37,6 @@ public class TeamDAO { team = new Team(); team.setTeamId(resultSet.getInt("teamId")); team.setName(resultSet.getString("teamName")); - team.setCompeting(resultSet.getBoolean("competing")); teams.add(team); } } catch (SQLException e) { @@ -59,7 +58,7 @@ public class TeamDAO { ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; - String sql = "SELECT * FROM teams, divisions, divisionsteamslink WHERE divisions.divisionId = divisionsteamslink.divisionId AND divisions.divisionId = ? AND teams.teamId = divisionsteamslink.teamId"; + String sql = "SELECT teams.teamId, teams.teamName, dtl.competing FROM divisions, teams, divisionsteamslink dtl WHERE divisions.divisionId = dtl.divisionId AND divisions.divisionId = ? AND teams.teamId = dtl.teamId"; try { connection = Database.instance().getConnection(); preparedStatement = connection.prepareStatement(sql); @@ -70,6 +69,7 @@ public class TeamDAO { team = new Team(); team.setTeamId(resultSet.getInt("teamId")); team.setName(resultSet.getString("teamName")); + System.out.println(resultSet.getBoolean("competing")); team.setCompeting(resultSet.getBoolean("competing")); teams.put(resultSet.getInt("teamId"), team); } @@ -88,9 +88,9 @@ public class TeamDAO { * @param name String: the team name * @return team Team: the team with the given name */ - public Team getTeamByName(String name) { + public Team getTeamByName(String name, int divisionId) { Team team = null; - String sql = "SELECT * FROM teams WHERE teamName=?"; + String sql = "SELECT teams.teamId, teams.teamName, dtl.competing FROM teams, divisionsteamslink dtl WHERE teams.teamName=? AND dtl.divisionId=? AND dtl.teamId=teams.teamId"; ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; @@ -98,6 +98,7 @@ public class TeamDAO { connection = Database.instance().getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, name); + preparedStatement.setInt(2, divisionId); resultSet = preparedStatement.executeQuery(); team = getTeamFromResultSet(resultSet); } catch (SQLException e) { @@ -115,9 +116,9 @@ public class TeamDAO { * @return team Team: the team with the corresponding id. * @throws SQLException the sql exception */ - public Team getTeamById(int teamId) { + public Team getTeamById(int teamId, int divisionId) { Team team = null; - String sql = "SELECT * FROM teams WHERE teamId=?"; + String sql = "SELECT teams.teamId, teams.teamName, dtl.competing FROM teams, divisionsteamslink dtl WHERE teams.teamId=? AND dtl.divisionId=? AND dtl.teamId=teams.teamId"; ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; @@ -125,7 +126,9 @@ public class TeamDAO { connection = Database.instance().getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, teamId); + preparedStatement.setInt(2, divisionId); resultSet = preparedStatement.executeQuery(); + System.out.println("Wtf bro " + resultSet.getBoolean("competing")); team = getTeamFromResultSet(resultSet); } catch (SQLException e) { e.printStackTrace(); @@ -148,6 +151,7 @@ public class TeamDAO { team = new Team(); team.setTeamId(resultSet.getInt("teamId")); team.setName(resultSet.getString("teamName")); + System.out.println(resultSet.getBoolean("competing")); team.setCompeting(resultSet.getBoolean("competing")); } } catch (SQLException e) { @@ -162,16 +166,18 @@ public class TeamDAO { * * @param team Team: the team to update. */ - public void updateCompeting(Team team) { - String sql = "UPDATE teams SET competing = ? WHERE teamId = ?"; + public void updateCompeting(Team team, int divisionId) { + String sql = "UPDATE divisionsteamslink SET competing = ? WHERE teamId = ? AND divisionId=?"; ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; try { connection = Database.instance().getConnection(); preparedStatement = connection.prepareStatement(sql); + System.out.println(team.isCompeting()); preparedStatement.setBoolean(1, team.isCompeting()); preparedStatement.setInt(2, team.getTeamId()); + preparedStatement.setInt(3, divisionId); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); @@ -187,8 +193,8 @@ public class TeamDAO { * @param team Team: the team to be added to the database. */ public void addTeam(Team team, int divisionId) throws IllegalArgumentException { - String sql = "INSERT INTO teams(teamName, competing) VALUES(?, ?)"; - Team teamFromDb = getTeamByName(team.getName()); + String sql = "INSERT INTO teams(teamName) VALUES(?)"; + Team teamFromDb = getTeamByName(team.getName(), 1); ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; @@ -197,7 +203,6 @@ public class TeamDAO { connection = Database.instance().getConnection(); preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, team.getName()); - preparedStatement.setBoolean(2, team.isCompeting()); preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println(e.getMessage()); @@ -234,7 +239,7 @@ public class TeamDAO { * @param divisionId int: the division id */ public void linkTeamToDivision(int teamId, int divisionId) { - String sql = "INSERT INTO divisionsteamslink(divisionId, teamId) VALUES (?, ?)"; + String sql = "INSERT INTO divisionsteamslink(divisionId, teamId, competing) VALUES (?, ?, ?)"; ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; @@ -243,6 +248,7 @@ public class TeamDAO { preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, divisionId); preparedStatement.setInt(2, teamId); + preparedStatement.setBoolean(3, true); preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println(e.getMessage()); @@ -256,24 +262,22 @@ public class TeamDAO { * * @param teamId int: the id of the team to delete */ - public void deleteTeam(int teamId) { - String sql = "DELETE FROM teams WHERE teamId = ?"; - String sqlTeamDivisionLink = "DELETE FROM divisionsteamslink WHERE teamId = ?"; - String sqlTeamMatch = "DELETE FROM matches WHERE team1Id = ? OR team2Id = ?"; + public void deleteTeam(int teamId, int divisionId) { + String sqlTeamDivisionLink = "DELETE FROM divisionsteamslink WHERE teamId = ? AND divisionId = ?"; + String sqlTeamMatch = "DELETE FROM matches WHERE team1Id = ? OR team2Id = ? AND divisionId = ?"; PreparedStatement preparedStatement = null; Connection connection = null; ResultSet resultSet = null; try { connection = Database.instance().getConnection(); - preparedStatement = connection.prepareStatement(sql); - preparedStatement.setInt(1, teamId); - preparedStatement.executeUpdate(); preparedStatement = connection.prepareStatement(sqlTeamDivisionLink); preparedStatement.setInt(1, teamId); + preparedStatement.setInt(2, divisionId); preparedStatement.executeUpdate(); preparedStatement = connection.prepareStatement(sqlTeamMatch); preparedStatement.setInt(1, teamId); preparedStatement.setInt(2, teamId); + preparedStatement.setInt(3, divisionId); preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println(e.getMessage()); diff --git a/src/test/java/edu/ntnu/idatt1002/k1g4/TeamDAOTest.java b/src/test/java/edu/ntnu/idatt1002/k1g4/TeamDAOTest.java index 24dffb29f9417c894395fcf67aecae26c7059935..8c201e02973272e6cbe5a57e32fb9491d830a899 100644 --- a/src/test/java/edu/ntnu/idatt1002/k1g4/TeamDAOTest.java +++ b/src/test/java/edu/ntnu/idatt1002/k1g4/TeamDAOTest.java @@ -39,7 +39,7 @@ public class TeamDAOTest { @Test public void testGetTeamByName() { - Team team = teamDAO.getTeamByName("Jims Warriors"); + Team team = teamDAO.getTeamByName("Jims Warriors", 1); assertEquals("Jims Warriors", team.getName()); }