diff --git a/Database-Storage/DB.mwb b/Database-Storage/DB.mwb
index bcde4d1..7b50a90 100644
Binary files a/Database-Storage/DB.mwb and b/Database-Storage/DB.mwb differ
diff --git a/Database-Storage/DB.mwb.bak b/Database-Storage/DB.mwb.bak
index 2f912df..f6391c6 100644
Binary files a/Database-Storage/DB.mwb.bak and b/Database-Storage/DB.mwb.bak differ
diff --git a/Database-Storage/pom.xml b/Database-Storage/pom.xml
index 56b2b39..fa9de21 100644
--- a/Database-Storage/pom.xml
+++ b/Database-Storage/pom.xml
@@ -9,7 +9,7 @@
com.github.javydreamercsw
Database-Storage
- Database
+ Tournament Manager Database
http://maven.apache.org
@@ -42,20 +42,17 @@
com.h2database
h2
- 1.4.198
- jar
+ 1.4.199
com.googlecode.flyway
flyway-core
2.3.1
- jar
javax.xml.bind
jaxb-api
2.3.1
- jar
org.hamcrest
@@ -63,6 +60,11 @@
1.3
test
+
+ javax.validation
+ validation-api
+ 2.0.1.Final
+
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Game.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Game.java
index 932be39..6ebe047 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Game.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Game.java
@@ -58,8 +58,6 @@ public class Game implements Serializable
private Integer id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "game")
private List formatList;
- @OneToMany(cascade = CascadeType.ALL, mappedBy = "game")
- private List recordList;
public Game()
{
@@ -119,17 +117,6 @@ public String toString()
return "com.github.javydreamercsw.database.storage.db.Game[ id=" + id + " ]";
}
- @XmlTransient
- public List getRecordList()
- {
- return recordList;
- }
-
- public void setRecordList(List recordList)
- {
- this.recordList = recordList;
- }
-
public String getName()
{
return name;
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/MatchEntry.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/MatchEntry.java
index 984bbad..0831d55 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/MatchEntry.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/MatchEntry.java
@@ -38,7 +38,7 @@
})
public class MatchEntry implements Serializable
{
- private static final long serialVersionUID = 3610712802330920081L;
+ private static final long serialVersionUID = -8541562626617426725L;
@EmbeddedId
protected MatchEntryPK matchEntryPK;
@Basic(optional = false)
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Player.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Player.java
index 586c848..92118c0 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Player.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Player.java
@@ -61,20 +61,9 @@ public class Player implements Serializable
})
@ManyToMany
private List teamList;
- @JoinTable(name = "player_has_record", joinColumns =
- {
- @JoinColumn(name = "player_id", referencedColumnName = "id")
- }, inverseJoinColumns =
- {
- @JoinColumn(name = "record_id", referencedColumnName = "id"),
- @JoinColumn(name = "record_game_id", referencedColumnName = "game_id")
- })
- @ManyToMany
- private List recordList;
public Player()
{
- recordList = new ArrayList<>();
teamList = new ArrayList<>();
}
@@ -115,17 +104,6 @@ public void setTeamList(List teamList)
this.teamList = teamList;
}
- @XmlTransient
- public List getRecordList()
- {
- return recordList;
- }
-
- public void setRecordList(List recordList)
- {
- this.recordList = recordList;
- }
-
@Override
public int hashCode()
{
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Record.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Record.java
index 9fab6b5..d4d2837 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Record.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Record.java
@@ -6,12 +6,13 @@
import javax.persistence.Basic;
import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@@ -25,40 +26,45 @@
@NamedQueries(
{
@NamedQuery(name = "Record.findAll", query = "SELECT r FROM Record r"),
- @NamedQuery(name = "Record.findById",
- query = "SELECT r FROM Record r WHERE r.recordPK.id = :id"),
@NamedQuery(name = "Record.findByWins",
query = "SELECT r FROM Record r WHERE r.wins = :wins"),
@NamedQuery(name = "Record.findByLoses",
- query = "SELECT r FROM Record r WHERE r.loses = :loses"),
+ query = "SELECT r FROM Record r WHERE r.losses = :losses"),
@NamedQuery(name = "Record.findByDraws",
query = "SELECT r FROM Record r WHERE r.draws = :draws"),
- @NamedQuery(name = "Record.findByGameId",
- query = "SELECT r FROM Record r WHERE r.recordPK.gameId = :gameId")
})
public class Record implements Serializable
{
- private static final long serialVersionUID = -893880954416960217L;
- @EmbeddedId
- protected RecordPK recordPK;
+ private static final long serialVersionUID = -587143815558105193L;
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Basic(optional = false)
+ @Column(name = "id")
+ private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "wins")
private int wins;
@Basic(optional = false)
@NotNull
- @Column(name = "loses")
- private int loses;
+ @Column(name = "losses")
+ private int losses;
@Basic(optional = false)
@NotNull
@Column(name = "draws")
private int draws;
- @ManyToMany(mappedBy = "recordList")
- private List playerList;
+ @JoinTable(name = "team_has_record", joinColumns =
+ {
+ @JoinColumn(name = "record_id", referencedColumnName = "id")
+ }, inverseJoinColumns =
+ {
+ @JoinColumn(name = "team_id", referencedColumnName = "id")
+ })
+ @ManyToMany
+ private List teamList;
@JoinTable(name = "tournament_has_team_has_record", joinColumns =
{
@JoinColumn(name = "record_id", referencedColumnName = "id"),
- @JoinColumn(name = "record_game_id", referencedColumnName = "game_id")
}, inverseJoinColumns =
{
@JoinColumn(name = "tournament_has_team_tournament_id",
@@ -68,77 +74,53 @@ public class Record implements Serializable
})
@ManyToMany
private List tournamentHasTeamList;
- @JoinColumn(name = "game_id", referencedColumnName = "id", insertable = false,
- updatable = false)
- @ManyToOne(optional = false)
- private Game game;
public Record()
{
this(0, 0, 0);
}
- public Record(int wins, int loses, int draws)
+ public Record(int wins, int losses, int draws)
{
this.wins = wins;
- this.loses = loses;
+ this.losses = losses;
this.draws = draws;
tournamentHasTeamList = new ArrayList<>();
- playerList = new ArrayList<>();
- }
-
- public Record(int gameId)
- {
- this.recordPK = new RecordPK(gameId);
+ teamList = new ArrayList<>();
}
- public RecordPK getRecordPK()
- {
- return recordPK;
- }
-
- public void setRecordPK(RecordPK recordPK)
+ @XmlTransient
+ public List getTournamentHasTeamList()
{
- this.recordPK = recordPK;
+ return tournamentHasTeamList;
}
-
- public Game getGame()
+ public void setTournamentHasTeamList(List tournamentHasTeamList)
{
- return game;
+ this.tournamentHasTeamList = tournamentHasTeamList;
}
- public void setGame(Game game)
+ public Record(Integer id)
{
- this.game = game;
+ this.id = id;
}
- @Override
- public int hashCode()
+ public Record(Integer id, int wins, int losses, int draws)
{
- int hash = 0;
- hash += (recordPK != null ? recordPK.hashCode() : 0);
- return hash;
+ this.id = id;
+ this.wins = wins;
+ this.losses = losses;
+ this.draws = draws;
}
- @Override
- public boolean equals(Object object)
+ public Integer getId()
{
- // TODO: Warning - this method won't work in the case the id fields are not set
- if (!(object instanceof Record))
- {
- return false;
- }
- Record other = (Record) object;
- return !((this.recordPK == null && other.recordPK != null)
- || (this.recordPK != null && !this.recordPK.equals(other.recordPK)));
+ return id;
}
- @Override
- public String toString()
+ public void setId(Integer id)
{
- return "com.github.javydreamercsw.database.storage.db.Record[ recordPK="
- + recordPK + " ]";
+ this.id = id;
}
public int getWins()
@@ -151,14 +133,14 @@ public void setWins(int wins)
this.wins = wins;
}
- public int getLoses()
+ public int getLosses()
{
- return loses;
+ return losses;
}
- public void setLoses(int loses)
+ public void setLosses(int losses)
{
- this.loses = loses;
+ this.losses = losses;
}
public int getDraws()
@@ -172,25 +154,40 @@ public void setDraws(int draws)
}
@XmlTransient
- public List getPlayerList()
+ public List getTeamList()
{
- return playerList;
+ return teamList;
}
- public void setPlayerList(List playerList)
+ public void setTeamList(List teamList)
{
- this.playerList = playerList;
+ this.teamList = teamList;
}
- @XmlTransient
- public List getTournamentHasTeamList()
+ @Override
+ public int hashCode()
{
- return tournamentHasTeamList;
+ int hash = 0;
+ hash += (id != null ? id.hashCode() : 0);
+ return hash;
}
- public void setTournamentHasTeamList(List tournamentHasTeamList)
+ @Override
+ public boolean equals(Object object)
{
- this.tournamentHasTeamList = tournamentHasTeamList;
+ // TODO: Warning - this method won't work in the case the id fields are not set
+ if (!(object instanceof Record))
+ {
+ return false;
+ }
+ Record other = (Record) object;
+ return !((this.id == null && other.id != null) || (this.id != null
+ && !this.id.equals(other.id)));
+ }
+
+ @Override
+ public String toString()
+ {
+ return "com.github.javydreamercsw.database.storage.db.Record[ id=" + id + " ]";
}
-
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/RecordPK.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/RecordPK.java
deleted file mode 100644
index a23d531..0000000
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/RecordPK.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.github.javydreamercsw.database.storage.db;
-
-import java.io.Serializable;
-
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.TableGenerator;
-import javax.validation.constraints.NotNull;
-
-@Embeddable
-public class RecordPK implements Serializable
-{
- private static final long serialVersionUID = 2778418123591111690L;
- @Basic(optional = false)
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "RecordGen")
- @TableGenerator(name = "RecordGen", table = "tm_id",
- pkColumnName = "table_name",
- valueColumnName = "last_id",
- pkColumnValue = "record",
- allocationSize = 1,
- initialValue = 1)
- @Column(name = "id")
- private int id;
- @Basic(optional = false)
- @NotNull
- @Column(name = "game_id")
- private int gameId;
-
- public RecordPK()
- {
- }
-
- public RecordPK(int gameId)
- {
- this.gameId = gameId;
- }
-
- public int getId()
- {
- return id;
- }
-
- public void setId(int id)
- {
- this.id = id;
- }
-
- public int getGameId()
- {
- return gameId;
- }
-
- public void setGameId(int gameId)
- {
- this.gameId = gameId;
- }
-
- @Override
- public int hashCode()
- {
- int hash = 0;
- hash += (int) id;
- hash += (int) gameId;
- return hash;
- }
-
- @Override
- public boolean equals(Object object)
- {
- // TODO: Warning - this method won't work in the case the id fields are not set
- if (!(object instanceof RecordPK))
- {
- return false;
- }
- RecordPK other = (RecordPK) object;
- if (this.id != other.id)
- {
- return false;
- }
- return this.gameId == other.gameId;
- }
-
- @Override
- public String toString()
- {
- return "com.github.javydreamercsw.database.storage.db.RecordPK[ id=" + id
- + ", gameId=" + gameId + " ]";
- }
-}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Team.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Team.java
index b85de55..cb52398 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Team.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Team.java
@@ -37,6 +37,8 @@ public class Team implements Serializable
@Size(max = 245)
@Column(name = "name")
private String name;
+ @ManyToMany(mappedBy = "teamList")
+ private List recordList;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "team")
private List teamHasFormatRecordList;
private static final long serialVersionUID = 1L;
@@ -153,6 +155,18 @@ public void setTeamHasFormatRecordList(List teamHasFormatRe
this.teamHasFormatRecordList = teamHasFormatRecordList;
}
+
+ @XmlTransient
+ public List getRecordList()
+ {
+ return recordList;
+ }
+
+ public void setRecordList(List recordList)
+ {
+ this.recordList = recordList;
+ }
+
public String getName()
{
return name;
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/TeamHasFormatRecord.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/TeamHasFormatRecord.java
index ac9dd03..b51600c 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/TeamHasFormatRecord.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/TeamHasFormatRecord.java
@@ -35,7 +35,7 @@
})
public class TeamHasFormatRecord implements Serializable
{
- private static final long serialVersionUID = 1517758449111184848L;
+ private static final long serialVersionUID = 8671933829541518266L;
@Basic(optional = false)
@NotNull
@Column(name = "mean")
@@ -48,6 +48,18 @@ public class TeamHasFormatRecord implements Serializable
@NotNull
@Column(name = "points")
private int points;
+ @Basic(optional = false)
+ @NotNull
+ @Column(name = "wins")
+ private int wins;
+ @Basic(optional = false)
+ @NotNull
+ @Column(name = "losses")
+ private int losses;
+ @Basic(optional = false)
+ @NotNull
+ @Column(name = "draws")
+ private int draws;
@EmbeddedId
protected TeamHasFormatRecordPK teamHasFormatRecordPK;
@JoinColumns(
@@ -142,8 +154,9 @@ public boolean equals(Object object)
@Override
public String toString()
{
- return "Points: " + getPoints() + "\nMean: " + getMean() + "\nSD: "
- + getStandardDeviation();
+ return (getTeam() == null ? "" : "Team: " + getTeam().getName())
+ + "\nPoints: " + getPoints() + "\nMean: " + getMean()
+ + "\nSD: " + getStandardDeviation();
}
public double getMean()
@@ -175,4 +188,34 @@ public void setPoints(int points)
{
this.points = points;
}
+
+ public int getWins()
+ {
+ return wins;
+ }
+
+ public void setWins(int wins)
+ {
+ this.wins = wins;
+ }
+
+ public int getLosses()
+ {
+ return losses;
+ }
+
+ public void setLosses(int losses)
+ {
+ this.losses = losses;
+ }
+
+ public int getDraws()
+ {
+ return draws;
+ }
+
+ public void setDraws(int draws)
+ {
+ this.draws = draws;
+ }
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Tournament.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Tournament.java
index 9c5cc97..575b153 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Tournament.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/Tournament.java
@@ -64,15 +64,15 @@ public class Tournament implements Serializable
@Basic(optional = false)
@NotNull
@Column(name = "winPoints")
- private int winPoints;
+ private double winPoints;
@Basic(optional = false)
@NotNull
@Column(name = "drawPoints")
- private int drawPoints;
+ private double drawPoints;
@Basic(optional = false)
@NotNull
@Column(name = "lossPoints")
- private int lossPoints;
+ private double lossPoints;
@Basic(optional = false)
@NotNull
@Column(name = "startDate")
@@ -291,32 +291,32 @@ public void setName(String name)
this.name = name;
}
- public int getWinPoints()
+ public double getWinPoints()
{
return winPoints;
}
- public void setWinPoints(int winPoints)
+ public void setWinPoints(double winPoints)
{
this.winPoints = winPoints;
}
- public int getDrawPoints()
+ public double getDrawPoints()
{
return drawPoints;
}
- public void setDrawPoints(int drawPoints)
+ public void setDrawPoints(double drawPoints)
{
this.drawPoints = drawPoints;
}
- public int getLossPoints()
+ public double getLossPoints()
{
return lossPoints;
}
- public void setLossPoints(int lossPoints)
+ public void setLossPoints(double lossPoints)
{
this.lossPoints = lossPoints;
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/GameJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/GameJpaController.java
index 49d8620..4ef8e3f 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/GameJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/GameJpaController.java
@@ -13,7 +13,6 @@
import com.github.javydreamercsw.database.storage.db.Format;
import com.github.javydreamercsw.database.storage.db.Game;
-import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.IllegalOrphanException;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.NonexistentEntityException;
import com.github.javydreamercsw.database.storage.db.server.AbstractController;
@@ -32,10 +31,6 @@ public void create(Game game)
{
game.setFormatList(new ArrayList<>());
}
- if (game.getRecordList() == null)
- {
- game.setRecordList(new ArrayList<>());
- }
EntityManager em = null;
try
{
@@ -48,13 +43,6 @@ public void create(Game game)
attachedFormatList.add(formatListFormatToAttach);
}
game.setFormatList(attachedFormatList);
- List attachedRecordList = new ArrayList<>();
- for (Record recordListRecordToAttach : game.getRecordList())
- {
- recordListRecordToAttach = em.getReference(recordListRecordToAttach.getClass(), recordListRecordToAttach.getRecordPK());
- attachedRecordList.add(recordListRecordToAttach);
- }
- game.setRecordList(attachedRecordList);
em.persist(game);
for (Format formatListFormat : game.getFormatList())
{
@@ -67,17 +55,6 @@ public void create(Game game)
oldGameOfFormatListFormat = em.merge(oldGameOfFormatListFormat);
}
}
- for (Record recordListRecord : game.getRecordList())
- {
- Game oldGameOfRecordListRecord = recordListRecord.getGame();
- recordListRecord.setGame(game);
- recordListRecord = em.merge(recordListRecord);
- if (oldGameOfRecordListRecord != null)
- {
- oldGameOfRecordListRecord.getRecordList().remove(recordListRecord);
- oldGameOfRecordListRecord = em.merge(oldGameOfRecordListRecord);
- }
- }
em.getTransaction().commit();
}
finally
@@ -99,8 +76,6 @@ public void edit(Game game) throws IllegalOrphanException, NonexistentEntityExce
Game persistentGame = em.find(Game.class, game.getId());
List formatListOld = persistentGame.getFormatList();
List formatListNew = game.getFormatList();
- List recordListOld = persistentGame.getRecordList();
- List recordListNew = game.getRecordList();
List illegalOrphanMessages = null;
for (Format formatListOldFormat : formatListOld)
{
@@ -113,17 +88,6 @@ public void edit(Game game) throws IllegalOrphanException, NonexistentEntityExce
illegalOrphanMessages.add("You must retain Format " + formatListOldFormat + " since its game field is not nullable.");
}
}
- for (Record recordListOldRecord : recordListOld)
- {
- if (!recordListNew.contains(recordListOldRecord))
- {
- if (illegalOrphanMessages == null)
- {
- illegalOrphanMessages = new ArrayList<>();
- }
- illegalOrphanMessages.add("You must retain Record " + recordListOldRecord + " since its game field is not nullable.");
- }
- }
if (illegalOrphanMessages != null)
{
throw new IllegalOrphanException(illegalOrphanMessages);
@@ -136,14 +100,6 @@ public void edit(Game game) throws IllegalOrphanException, NonexistentEntityExce
}
formatListNew = attachedFormatListNew;
game.setFormatList(formatListNew);
- List attachedRecordListNew = new ArrayList<>();
- for (Record recordListNewRecordToAttach : recordListNew)
- {
- recordListNewRecordToAttach = em.getReference(recordListNewRecordToAttach.getClass(), recordListNewRecordToAttach.getRecordPK());
- attachedRecordListNew.add(recordListNewRecordToAttach);
- }
- recordListNew = attachedRecordListNew;
- game.setRecordList(recordListNew);
game = em.merge(game);
for (Format formatListNewFormat : formatListNew)
{
@@ -159,20 +115,6 @@ public void edit(Game game) throws IllegalOrphanException, NonexistentEntityExce
}
}
}
- for (Record recordListNewRecord : recordListNew)
- {
- if (!recordListOld.contains(recordListNewRecord))
- {
- Game oldGameOfRecordListNewRecord = recordListNewRecord.getGame();
- recordListNewRecord.setGame(game);
- recordListNewRecord = em.merge(recordListNewRecord);
- if (oldGameOfRecordListNewRecord != null && !oldGameOfRecordListNewRecord.equals(game))
- {
- oldGameOfRecordListNewRecord.getRecordList().remove(recordListNewRecord);
- oldGameOfRecordListNewRecord = em.merge(oldGameOfRecordListNewRecord);
- }
- }
- }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -224,15 +166,6 @@ public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntity
}
illegalOrphanMessages.add("This Game (" + game + ") cannot be destroyed since the Format " + formatListOrphanCheckFormat + " in its formatList field has a non-nullable game field.");
}
- List recordListOrphanCheck = game.getRecordList();
- for (Record recordListOrphanCheckRecord : recordListOrphanCheck)
- {
- if (illegalOrphanMessages == null)
- {
- illegalOrphanMessages = new ArrayList<>();
- }
- illegalOrphanMessages.add("This Game (" + game + ") cannot be destroyed since the Record " + recordListOrphanCheckRecord + " in its recordList field has a non-nullable game field.");
- }
if (illegalOrphanMessages != null)
{
throw new IllegalOrphanException(illegalOrphanMessages);
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchEntryJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchEntryJpaController.java
index e5e4177..182d761 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchEntryJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchEntryJpaController.java
@@ -40,8 +40,8 @@ public void create(MatchEntry matchEntry) throws PreexistingEntityException, Exc
{
matchEntry.setMatchHasTeamList(new ArrayList<>());
}
- matchEntry.getMatchEntryPK().setFormatGameId(matchEntry.getFormat().getFormatPK().getGameId());
matchEntry.getMatchEntryPK().setFormatId(matchEntry.getFormat().getFormatPK().getId());
+ matchEntry.getMatchEntryPK().setFormatGameId(matchEntry.getFormat().getFormatPK().getGameId());
EntityManager em = null;
try
{
@@ -62,9 +62,7 @@ public void create(MatchEntry matchEntry) throws PreexistingEntityException, Exc
List attachedMatchHasTeamList = new ArrayList<>();
for (MatchHasTeam matchHasTeamListMatchHasTeamToAttach : matchEntry.getMatchHasTeamList())
{
- matchHasTeamListMatchHasTeamToAttach =
- em.getReference(matchHasTeamListMatchHasTeamToAttach.getClass(),
- matchHasTeamListMatchHasTeamToAttach.getMatchHasTeamPK());
+ matchHasTeamListMatchHasTeamToAttach = em.getReference(matchHasTeamListMatchHasTeamToAttach.getClass(), matchHasTeamListMatchHasTeamToAttach.getMatchHasTeamPK());
attachedMatchHasTeamList.add(matchHasTeamListMatchHasTeamToAttach);
}
matchEntry.setMatchHasTeamList(attachedMatchHasTeamList);
@@ -111,8 +109,8 @@ public void create(MatchEntry matchEntry) throws PreexistingEntityException, Exc
public void edit(MatchEntry matchEntry) throws IllegalOrphanException, NonexistentEntityException, Exception
{
- matchEntry.getMatchEntryPK().setFormatGameId(matchEntry.getFormat().getFormatPK().getGameId());
matchEntry.getMatchEntryPK().setFormatId(matchEntry.getFormat().getFormatPK().getId());
+ matchEntry.getMatchEntryPK().setFormatGameId(matchEntry.getFormat().getFormatPK().getGameId());
EntityManager em = null;
try
{
@@ -333,5 +331,5 @@ public int getMatchEntryCount()
em.close();
}
}
-
+
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchHasTeamJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchHasTeamJpaController.java
index 48e834e..3d150c5 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchHasTeamJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchHasTeamJpaController.java
@@ -22,7 +22,7 @@
public class MatchHasTeamJpaController extends AbstractController implements Serializable
{
private static final long serialVersionUID = -2927053439134199404L;
-
+
public MatchHasTeamJpaController(EntityManagerFactory emf)
{
super(emf);
@@ -291,5 +291,5 @@ public int getMatchHasTeamCount()
em.close();
}
}
-
+
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchResultJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchResultJpaController.java
index a94e659..3b14f7d 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchResultJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/MatchResultJpaController.java
@@ -22,7 +22,7 @@
public class MatchResultJpaController extends AbstractController implements Serializable
{
private static final long serialVersionUID = -4857066805022202452L;
-
+
public MatchResultJpaController(EntityManagerFactory emf)
{
super(emf);
@@ -277,5 +277,5 @@ public int getMatchResultCount()
em.close();
}
}
-
+
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/PlayerJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/PlayerJpaController.java
index 3980bbd..b9276ab 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/PlayerJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/PlayerJpaController.java
@@ -12,7 +12,6 @@
import javax.persistence.criteria.Root;
import com.github.javydreamercsw.database.storage.db.Player;
-import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.NonexistentEntityException;
import com.github.javydreamercsw.database.storage.db.server.AbstractController;
@@ -30,42 +29,26 @@ public void create(Player player)
{
if (player.getTeamList() == null)
{
- player.setTeamList(new ArrayList());
- }
- if (player.getRecordList() == null)
- {
- player.setRecordList(new ArrayList());
+ player.setTeamList(new ArrayList<>());
}
EntityManager em = null;
try
{
em = getEntityManager();
em.getTransaction().begin();
- List attachedTeamList = new ArrayList();
+ List attachedTeamList = new ArrayList<>();
for (Team teamListTeamToAttach : player.getTeamList())
{
teamListTeamToAttach = em.getReference(teamListTeamToAttach.getClass(), teamListTeamToAttach.getId());
attachedTeamList.add(teamListTeamToAttach);
}
player.setTeamList(attachedTeamList);
- List attachedRecordList = new ArrayList();
- for (Record recordListRecordToAttach : player.getRecordList())
- {
- recordListRecordToAttach = em.getReference(recordListRecordToAttach.getClass(), recordListRecordToAttach.getRecordPK());
- attachedRecordList.add(recordListRecordToAttach);
- }
- player.setRecordList(attachedRecordList);
em.persist(player);
for (Team teamListTeam : player.getTeamList())
{
teamListTeam.getPlayerList().add(player);
teamListTeam = em.merge(teamListTeam);
}
- for (Record recordListRecord : player.getRecordList())
- {
- recordListRecord.getPlayerList().add(player);
- recordListRecord = em.merge(recordListRecord);
- }
em.getTransaction().commit();
}
finally
@@ -87,9 +70,7 @@ public void edit(Player player) throws NonexistentEntityException, Exception
Player persistentPlayer = em.find(Player.class, player.getId());
List teamListOld = persistentPlayer.getTeamList();
List teamListNew = player.getTeamList();
- List recordListOld = persistentPlayer.getRecordList();
- List recordListNew = player.getRecordList();
- List attachedTeamListNew = new ArrayList();
+ List attachedTeamListNew = new ArrayList<>();
for (Team teamListNewTeamToAttach : teamListNew)
{
teamListNewTeamToAttach = em.getReference(teamListNewTeamToAttach.getClass(), teamListNewTeamToAttach.getId());
@@ -97,14 +78,6 @@ public void edit(Player player) throws NonexistentEntityException, Exception
}
teamListNew = attachedTeamListNew;
player.setTeamList(teamListNew);
- List attachedRecordListNew = new ArrayList();
- for (Record recordListNewRecordToAttach : recordListNew)
- {
- recordListNewRecordToAttach = em.getReference(recordListNewRecordToAttach.getClass(), recordListNewRecordToAttach.getRecordPK());
- attachedRecordListNew.add(recordListNewRecordToAttach);
- }
- recordListNew = attachedRecordListNew;
- player.setRecordList(recordListNew);
player = em.merge(player);
for (Team teamListOldTeam : teamListOld)
{
@@ -122,22 +95,6 @@ public void edit(Player player) throws NonexistentEntityException, Exception
teamListNewTeam = em.merge(teamListNewTeam);
}
}
- for (Record recordListOldRecord : recordListOld)
- {
- if (!recordListNew.contains(recordListOldRecord))
- {
- recordListOldRecord.getPlayerList().remove(player);
- recordListOldRecord = em.merge(recordListOldRecord);
- }
- }
- for (Record recordListNewRecord : recordListNew)
- {
- if (!recordListOld.contains(recordListNewRecord))
- {
- recordListNewRecord.getPlayerList().add(player);
- recordListNewRecord = em.merge(recordListNewRecord);
- }
- }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -185,12 +142,6 @@ public void destroy(Integer id) throws NonexistentEntityException
teamListTeam.getPlayerList().remove(player);
teamListTeam = em.merge(teamListTeam);
}
- List recordList = player.getRecordList();
- for (Record recordListRecord : recordList)
- {
- recordListRecord.getPlayerList().remove(player);
- recordListRecord = em.merge(recordListRecord);
- }
em.remove(player);
em.getTransaction().commit();
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RecordJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RecordJpaController.java
index e5edf44..48ea7db 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RecordJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RecordJpaController.java
@@ -1,8 +1,3 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
package com.github.javydreamercsw.database.storage.db.controller;
import java.io.Serializable;
@@ -16,65 +11,36 @@
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
-import com.github.javydreamercsw.database.storage.db.Game;
-import com.github.javydreamercsw.database.storage.db.Player;
import com.github.javydreamercsw.database.storage.db.Record;
-import com.github.javydreamercsw.database.storage.db.RecordPK;
+import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.TournamentHasTeam;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.NonexistentEntityException;
-import com.github.javydreamercsw.database.storage.db.controller.exceptions.PreexistingEntityException;
+import com.github.javydreamercsw.database.storage.db.server.AbstractController;
-/**
- *
- * @author Javier Ortiz Bultron
- */
-public class RecordJpaController implements Serializable
+public class RecordJpaController extends AbstractController implements Serializable
{
- private static final long serialVersionUID = 7601923040598485026L;
+ private static final long serialVersionUID = -5982649688889824490L;
+
public RecordJpaController(EntityManagerFactory emf)
{
- this.emf = emf;
- }
- private EntityManagerFactory emf = null;
-
- public EntityManager getEntityManager()
- {
- return emf.createEntityManager();
+ super(emf);
}
- public void create(Record record) throws PreexistingEntityException, Exception
+ public void create(Record record)
{
- if (record.getRecordPK() == null)
- {
- record.setRecordPK(new RecordPK());
- }
- if (record.getPlayerList() == null)
- {
- record.setPlayerList(new ArrayList<>());
- }
if (record.getTournamentHasTeamList() == null)
{
record.setTournamentHasTeamList(new ArrayList<>());
}
- record.getRecordPK().setGameId(record.getGame().getId());
+ if (record.getTeamList() == null)
+ {
+ record.setTeamList(new ArrayList<>());
+ }
EntityManager em = null;
try
{
em = getEntityManager();
em.getTransaction().begin();
- Game game = record.getGame();
- if (game != null)
- {
- game = em.getReference(game.getClass(), game.getId());
- record.setGame(game);
- }
- List attachedPlayerList = new ArrayList<>();
- for (Player playerListPlayerToAttach : record.getPlayerList())
- {
- playerListPlayerToAttach = em.getReference(playerListPlayerToAttach.getClass(), playerListPlayerToAttach.getId());
- attachedPlayerList.add(playerListPlayerToAttach);
- }
- record.setPlayerList(attachedPlayerList);
List attachedTournamentHasTeamList = new ArrayList<>();
for (TournamentHasTeam tournamentHasTeamListTournamentHasTeamToAttach : record.getTournamentHasTeamList())
{
@@ -82,31 +48,25 @@ public void create(Record record) throws PreexistingEntityException, Exception
attachedTournamentHasTeamList.add(tournamentHasTeamListTournamentHasTeamToAttach);
}
record.setTournamentHasTeamList(attachedTournamentHasTeamList);
- em.persist(record);
- if (game != null)
- {
- game.getRecordList().add(record);
- game = em.merge(game);
- }
- for (Player playerListPlayer : record.getPlayerList())
+ List attachedTeamList = new ArrayList<>();
+ for (Team teamListTeamToAttach : record.getTeamList())
{
- playerListPlayer.getRecordList().add(record);
- playerListPlayer = em.merge(playerListPlayer);
+ teamListTeamToAttach = em.getReference(teamListTeamToAttach.getClass(), teamListTeamToAttach.getId());
+ attachedTeamList.add(teamListTeamToAttach);
}
+ record.setTeamList(attachedTeamList);
+ em.persist(record);
for (TournamentHasTeam tournamentHasTeamListTournamentHasTeam : record.getTournamentHasTeamList())
{
tournamentHasTeamListTournamentHasTeam.getRecordList().add(record);
tournamentHasTeamListTournamentHasTeam = em.merge(tournamentHasTeamListTournamentHasTeam);
}
- em.getTransaction().commit();
- }
- catch (Exception ex)
- {
- if (findRecord(record.getRecordPK()) != null)
+ for (Team teamListTeam : record.getTeamList())
{
- throw new PreexistingEntityException("Record " + record + " already exists.", ex);
+ teamListTeam.getRecordList().add(record);
+ teamListTeam = em.merge(teamListTeam);
}
- throw ex;
+ em.getTransaction().commit();
}
finally
{
@@ -119,32 +79,16 @@ public void create(Record record) throws PreexistingEntityException, Exception
public void edit(Record record) throws NonexistentEntityException, Exception
{
- record.getRecordPK().setGameId(record.getGame().getId());
EntityManager em = null;
try
{
em = getEntityManager();
em.getTransaction().begin();
- Record persistentRecord = em.find(Record.class, record.getRecordPK());
- Game gameOld = persistentRecord.getGame();
- Game gameNew = record.getGame();
- List playerListOld = persistentRecord.getPlayerList();
- List playerListNew = record.getPlayerList();
+ Record persistentRecord = em.find(Record.class, record.getId());
List tournamentHasTeamListOld = persistentRecord.getTournamentHasTeamList();
List tournamentHasTeamListNew = record.getTournamentHasTeamList();
- if (gameNew != null)
- {
- gameNew = em.getReference(gameNew.getClass(), gameNew.getId());
- record.setGame(gameNew);
- }
- List attachedPlayerListNew = new ArrayList<>();
- for (Player playerListNewPlayerToAttach : playerListNew)
- {
- playerListNewPlayerToAttach = em.getReference(playerListNewPlayerToAttach.getClass(), playerListNewPlayerToAttach.getId());
- attachedPlayerListNew.add(playerListNewPlayerToAttach);
- }
- playerListNew = attachedPlayerListNew;
- record.setPlayerList(playerListNew);
+ List teamListOld = persistentRecord.getTeamList();
+ List teamListNew = record.getTeamList();
List attachedTournamentHasTeamListNew = new ArrayList<>();
for (TournamentHasTeam tournamentHasTeamListNewTournamentHasTeamToAttach : tournamentHasTeamListNew)
{
@@ -153,33 +97,15 @@ public void edit(Record record) throws NonexistentEntityException, Exception
}
tournamentHasTeamListNew = attachedTournamentHasTeamListNew;
record.setTournamentHasTeamList(tournamentHasTeamListNew);
- record = em.merge(record);
- if (gameOld != null && !gameOld.equals(gameNew))
- {
- gameOld.getRecordList().remove(record);
- gameOld = em.merge(gameOld);
- }
- if (gameNew != null && !gameNew.equals(gameOld))
- {
- gameNew.getRecordList().add(record);
- gameNew = em.merge(gameNew);
- }
- for (Player playerListOldPlayer : playerListOld)
- {
- if (!playerListNew.contains(playerListOldPlayer))
- {
- playerListOldPlayer.getRecordList().remove(record);
- playerListOldPlayer = em.merge(playerListOldPlayer);
- }
- }
- for (Player playerListNewPlayer : playerListNew)
+ List attachedTeamListNew = new ArrayList<>();
+ for (Team teamListNewTeamToAttach : teamListNew)
{
- if (!playerListOld.contains(playerListNewPlayer))
- {
- playerListNewPlayer.getRecordList().add(record);
- playerListNewPlayer = em.merge(playerListNewPlayer);
- }
+ teamListNewTeamToAttach = em.getReference(teamListNewTeamToAttach.getClass(), teamListNewTeamToAttach.getId());
+ attachedTeamListNew.add(teamListNewTeamToAttach);
}
+ teamListNew = attachedTeamListNew;
+ record.setTeamList(teamListNew);
+ record = em.merge(record);
for (TournamentHasTeam tournamentHasTeamListOldTournamentHasTeam : tournamentHasTeamListOld)
{
if (!tournamentHasTeamListNew.contains(tournamentHasTeamListOldTournamentHasTeam))
@@ -196,6 +122,22 @@ record = em.merge(record);
tournamentHasTeamListNewTournamentHasTeam = em.merge(tournamentHasTeamListNewTournamentHasTeam);
}
}
+ for (Team teamListOldTeam : teamListOld)
+ {
+ if (!teamListNew.contains(teamListOldTeam))
+ {
+ teamListOldTeam.getRecordList().remove(record);
+ teamListOldTeam = em.merge(teamListOldTeam);
+ }
+ }
+ for (Team teamListNewTeam : teamListNew)
+ {
+ if (!teamListOld.contains(teamListNewTeam))
+ {
+ teamListNewTeam.getRecordList().add(record);
+ teamListNewTeam = em.merge(teamListNewTeam);
+ }
+ }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -203,7 +145,7 @@ record = em.merge(record);
String msg = ex.getLocalizedMessage();
if (msg == null || msg.length() == 0)
{
- RecordPK id = record.getRecordPK();
+ Integer id = record.getId();
if (findRecord(id) == null)
{
throw new NonexistentEntityException("The record with id " + id + " no longer exists.");
@@ -220,7 +162,7 @@ record = em.merge(record);
}
}
- public void destroy(RecordPK id) throws NonexistentEntityException
+ public void destroy(Integer id) throws NonexistentEntityException
{
EntityManager em = null;
try
@@ -231,30 +173,24 @@ public void destroy(RecordPK id) throws NonexistentEntityException
try
{
record = em.getReference(Record.class, id);
- record.getRecordPK();
+ record.getId();
}
catch (EntityNotFoundException enfe)
{
throw new NonexistentEntityException("The record with id " + id + " no longer exists.", enfe);
}
- Game game = record.getGame();
- if (game != null)
- {
- game.getRecordList().remove(record);
- game = em.merge(game);
- }
- List playerList = record.getPlayerList();
- for (Player playerListPlayer : playerList)
- {
- playerListPlayer.getRecordList().remove(record);
- playerListPlayer = em.merge(playerListPlayer);
- }
List tournamentHasTeamList = record.getTournamentHasTeamList();
for (TournamentHasTeam tournamentHasTeamListTournamentHasTeam : tournamentHasTeamList)
{
tournamentHasTeamListTournamentHasTeam.getRecordList().remove(record);
tournamentHasTeamListTournamentHasTeam = em.merge(tournamentHasTeamListTournamentHasTeam);
}
+ List teamList = record.getTeamList();
+ for (Team teamListTeam : teamList)
+ {
+ teamListTeam.getRecordList().remove(record);
+ teamListTeam = em.merge(teamListTeam);
+ }
em.remove(record);
em.getTransaction().commit();
}
@@ -298,7 +234,7 @@ private List findRecordEntities(boolean all, int maxResults, int firstRe
}
}
- public Record findRecord(RecordPK id)
+ public Record findRecord(Integer id)
{
EntityManager em = getEntityManager();
try
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RoundJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RoundJpaController.java
index 0b3ba9c..bc4d1e3 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RoundJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/RoundJpaController.java
@@ -23,7 +23,7 @@
public class RoundJpaController extends AbstractController implements Serializable
{
private static final long serialVersionUID = -6387501653143947641L;
-
+
public RoundJpaController(EntityManagerFactory emf)
{
super(emf);
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TeamJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TeamJpaController.java
index 8b54a5d..798e3f6 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TeamJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TeamJpaController.java
@@ -13,6 +13,7 @@
import com.github.javydreamercsw.database.storage.db.MatchHasTeam;
import com.github.javydreamercsw.database.storage.db.Player;
+import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
import com.github.javydreamercsw.database.storage.db.TournamentHasTeam;
@@ -23,7 +24,7 @@
public class TeamJpaController extends AbstractController implements Serializable
{
private static final long serialVersionUID = -948309699404935164L;
-
+
public TeamJpaController(EntityManagerFactory emf)
{
super(emf);
@@ -47,6 +48,10 @@ public void create(Team team)
{
team.setTeamHasFormatRecordList(new ArrayList<>());
}
+ if (team.getRecordList() == null)
+ {
+ team.setRecordList(new ArrayList<>());
+ }
EntityManager em = null;
try
{
@@ -80,6 +85,13 @@ public void create(Team team)
attachedTeamHasFormatRecordList.add(teamHasFormatRecordListTeamHasFormatRecordToAttach);
}
team.setTeamHasFormatRecordList(attachedTeamHasFormatRecordList);
+ List attachedRecordList = new ArrayList<>();
+ for (Record recordListRecordToAttach : team.getRecordList())
+ {
+ recordListRecordToAttach = em.getReference(recordListRecordToAttach.getClass(), recordListRecordToAttach.getId());
+ attachedRecordList.add(recordListRecordToAttach);
+ }
+ team.setRecordList(attachedRecordList);
em.persist(team);
for (Player playerListPlayer : team.getPlayerList())
{
@@ -119,6 +131,11 @@ public void create(Team team)
oldTeamOfTeamHasFormatRecordListTeamHasFormatRecord = em.merge(oldTeamOfTeamHasFormatRecordListTeamHasFormatRecord);
}
}
+ for (Record recordListRecord : team.getRecordList())
+ {
+ recordListRecord.getTeamList().add(team);
+ recordListRecord = em.merge(recordListRecord);
+ }
em.getTransaction().commit();
}
finally
@@ -146,6 +163,8 @@ public void edit(Team team) throws IllegalOrphanException, NonexistentEntityExce
List tournamentHasTeamListNew = team.getTournamentHasTeamList();
List teamHasFormatRecordListOld = persistentTeam.getTeamHasFormatRecordList();
List teamHasFormatRecordListNew = team.getTeamHasFormatRecordList();
+ List recordListOld = persistentTeam.getRecordList();
+ List recordListNew = team.getRecordList();
List illegalOrphanMessages = null;
for (MatchHasTeam matchHasTeamListOldMatchHasTeam : matchHasTeamListOld)
{
@@ -216,6 +235,14 @@ public void edit(Team team) throws IllegalOrphanException, NonexistentEntityExce
}
teamHasFormatRecordListNew = attachedTeamHasFormatRecordListNew;
team.setTeamHasFormatRecordList(teamHasFormatRecordListNew);
+ List attachedRecordListNew = new ArrayList<>();
+ for (Record recordListNewRecordToAttach : recordListNew)
+ {
+ recordListNewRecordToAttach = em.getReference(recordListNewRecordToAttach.getClass(), recordListNewRecordToAttach.getId());
+ attachedRecordListNew.add(recordListNewRecordToAttach);
+ }
+ recordListNew = attachedRecordListNew;
+ team.setRecordList(recordListNew);
team = em.merge(team);
for (Player playerListOldPlayer : playerListOld)
{
@@ -275,6 +302,22 @@ public void edit(Team team) throws IllegalOrphanException, NonexistentEntityExce
}
}
}
+ for (Record recordListOldRecord : recordListOld)
+ {
+ if (!recordListNew.contains(recordListOldRecord))
+ {
+ recordListOldRecord.getTeamList().remove(team);
+ recordListOldRecord = em.merge(recordListOldRecord);
+ }
+ }
+ for (Record recordListNewRecord : recordListNew)
+ {
+ if (!recordListOld.contains(recordListNewRecord))
+ {
+ recordListNewRecord.getTeamList().add(team);
+ recordListNewRecord = em.merge(recordListNewRecord);
+ }
+ }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -354,6 +397,12 @@ public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntity
playerListPlayer.getTeamList().remove(team);
playerListPlayer = em.merge(playerListPlayer);
}
+ List recordList = team.getRecordList();
+ for (Record recordListRecord : recordList)
+ {
+ recordListRecord.getTeamList().remove(team);
+ recordListRecord = em.merge(recordListRecord);
+ }
em.remove(team);
em.getTransaction().commit();
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TournamentHasTeamJpaController.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TournamentHasTeamJpaController.java
index 80bc46c..815a085 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TournamentHasTeamJpaController.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/controller/TournamentHasTeamJpaController.java
@@ -11,7 +11,6 @@
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
-import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.Tournament;
import com.github.javydreamercsw.database.storage.db.TournamentHasTeam;
@@ -58,13 +57,6 @@ public void create(TournamentHasTeam tournamentHasTeam) throws PreexistingEntity
tournament = em.getReference(tournament.getClass(), tournament.getTournamentPK());
tournamentHasTeam.setTournament(tournament);
}
- List attachedRecordList = new ArrayList<>();
- for (Record recordListRecordToAttach : tournamentHasTeam.getRecordList())
- {
- recordListRecordToAttach = em.getReference(recordListRecordToAttach.getClass(), recordListRecordToAttach.getRecordPK());
- attachedRecordList.add(recordListRecordToAttach);
- }
- tournamentHasTeam.setRecordList(attachedRecordList);
em.persist(tournamentHasTeam);
if (team != null)
{
@@ -76,11 +68,6 @@ public void create(TournamentHasTeam tournamentHasTeam) throws PreexistingEntity
tournament.getTournamentHasTeamList().add(tournamentHasTeam);
tournament = em.merge(tournament);
}
- for (Record recordListRecord : tournamentHasTeam.getRecordList())
- {
- recordListRecord.getTournamentHasTeamList().add(tournamentHasTeam);
- recordListRecord = em.merge(recordListRecord);
- }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -114,8 +101,6 @@ public void edit(TournamentHasTeam tournamentHasTeam) throws NonexistentEntityEx
Team teamNew = tournamentHasTeam.getTeam();
Tournament tournamentOld = persistentTournamentHasTeam.getTournament();
Tournament tournamentNew = tournamentHasTeam.getTournament();
- List recordListOld = persistentTournamentHasTeam.getRecordList();
- List recordListNew = tournamentHasTeam.getRecordList();
if (teamNew != null)
{
teamNew = em.getReference(teamNew.getClass(), teamNew.getId());
@@ -126,14 +111,6 @@ public void edit(TournamentHasTeam tournamentHasTeam) throws NonexistentEntityEx
tournamentNew = em.getReference(tournamentNew.getClass(), tournamentNew.getTournamentPK());
tournamentHasTeam.setTournament(tournamentNew);
}
- List attachedRecordListNew = new ArrayList<>();
- for (Record recordListNewRecordToAttach : recordListNew)
- {
- recordListNewRecordToAttach = em.getReference(recordListNewRecordToAttach.getClass(), recordListNewRecordToAttach.getRecordPK());
- attachedRecordListNew.add(recordListNewRecordToAttach);
- }
- recordListNew = attachedRecordListNew;
- tournamentHasTeam.setRecordList(recordListNew);
tournamentHasTeam = em.merge(tournamentHasTeam);
if (teamOld != null && !teamOld.equals(teamNew))
{
@@ -155,22 +132,6 @@ public void edit(TournamentHasTeam tournamentHasTeam) throws NonexistentEntityEx
tournamentNew.getTournamentHasTeamList().add(tournamentHasTeam);
tournamentNew = em.merge(tournamentNew);
}
- for (Record recordListOldRecord : recordListOld)
- {
- if (!recordListNew.contains(recordListOldRecord))
- {
- recordListOldRecord.getTournamentHasTeamList().remove(tournamentHasTeam);
- recordListOldRecord = em.merge(recordListOldRecord);
- }
- }
- for (Record recordListNewRecord : recordListNew)
- {
- if (!recordListOld.contains(recordListNewRecord))
- {
- recordListNewRecord.getTournamentHasTeamList().add(tournamentHasTeam);
- recordListNewRecord = em.merge(recordListNewRecord);
- }
- }
em.getTransaction().commit();
}
catch (Exception ex)
@@ -224,12 +185,6 @@ public void destroy(TournamentHasTeamPK id) throws NonexistentEntityException
tournament.getTournamentHasTeamList().remove(tournamentHasTeam);
tournament = em.merge(tournament);
}
- List recordList = tournamentHasTeam.getRecordList();
- for (Record recordListRecord : recordList)
- {
- recordListRecord.getTournamentHasTeamList().remove(tournamentHasTeam);
- recordListRecord = em.merge(recordListRecord);
- }
em.remove(tournamentHasTeam);
em.getTransaction().commit();
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/DataBaseManager.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/DataBaseManager.java
index 074763c..9e68472 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/DataBaseManager.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/DataBaseManager.java
@@ -539,10 +539,13 @@ public static void loadDemoData() throws Exception
// Add matches
for (int i = 0; i < 10; i++)
{
+ Tournament t = TournamentService.getInstance().getAll().get(i);
+ TournamentService.getInstance().addRound(t);
MatchEntry match = new MatchEntry();
match.setMatchDate(LocalDate.now());
match.setFormat(FormatService.getInstance().findFormatById(formatList
.get(r.nextInt(formatList.size())).getFormatPK()).get());
+ match.setRound(t.getRoundList().get(0));
MatchService.getInstance().saveMatch(match);
for (int j = 0; j < 2; j++)
{
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/MatchService.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/MatchService.java
index 6e37224..fab6946 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/MatchService.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/MatchService.java
@@ -19,9 +19,11 @@
import com.github.javydreamercsw.database.storage.db.MatchResultType;
import com.github.javydreamercsw.database.storage.db.Player;
import com.github.javydreamercsw.database.storage.db.Record;
+import com.github.javydreamercsw.database.storage.db.Round;
import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecordPK;
+import com.github.javydreamercsw.database.storage.db.TournamentHasTeam;
import com.github.javydreamercsw.database.storage.db.controller.MatchEntryJpaController;
import com.github.javydreamercsw.database.storage.db.controller.MatchHasTeamJpaController;
import com.github.javydreamercsw.database.storage.db.controller.MatchResultJpaController;
@@ -168,12 +170,13 @@ public MatchEntry findMatch(MatchEntryPK key)
* @return true if added. False if team already in the match or was unable to
* be added.
* @throws Exception persisting to data base.
+ * @throws TournamentException if this match is part of a tournament.
*/
- public boolean addTeam(MatchEntry match, Team team) throws Exception
+ public boolean addTeam(MatchEntry match, Team team)
+ throws TournamentException, Exception
{
// Check the team is not in this match already
- if (!match.getMatchHasTeamList().stream().noneMatch((mht)
- -> (Objects.equals(mht.getTeam().getId(), team.getId()))))
+ if (hasTeam(match, team))
{
return false;
}
@@ -195,35 +198,27 @@ public boolean addTeam(MatchEntry match, Team team) throws Exception
match.getMatchHasTeamList().add(mht);
- // Make sure each team member has a record for this game. Add one otherwise.
- team.getPlayerList().forEach(player ->
+ if (match.getRound() != null)
{
- boolean found = false;
- for (Record r : player.getRecordList())
+ // Add record for this match.
+ Record record = new Record();
+ record.getTeamList().add(team);
+ TournamentHasTeam tht;
+ if (TournamentService.getInstance()
+ .hasTeam(match.getRound().getTournament(), team))
{
- if (Objects.equals(r.getGame().getId(),
- match.getFormat().getGame().getId()))
- {
- found = true;
- break;
- }
+ tht = TournamentService.getInstance()
+ .getTeam(match.getRound().getTournament(), team);
}
- if (!found)
+ else
{
- try
- {
- Record record = new Record();
- record.getPlayerList().add(player);
- record.setGame(match.getFormat().getGame());
- RecordService.getInstance().saveRecord(record);
- player.getRecordList().add(record);
- }
- catch (Exception ex)
- {
- Exceptions.printStackTrace(ex);
- }
+ tht = TournamentService.getInstance()
+ .addTeam(match.getRound().getTournament(), team);
}
- });
+ record.getTournamentHasTeamList().add(tht);
+ RecordService.getInstance().saveRecord(record);
+ team.getRecordList().add(record);
+ }
return true;
}
@@ -328,7 +323,7 @@ public void lockMatchResult(MatchEntry me) throws TournamentException
{
try
{
- lockMatchResult(mht.getMatchResult());
+ lockMatchResult(me, mht.getMatchResult());
}
catch (Exception ex)
{
@@ -346,49 +341,118 @@ public void lockMatchResult(MatchEntry me) throws TournamentException
* Lock the match result.This is meant not to be undone as it calculates
* experience and update records which is dependent on when it happens.
*
+ * @param me Match Entry to lock results for.
* @param mr Match Result to lock.
* @throws java.lang.Exception
*/
- public void lockMatchResult(MatchResult mr) throws Exception
+ public synchronized void lockMatchResult(MatchEntry me, MatchResult mr)
+ throws Exception
{
- mr.setLocked(true);
-
- // Update the record
+ // Update the tournament record
mr.getMatchHasTeamList().forEach(mht ->
{
- mht.getTeam().getPlayerList().forEach(player ->
+ // Update tournament record if applicable.
+ Record record = getRecordForTournament(me.getRound(), mht.getTeam());
+ TeamHasFormatRecord teamRecord = getTeamRecord(me, mht.getTeam());
+ switch (mr.getMatchResultType().getType())
{
- Record record = player.getRecordList().get(0);
- switch (mr.getMatchResultType().getType())
- {
- case "result.loss":
- //Fall thru
- case "result.forfeit":
- //Fall thru
- case "result.no_show":
- record.setLoses(record.getLoses() + 1);
- break;
- case "result.draw":
+ case "result.loss":
+ //Fall thru
+ case "result.forfeit":
+ //Fall thru
+ case "result.no_show":
+ if (record != null)
+ {
+ record.setLosses(record.getLosses() + 1);
+ }
+ teamRecord.setLosses(teamRecord.getLosses() + 1);
+ break;
+ case "result.draw":
+ if (record != null)
+ {
record.setDraws(record.getDraws() + 1);
- break;
- //Various reasons leading to a win.
- case "result.win":
+ }
+ teamRecord.setDraws(teamRecord.getDraws() + 1);
+ break;
+ //Various reasons leading to a win.
+ case "result.win":
+ if (record != null)
+ {
record.setWins(record.getWins() + 1);
- break;
- }
- try
+ }
+ teamRecord.setWins(teamRecord.getWins() + 1);
+ break;
+ }
+ try
+ {
+ if (record != null)
{
RecordService.getInstance().saveRecord(record);
}
- catch (Exception ex)
- {
- Exceptions.printStackTrace(ex);
- }
- });
+ RecordService.getInstance().saveRecord(teamRecord);
+ }
+ catch (Exception ex)
+ {
+ Exceptions.printStackTrace(ex);
+ }
});
+ mr.setLocked(true);
mrc.edit(mr);
}
+ /**
+ * Get the teams overall record.
+ *
+ * @param me Match entry to use.
+ * @param team Team to get record for.
+ * @return The found record or null if not found.
+ */
+ private TeamHasFormatRecord getTeamRecord(MatchEntry me, Team team)
+ {
+ for (TeamHasFormatRecord thfr : team.getTeamHasFormatRecordList())
+ {
+ if (thfr.getFormat().getFormatPK().equals(me.getFormat().getFormatPK()))
+ {
+ return thfr;
+ }
+ }
+
+ // If we got here there's none for this format. Create one.
+ TeamHasFormatRecord thfr = new TeamHasFormatRecord();
+ thfr.setTeam(team);
+ thfr.setFormat(me.getFormat());
+
+ team.getTeamHasFormatRecordList().add(thfr);
+ return thfr;
+ }
+
+ /**
+ * Get the record for the matching tournament
+ *
+ * @param round Round to use.
+ * @param team Team to get record for.
+ * @return The found record or null if not found.
+ */
+ private Record getRecordForTournament(Round round, Team team)
+ {
+ if (round != null)
+ {
+ // Part of a tournament, go ahead.
+ for (Record r : team.getRecordList())
+ {
+ for (TournamentHasTeam tht : r.getTournamentHasTeamList())
+ {
+ if (tht.getTournament().getTournamentPK()
+ .equals(round.getTournament().getTournamentPK()))
+ {
+ return r;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
/**
* Update a match result.
*
@@ -726,4 +790,17 @@ public double getMatchQuality(TeamInterface[] teams)
((TrueSkillRankingProvider) rp).getGameInfo(),
de.gesundkrank.jskills.Team.concat(teams)) * 100;
}
+
+ /**
+ * Check if match already has the team;
+ *
+ * @param match Match to check
+ * @param team Team to check.
+ * @return True if found, false otherwise.
+ */
+ public boolean hasTeam(MatchEntry match, Team team)
+ {
+ return match.getMatchHasTeamList().stream().anyMatch((mht)
+ -> (Objects.equals(mht.getTeam().getId(), team.getId())));
+ }
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/PlayerService.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/PlayerService.java
index 54ed4c8..420ebb1 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/PlayerService.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/PlayerService.java
@@ -7,10 +7,8 @@
import org.openide.util.Exceptions;
import com.github.javydreamercsw.database.storage.db.Player;
-import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.controller.PlayerJpaController;
-import com.github.javydreamercsw.database.storage.db.controller.RecordJpaController;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.NonexistentEntityException;
import com.github.javydreamercsw.tournament.manager.UIPlayer;
@@ -151,16 +149,10 @@ public void deletePlayer(Player player)
{
try
{
- RecordJpaController rc
- = new RecordJpaController(DataBaseManager.getEntityManagerFactory());
player.getTeamList().forEach((team) ->
{
TeamService.getInstance().deleteTeam(team);
});
- for (Record r : player.getRecordList())
- {
- rc.destroy(r.getRecordPK());
- }
pc.destroy(player.getId());
}
catch (NonexistentEntityException ex)
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RankingManager.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RankingManager.java
index 1115c7d..3028f4c 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RankingManager.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RankingManager.java
@@ -6,8 +6,10 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import com.github.javydreamercsw.database.storage.db.Format;
+import com.github.javydreamercsw.database.storage.db.Game;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
public class RankingManager
@@ -17,11 +19,60 @@ public class RankingManager
.thenComparingDouble(thfr -> thfr.getMean())
.thenComparingDouble(thfr -> thfr.getStandardDeviation());
+ /**
+ * Get rankings for a specific game format.
+ *
+ * @param f Format to get rankings for.
+ * @return A map with the rankings.
+ */
public static Map> getRankings(Format f)
{
return getRankings(f.getTeamHasFormatRecordList());
}
+ /**
+ * Get rankings for a specific game.
+ *
+ * @param game Game name to get rankings for.
+ * @return A map with the rankings.
+ */
+ public static Map> getRankings(String game)
+ {
+ List items = new ArrayList<>();
+ Optional g = GameService.getInstance().findGameByName(game);
+ Map map = new HashMap<>();
+ if (g.isPresent())
+ {
+ g.get().getFormatList().forEach(f ->
+ {
+ f.getTeamHasFormatRecordList().forEach(item ->
+ {
+ if (map.containsKey(item.getTeam().getId()))
+ {
+ TeamHasFormatRecord temp = map.get(item.getTeam().getId());
+
+ // Add points
+ temp.setPoints(temp.getPoints() + item.getPoints());
+
+ // Agregate the mean.
+ temp.setMean(temp.getMean() + item.getMean());
+
+ // Calculate new SD
+ temp.setStandardDeviation(Math.sqrt(
+ Math.pow(temp.getStandardDeviation(), 2)
+ + Math.pow(item.getStandardDeviation(), 2)));
+ }
+ else
+ {
+ map.put(item.getTeam().getId(), item);
+ }
+ });
+ });
+ }
+ items.addAll(map.values());
+ return getRankings(items);
+ }
+
protected static Map> getRankings(List items)
{
Map> rankings = new HashMap<>();
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RecordService.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RecordService.java
index 68ce2db..146b039 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RecordService.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/RecordService.java
@@ -3,12 +3,16 @@
import java.util.List;
import com.github.javydreamercsw.database.storage.db.Record;
+import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
import com.github.javydreamercsw.database.storage.db.controller.RecordJpaController;
+import com.github.javydreamercsw.database.storage.db.controller.TeamHasFormatRecordJpaController;
public class RecordService extends Service
{
private RecordJpaController rc
= new RecordJpaController(DataBaseManager.getEntityManagerFactory());
+ private TeamHasFormatRecordJpaController thfrc
+ = new TeamHasFormatRecordJpaController(DataBaseManager.getEntityManagerFactory());
/**
* Helper class to initialize the singleton Service in a thread-safe way and
@@ -50,9 +54,15 @@ public static RecordService getInstance()
return SingletonHolder.INSTANCE;
}
+ /**
+ * Save a tournament record.
+ *
+ * @param record Record to save.
+ * @throws Exception Persisting to database.
+ */
public void saveRecord(Record record) throws Exception
{
- if (record.getRecordPK() == null)
+ if (record.getId() == null)
{
rc.create(record);
}
@@ -61,10 +71,28 @@ public void saveRecord(Record record) throws Exception
rc.edit(record);
}
}
-
+
@Override
public List getAll()
{
return rc.findRecordEntities();
}
+
+ /**
+ * Save overall record.
+ *
+ * @param teamRecord Record to save.
+ * @throws Exception Persisting to database.
+ */
+ public void saveRecord(TeamHasFormatRecord teamRecord) throws Exception
+ {
+ if (teamRecord.getTeamHasFormatRecordPK() == null)
+ {
+ thfrc.create(teamRecord);
+ }
+ else
+ {
+ thfrc.edit(teamRecord);
+ }
+ }
}
diff --git a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/TournamentService.java b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/TournamentService.java
index 2f89f59..d8e2a74 100644
--- a/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/TournamentService.java
+++ b/Database-Storage/src/main/java/com/github/javydreamercsw/database/storage/db/server/TournamentService.java
@@ -5,6 +5,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
@@ -163,18 +164,58 @@ public void addTeams(Tournament t, Team... teams) throws Exception
*
* @param t Tournament
* @param team Team to add
+ * @return Team in Tournament record.
* @throws IllegalOrphanException if an orphan is left
* @throws Exception if there's an error adding team.
*/
- public void addTeam(Tournament t, Team team) throws IllegalOrphanException,
- Exception
- {
- TournamentHasTeam tht = new TournamentHasTeam();
- tht.setTeam(team);
- tht.setTournament(t);
- thtc.create(tht);
- t.getTournamentHasTeamList().add(tht);
- saveTournament(t);
+ public TournamentHasTeam addTeam(Tournament t, Team team)
+ throws IllegalOrphanException, Exception
+ {
+ if (!hasTeam(t, team))
+ {
+ TournamentHasTeam tht = new TournamentHasTeam();
+ tht.setTeam(team);
+ tht.setTournament(t);
+ thtc.create(tht);
+ t.getTournamentHasTeamList().add(tht);
+ saveTournament(t);
+
+ return tht;
+ }
+ return null;
+ }
+
+ /**
+ * Check if tournament already has team.
+ *
+ * @param tournament Tournament to check.
+ * @param team Team to check.
+ * @return true if found, false otherwise.
+ */
+ public boolean hasTeam(Tournament tournament, Team team)
+ {
+ return findTournament(tournament.getTournamentPK())
+ .getTournamentHasTeamList().stream()
+ .anyMatch((tht) -> (Objects.equals(tht.getTeam().getId(),
+ team.getId())));
+ }
+
+ /**
+ * Get TournamentHasTeam in tournament.
+ * @param t Tournament to search.
+ * @param team Team to search.
+ * @return TournamentHasTeam or null if not found.
+ */
+ public TournamentHasTeam getTeam(Tournament t, Team team)
+ {
+ for (TournamentHasTeam tht
+ : findTournament(t.getTournamentPK()).getTournamentHasTeamList())
+ {
+ if(Objects.equals(tht.getTeam().getId(), team.getId())){
+ return tht;
+ }
+ }
+ return null;
}
/**
diff --git a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/MatchServiceTest.java b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/MatchServiceTest.java
index 6919e41..e26b570 100644
--- a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/MatchServiceTest.java
+++ b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/MatchServiceTest.java
@@ -27,7 +27,6 @@
import com.github.javydreamercsw.database.storage.db.controller.exceptions.NonexistentEntityException;
import com.github.javydreamercsw.tournament.manager.api.IGame;
import com.github.javydreamercsw.tournament.manager.api.TournamentException;
-import com.github.javydreamercsw.tournament.manager.api.TournamentInterface;
/**
*
@@ -47,18 +46,10 @@ public void setup() throws NonexistentEntityException, IllegalOrphanException,
super.setup();
game = GameService.getInstance().findGameByName(Lookup.getDefault()
.lookup(IGame.class).getName()).get();
- t.setTournamentFormat(TournamentService.getInstance()
- .findFormat(Lookup.getDefault().lookup(TournamentInterface.class)
- .getName()));
- t.setFormat(FormatService.getInstance().getAll().get(0));
- TournamentService.getInstance().saveTournament(t);
- TournamentService.getInstance().addRound(t);
-
GameService.getInstance().saveGame(game);
me = new MatchEntry();
me.setFormat(game.getFormatList().get(0));
- me.setRound(t.getRoundList().get(0));
MatchService.getInstance().saveMatch(me);
}
@@ -144,10 +135,10 @@ public void testMatchService() throws TournamentException, Exception
for (MatchHasTeam mht : match.getMatchHasTeamList())
{
MatchResult result = mht.getMatchResult();
- MatchService.getInstance().lockMatchResult(result);
+ MatchService.getInstance().lockMatchResult(match, result);
assertTrue(mht.getTeam().getPlayerList().size() > 0);
- mht.getTeam().getPlayerList().forEach(p ->
+ mht.getTeam().getRecordList().forEach(record ->
{
switch (result.getMatchResultType().getType())
{
@@ -157,19 +148,19 @@ public void testMatchService() throws TournamentException, Exception
case "result.forfeit":
//Fall thru
case "result.no_show":
- assertEquals(p.getRecordList().get(0).getWins(), 0);
- assertEquals(p.getRecordList().get(0).getLoses(), 1);
- assertEquals(p.getRecordList().get(0).getDraws(), 0);
+ assertEquals(record.getWins(), 0);
+ assertEquals(record.getLosses(), 1);
+ assertEquals(record.getDraws(), 0);
break;
case "result.draw":
- assertEquals(p.getRecordList().get(0).getWins(), 0);
- assertEquals(p.getRecordList().get(0).getLoses(), 0);
- assertEquals(p.getRecordList().get(0).getDraws(), 1);
+ assertEquals(record.getWins(), 0);
+ assertEquals(record.getLosses(), 0);
+ assertEquals(record.getDraws(), 1);
break;
case "result.win":
- assertEquals(p.getRecordList().get(0).getWins(), 1);
- assertEquals(p.getRecordList().get(0).getLoses(), 0);
- assertEquals(p.getRecordList().get(0).getDraws(), 0);
+ assertEquals(record.getWins(), 1);
+ assertEquals(record.getLosses(), 0);
+ assertEquals(record.getDraws(), 0);
break;
}
});
@@ -177,12 +168,12 @@ public void testMatchService() throws TournamentException, Exception
// All players must hava a non-zero record.
assertFalse(PlayerService.getInstance().getAll().isEmpty());
- PlayerService.getInstance().getAll().forEach(p ->
+ TeamService.getInstance().getAll().forEach(team ->
{
- assertTrue(p.getRecordList().size() == 1);
- assertTrue(p.getRecordList().get(0).getDraws()
- + p.getRecordList().get(0).getLoses()
- + p.getRecordList().get(0).getWins() > 0);
+ assertTrue(team.getTeamHasFormatRecordList().size() == 1);
+ assertTrue(team.getTeamHasFormatRecordList().get(0).getDraws()
+ + team.getTeamHasFormatRecordList().get(0).getLosses()
+ + team.getTeamHasFormatRecordList().get(0).getWins() > 0);
});
MatchService.getInstance().saveMatch(me);
@@ -205,8 +196,7 @@ public void testMatchService() throws TournamentException, Exception
@Test
public void testFindMatchesWithFormat()
{
- assertEquals(MatchService.getInstance().findMatchesWithFormat("").size(),
- game.getFormatList().size());
+ assertEquals(MatchService.getInstance().findMatchesWithFormat("").size(), 1);
assertEquals(MatchService.getInstance()
.findMatchesWithFormat(game.getFormatList().get(0).getName()).size(), 1);
diff --git a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/RankingManagerNGTest.java b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/RankingManagerNGTest.java
index a37c8ca..08d636d 100644
--- a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/RankingManagerNGTest.java
+++ b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/RankingManagerNGTest.java
@@ -20,6 +20,7 @@
import com.github.javydreamercsw.database.storage.db.Game;
import com.github.javydreamercsw.database.storage.db.MatchEntry;
import com.github.javydreamercsw.database.storage.db.Player;
+import com.github.javydreamercsw.database.storage.db.Team;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
import com.github.javydreamercsw.database.storage.db.Tournament;
import com.github.javydreamercsw.database.storage.db.controller.exceptions.IllegalOrphanException;
@@ -57,8 +58,70 @@ public void setup() throws NonexistentEntityException, IllegalOrphanException,
* @throws java.lang.Exception
*/
@Test
- public void testGetRankings() throws Exception
+ public void testGetRankingsFormat() throws Exception
{
+ prepareTest();
+
+ // Check the rankings
+ Map> rankings
+ = RankingManager.getRankings(FormatService.getInstance()
+ .getAll().get(0));
+ validateRankings(rankings);
+ assertEquals(rankings.size(), PlayerService.getInstance().getAll().size());
+ }
+
+ /**
+ * Test of getRankings method, of class RankingManager.
+ *
+ * @throws java.lang.Exception
+ */
+ @Test
+ public void testGetRankingsGame() throws Exception
+ {
+ prepareTest();
+
+ // Check game overall rankings
+ Map> rankings
+ = RankingManager.getRankings(game.getName());
+ validateRankings(rankings);
+
+ assertEquals(rankings.size(), PlayerService.getInstance().getAll().size());
+ }
+
+ /**
+ * Test of getRankings method, of class RankingManager. Some edge cases.
+ *
+ * @throws java.lang.Exception
+ */
+ @Test
+ public void testGetRankingsEdges() throws Exception
+ {
+ // Create ficticious rankings with equal results
+ List items = new ArrayList<>();
+ Random random = new Random();
+ for (int i = 0; i < 10; i++)
+ {
+ TeamHasFormatRecord thfr = new TeamHasFormatRecord();
+ if (i < 2)
+ {
+ thfr.setPoints(100);
+ thfr.setMean(10.0);
+ thfr.setStandardDeviation(10.0);
+ }
+ else
+ {
+ thfr.setPoints(random.nextInt(90));
+ thfr.setMean(random.nextDouble() * 100.0);
+ thfr.setStandardDeviation(random.nextDouble() * 100.0);
+ }
+ items.add(thfr);
+ }
+
+ validateRankings(RankingManager.getRankings(items));
+ }
+
+ private void prepareTest() throws Exception
+ {
Random random = new Random();
// Add teams
@@ -72,14 +135,14 @@ public void testGetRankings() throws Exception
for (int i = 0; i < 100; i++)
{
- TeamService.getInstance().getAll().forEach(team ->
+ for (Team team : TeamService.getInstance().getAll())
{
boolean create = matches.lastEntry() == null
|| matches.lastEntry().getValue().getMatchHasTeamList().size() == 2;
if (create)
{
MatchEntry me = new MatchEntry();
- me.setFormat(game.getFormatList().get(0));
+ me.setFormat(game.getFormatList().get(i % 2));
me.setRound(t.getRoundList().get(0));
try
@@ -121,43 +184,8 @@ public void testGetRankings() throws Exception
Exceptions.printStackTrace(ex);
fail();
}
- });
- }
-
- // Check the rankings
- validateRankings(RankingManager.getRankings(FormatService.getInstance().getAll().get(0)));
- }
-
- /**
- * Test of getRankings method, of class RankingManager. Some edge cases.
- *
- * @throws java.lang.Exception
- */
- @Test
- public void testGetRankingsEdges() throws Exception
- {
- // Create ficticious rankings with equal results
- List items = new ArrayList<>();
- Random random = new Random();
- for (int i = 0; i < 10; i++)
- {
- TeamHasFormatRecord thfr = new TeamHasFormatRecord();
- if (i < 2)
- {
- thfr.setPoints(100);
- thfr.setMean(10.0);
- thfr.setStandardDeviation(10.0);
- }
- else
- {
- thfr.setPoints(random.nextInt(90));
- thfr.setMean(random.nextDouble() * 100.0);
- thfr.setStandardDeviation(random.nextDouble() * 100.0);
}
- items.add(thfr);
}
-
- validateRankings(RankingManager.getRankings(items));
}
private void validateRankings(Map> rankings)
@@ -174,16 +202,19 @@ private void validateRankings(Map> rankings)
assertEquals(RankingManager.compare(temp, item), 0);
});
}
- if (last == null)
+ System.out.print(entry.getKey() + ": ");
+ for (TeamHasFormatRecord item : entry.getValue())
{
- last = entry.getValue().get(0);
- }
- else
- {
- for (TeamHasFormatRecord item : entry.getValue())
+ if (last != null)
{
assertTrue(RankingManager.compare(last, item) > 0);
}
+ System.out.println(item);
+ }
+
+ if (last == null)
+ {
+ last = entry.getValue().get(0);
}
}
}
diff --git a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestGame.java b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestGame.java
index 34ea667..229263b 100644
--- a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestGame.java
+++ b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestGame.java
@@ -34,6 +34,19 @@ public String getDescription()
return "Dummy Format Description";
}
});
+ formats.add(new GameFormat() {
+ @Override
+ public String getName()
+ {
+ return "X Format";
+ }
+
+ @Override
+ public String getDescription()
+ {
+ return "X Format Description";
+ }
+ });
return formats;
}
}
diff --git a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestTournamentFormat.java b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestTournamentFormat.java
index 2437216..76306a2 100644
--- a/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestTournamentFormat.java
+++ b/Database-Storage/src/test/java/com/github/javydreamercsw/database/storage/db/server/TestTournamentFormat.java
@@ -19,13 +19,15 @@ public TestTournamentFormat()
super(3, 0, 1, true);
}
- public TestTournamentFormat(int winPoints, int lossPoints, int drawPoints,
+ public TestTournamentFormat(double winPoints, double lossPoints,
+ double drawPoints,
boolean pairAlikeRecords)
{
super(winPoints, lossPoints, drawPoints, pairAlikeRecords);
}
- public TestTournamentFormat(int winPoints, int lossPoints, int drawPoints)
+ public TestTournamentFormat(double winPoints, double lossPoints,
+ double drawPoints)
{
super(winPoints, lossPoints, drawPoints);
}
@@ -44,7 +46,7 @@ public int getMinimumAmountOfRounds()
@Override
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints)
+ double winPoints, double lossPoints, double drawPoints)
throws TournamentSignupException
{
TestTournamentFormat dummy = new TestTournamentFormat(winPoints, lossPoints,
diff --git a/Elimination-Tournament/nb-configuration.xml b/Elimination-Tournament/nb-configuration.xml
deleted file mode 100644
index a65c451..0000000
--- a/Elimination-Tournament/nb-configuration.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- JDK_1.8
-
-
diff --git a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/DoubleElimination.java b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/DoubleElimination.java
index ab9005a..f605bee 100644
--- a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/DoubleElimination.java
+++ b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/DoubleElimination.java
@@ -16,7 +16,7 @@ public DoubleElimination()
super(2, false);
}
- public DoubleElimination(int winPoints, int lossPoints, int drawPoints,
+ public DoubleElimination(double winPoints, double lossPoints, double drawPoints,
boolean pairAlikeRecords)
{
super(2, winPoints, lossPoints, drawPoints, pairAlikeRecords);
@@ -30,7 +30,7 @@ public String getName()
@Override
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints)
+ double winPoints, double lossPoints, double drawPoints)
throws TournamentSignupException
{
DoubleElimination de = new DoubleElimination(winPoints, lossPoints,
diff --git a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/Elimination.java b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/Elimination.java
index 71f940d..23c76c5 100644
--- a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/Elimination.java
+++ b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/Elimination.java
@@ -57,8 +57,8 @@ public Elimination()
* @param drawPoints points to be allocated for a draw
* @param pairAlikeRecords true to pair alike records, false for random
*/
- public Elimination(int eliminations, int winPoints, int lossPoints,
- int drawPoints, boolean pairAlikeRecords)
+ public Elimination(int eliminations, double winPoints, double lossPoints,
+ double drawPoints, boolean pairAlikeRecords)
{
super(winPoints, lossPoints, drawPoints, eliminations, pairAlikeRecords);
}
@@ -99,7 +99,7 @@ public Map getPairings()
Random rnd = new Random();
//This will hold the reminder unpaired player due to odd number of players with same record.
TeamInterface pending = null;
- for (Entry> rankings : getRankings().entrySet())
+ for (Entry> rankings : getRankings().entrySet())
{
//Pair all people with same ranking together
exclude = new Integer[]
diff --git a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/SingleElimination.java b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/SingleElimination.java
index 208a15f..2c26d39 100644
--- a/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/SingleElimination.java
+++ b/Elimination-Tournament/src/main/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/SingleElimination.java
@@ -16,7 +16,7 @@ public SingleElimination()
super(1, false);
}
- public SingleElimination(int winPoints, int lossPoints, int drawPoints,
+ public SingleElimination(double winPoints, double lossPoints, double drawPoints,
boolean pairAlikeRecords)
{
super(1, winPoints, lossPoints, drawPoints, pairAlikeRecords);
@@ -32,7 +32,7 @@ public String getName()
@Override
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints)
+ double winPoints, double lossPoints, double drawPoints)
throws TournamentSignupException
{
SingleElimination se = new SingleElimination(winPoints, lossPoints,
diff --git a/Elimination-Tournament/src/test/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/EliminationTest.java b/Elimination-Tournament/src/test/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/EliminationTest.java
index 019349e..839e23e 100644
--- a/Elimination-Tournament/src/test/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/EliminationTest.java
+++ b/Elimination-Tournament/src/test/java/com/github/javydreamercsw/tournament/manager/elimination/tournament/EliminationTest.java
@@ -34,7 +34,7 @@ public String getName()
@Override
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints)
+ double winPoints, double lossPoints, double drawPoints)
{
return null;
}
diff --git a/Swiss-Tournament/nb-configuration.xml b/Swiss-Tournament/nb-configuration.xml
deleted file mode 100644
index a65c451..0000000
--- a/Swiss-Tournament/nb-configuration.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- JDK_1.8
-
-
diff --git a/Swiss-Tournament/src/main/java/com/github/javydreamercsw/swiss/tournament/Swiss.java b/Swiss-Tournament/src/main/java/com/github/javydreamercsw/swiss/tournament/Swiss.java
index 7a533ef..863627c 100644
--- a/Swiss-Tournament/src/main/java/com/github/javydreamercsw/swiss/tournament/Swiss.java
+++ b/Swiss-Tournament/src/main/java/com/github/javydreamercsw/swiss/tournament/Swiss.java
@@ -32,7 +32,7 @@ public Swiss() {
super(3, 0, 1);
}
- public Swiss(int winPoints, int lossPoints, int drawPoints) {
+ public Swiss(double winPoints, double lossPoints, double drawPoints) {
super(winPoints, lossPoints, drawPoints);
}
@@ -44,16 +44,16 @@ public String getName() {
@Override
public Map getPairings() {
//Now make sure we don't have a winner already
- TreeMap> rankings = getRankings();
+ TreeMap> rankings = getRankings();
if (rankings.size() >= 2 && round > 1) {
- Integer leader = rankings.firstKey();
+ double leader = rankings.firstKey();
List highRank = rankings.get(leader);
displayRankings();
if (highRank != null && highRank.size() == 1) {
//Only one leader, make sure has enough points
TeamInterface potentialWinner = highRank.get(0);
//Get the next ranking
- int second = leader - 1;
+ double second = leader - 1;
for (; second >= 0; second--) {
if (rankings.get(second) != null) {
break;
@@ -90,7 +90,8 @@ public int getMinimumAmountOfRounds() {
@Override
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints) throws TournamentSignupException {
+ double winPoints, double lossPoints, double drawPoints)
+ throws TournamentSignupException {
Swiss swiss = new Swiss(winPoints, lossPoints, drawPoints);
swiss.addTeams(teams);
return swiss;
diff --git a/TMCore/pom.xml b/TMCore/pom.xml
index 6efffb8..11a85dc 100644
--- a/TMCore/pom.xml
+++ b/TMCore/pom.xml
@@ -46,7 +46,7 @@
org.apache.commons
commons-lang3
- 3.8
+ 3.9
jar
diff --git a/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/AbstractTournament.java b/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/AbstractTournament.java
index 439c56c..76eae2d 100644
--- a/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/AbstractTournament.java
+++ b/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/AbstractTournament.java
@@ -69,17 +69,17 @@ public abstract class AbstractTournament implements TournamentInterface
/**
* Amount of points for a win.
*/
- private final int winPoints;
+ private final double winPoints;
/**
* Amount of points for a loss.
*/
- private final int lossPoints;
+ private final double lossPoints;
/**
* Amount of points for a draw.
*/
- private final int drawPoints;
+ private final double drawPoints;
private long no_show_time;
private long round_time;
private final List listeners
@@ -87,7 +87,7 @@ public abstract class AbstractTournament implements TournamentInterface
protected final boolean pairAlikeRecords;
private int id = -1;
- public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
+ public AbstractTournament(double winPoints, double lossPoints, double drawPoints,
int eliminations, boolean pairAlikeRecords)
{
this.winPoints = winPoints;
@@ -97,7 +97,7 @@ public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
this.eliminations = eliminations;
}
- public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
+ public AbstractTournament(double winPoints, double lossPoints, double drawPoints,
int eliminations)
{
this.winPoints = winPoints;
@@ -107,7 +107,7 @@ public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
this.eliminations = eliminations;
}
- public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
+ public AbstractTournament(double winPoints, double lossPoints, double drawPoints,
boolean pairAlikeRecords)
{
this.winPoints = winPoints;
@@ -117,7 +117,7 @@ public AbstractTournament(int winPoints, int lossPoints, int drawPoints,
this.eliminations = 1;
}
- public AbstractTournament(int winPoints, int lossPoints, int drawPoints)
+ public AbstractTournament(double winPoints, double lossPoints, double drawPoints)
{
this.winPoints = winPoints;
this.lossPoints = lossPoints;
@@ -319,13 +319,13 @@ public boolean roundComplete()
}
@Override
- public TreeMap> getRankings()
+ public TreeMap> getRankings()
{
- TreeMap> rankings
- = new TreeMap<>((Integer o1, Integer o2) -> o2.compareTo(o1));
+ TreeMap> rankings
+ = new TreeMap<>((Double o1, Double o2) -> o2.compareTo(o1));
getTeams().forEach((player) ->
{
- int points = getPoints(player);
+ double points = getPoints(player);
if (rankings.get(points) == null)
{
List list = new ArrayList<>();
@@ -344,7 +344,7 @@ public TreeMap> getRankings()
public void displayRankings()
{
int i = 1;
- for (Entry> entry : getRankings().entrySet())
+ for (Entry> entry : getRankings().entrySet())
{
List tied = entry.getValue();
String value;
@@ -421,7 +421,7 @@ public Map getPairings()
Random rnd = new Random();
//This will hold the reminder unpaired player due to odd number of players with same record.
TeamInterface pending = null;
- for (Entry> rankings : getRankings().entrySet())
+ for (Entry> rankings : getRankings().entrySet())
{
//Pair all people with same ranking together
exclude = new Integer[]
@@ -564,25 +564,25 @@ public TeamInterface getWinnerTeam()
}
@Override
- public int getWinPoints()
+ public double getWinPoints()
{
return winPoints;
}
@Override
- public int getLossPoints()
+ public double getLossPoints()
{
return lossPoints;
}
@Override
- public int getDrawPoints()
+ public double getDrawPoints()
{
return drawPoints;
}
@Override
- public int getPoints(TeamInterface team)
+ public double getPoints(TeamInterface team)
{
return team.getTeamMembers().get(0).getRecord().getWins() * getWinPoints()
+ team.getTeamMembers().get(0).getRecord().getDraws() * getDrawPoints();
diff --git a/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/api/TournamentInterface.java b/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/api/TournamentInterface.java
index 06530c6..768cd93 100644
--- a/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/api/TournamentInterface.java
+++ b/TMCore/src/main/java/com/github/javydreamercsw/tournament/manager/api/TournamentInterface.java
@@ -131,7 +131,7 @@ public void updateResults(int encounterID,
*
* @return current rankings
*/
- public TreeMap> getRankings();
+ public TreeMap> getRankings();
/**
* If no one drops, the amount of minimum rounds expected based on entries.
@@ -146,22 +146,22 @@ public void updateResults(int encounterID,
* @param team player to get points from.
* @return points in the tournament
*/
- public int getPoints(TeamInterface team);
+ public double getPoints(TeamInterface team);
/**
* @return the winPoints
*/
- public int getWinPoints();
+ public double getWinPoints();
/**
* @return the lossPoints
*/
- public int getLossPoints();
+ public double getLossPoints();
/**
* @return the drawPoints
*/
- public int getDrawPoints();
+ public double getDrawPoints();
/**
* Get the winning team.
@@ -258,13 +258,13 @@ public void updateResults(int encounterID,
*
* @param teams Teams to add
* @param winPoints Points per win
- * @param lossPoints Poinst per loss
+ * @param lossPoints Points per loss
* @param drawPoints Points per draw
* @return Created tournament
* @throws TournamentSignupException if something goes wrong adding players.
*/
public TournamentInterface createTournament(List teams,
- int winPoints, int lossPoints, int drawPoints)
+ double winPoints, double lossPoints, double drawPoints)
throws TournamentSignupException;
/**
diff --git a/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTest.java b/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTest.java
index e8dc8ac..cb116e8 100644
--- a/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTest.java
+++ b/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTest.java
@@ -17,8 +17,8 @@
import com.github.javydreamercsw.tournament.manager.api.TeamInterface;
import com.github.javydreamercsw.tournament.manager.api.TournamentException;
import com.github.javydreamercsw.tournament.manager.api.TournamentInterface;
-import com.github.javydreamercsw.tournament.manager.signup.TournamentSignupException;
import com.github.javydreamercsw.tournament.manager.api.TournamentListener;
+import com.github.javydreamercsw.tournament.manager.signup.TournamentSignupException;
/**
*
@@ -241,7 +241,7 @@ public void removeTournamentListener(TournamentListener rtl)
}
@Override
- public TournamentInterface createTournament(List teams, int winPoints, int lossPoints, int drawPoints)
+ public TournamentInterface createTournament(List teams, double winPoints, double lossPoints, double drawPoints)
{
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
diff --git a/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTester.java b/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTester.java
index 3eea2b2..fa88996 100644
--- a/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTester.java
+++ b/TMCore/src/test/java/com/github/javydreamercsw/tournament/manager/AbstractTournamentTester.java
@@ -325,11 +325,11 @@ public void testSimulateTournament()
}
tournament.displayRankings();
//To store the amount of points on each ranking spot.
- List points = new ArrayList<>();
+ List points = new ArrayList<>();
tournament.getRankings().entrySet().stream().filter((rankings)
-> (rankings.getValue().size() > 0)).map((rankings) ->
{
- int max = -1;
+ double max = -1;
for (TeamInterface team : rankings.getValue())
{
//Everyone tied has same amount of points
diff --git a/TournamentManagerWeb/nb-configuration.xml b/TournamentManagerWeb/nb-configuration.xml
index 5016d4a..307db53 100644
--- a/TournamentManagerWeb/nb-configuration.xml
+++ b/TournamentManagerWeb/nb-configuration.xml
@@ -14,6 +14,6 @@ That way multiple projects can share the same settings (useful for formatting ru
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
Tomcat
- JDK_1.8
+ 1.7-web
diff --git a/TournamentManagerWeb/pom.xml b/TournamentManagerWeb/pom.xml
index 5f59f0a..5b84713 100644
--- a/TournamentManagerWeb/pom.xml
+++ b/TournamentManagerWeb/pom.xml
@@ -105,7 +105,7 @@
com.h2database
h2
- 1.4.197
+ 1.4.199
jar
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/CustomDateTimePicker.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/CustomDateTimePicker.java
new file mode 100644
index 0000000..d317afb
--- /dev/null
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/CustomDateTimePicker.java
@@ -0,0 +1,85 @@
+package com.github.javydreamercsw.tournament.manager.ui;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+import com.vaadin.flow.component.customfield.CustomField;
+import com.vaadin.flow.component.datepicker.DatePicker;
+import com.vaadin.flow.component.timepicker.TimePicker;
+
+/**
+ *
+ * @author Javier Ortiz Bultron
+ */
+public class CustomDateTimePicker extends CustomField
+{
+ private static final long serialVersionUID = 2372640494766739387L;
+ private final DatePicker datePicker = new DatePicker();
+ private final TimePicker timePicker = new TimePicker();
+
+ public CustomDateTimePicker()
+ {
+ setLabel("Start datetime");
+ add(datePicker, timePicker);
+ }
+
+ @Override
+ protected LocalDateTime generateModelValue()
+ {
+ return getValue();
+ }
+
+ @Override
+ protected void setPresentationValue(
+ LocalDateTime newPresentationValue)
+ {
+ datePicker.setValue(newPresentationValue != null
+ ? newPresentationValue.toLocalDate()
+ : null);
+ timePicker.setValue(newPresentationValue != null
+ ? newPresentationValue.toLocalTime()
+ : null);
+ }
+
+ @Override
+ public LocalDateTime getValue()
+ {
+ final LocalDate date = datePicker.getValue();
+ final LocalTime time = timePicker.getValue();
+ return date != null && time != null
+ ? LocalDateTime.of(date, time)
+ : null;
+ }
+
+ @Override
+ public void setValue(LocalDateTime value)
+ {
+ if (value != null)
+ {
+ datePicker.setValue(value.toLocalDate());
+ timePicker.setValue(value.toLocalTime());
+ }
+ super.setValue(value);
+ }
+
+ public void setMinDate(LocalDate minDate)
+ {
+ datePicker.setMin(minDate);
+ }
+
+ public void setMaxDate(LocalDate maxDate)
+ {
+ datePicker.setMax(maxDate);
+ }
+
+ public void setMinTime(String minTime)
+ {
+ timePicker.setMin(minTime);
+ }
+
+ public void setMaxTime(String maxTime)
+ {
+ timePicker.setMax(maxTime);
+ }
+}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/DoubletoIntegerConverter.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/DoubletoIntegerConverter.java
new file mode 100644
index 0000000..406102b
--- /dev/null
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/DoubletoIntegerConverter.java
@@ -0,0 +1,29 @@
+package com.github.javydreamercsw.tournament.manager.ui.common;
+
+import com.vaadin.flow.data.binder.Result;
+import com.vaadin.flow.data.binder.ValueContext;
+import com.vaadin.flow.data.converter.Converter;
+
+/**
+ *
+ * @author Javier Ortiz Bultron
+ */
+public class DoubletoIntegerConverter implements Converter
+{
+ public DoubletoIntegerConverter()
+ {
+ }
+ private static final long serialVersionUID = 1620961827821087009L;
+
+ @Override
+ public Result convertToModel(Double prsntn, ValueContext vc)
+ {
+ return Result.ok(prsntn.intValue());
+ }
+
+ @Override
+ public Double convertToPresentation(Integer model, ValueContext vc)
+ {
+ return Double.valueOf(model);
+ }
+}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/GameLabelGenerator.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/GameLabelGenerator.java
new file mode 100644
index 0000000..7ada8da
--- /dev/null
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/common/GameLabelGenerator.java
@@ -0,0 +1,15 @@
+package com.github.javydreamercsw.tournament.manager.ui.common;
+
+import com.github.javydreamercsw.tournament.manager.api.IGame;
+import com.vaadin.flow.component.ItemLabelGenerator;
+
+public class GameLabelGenerator implements ItemLabelGenerator
+{
+ private static final long serialVersionUID = -4396467477758231860L;
+
+ @Override
+ public String apply(IGame g)
+ {
+ return g.getName();
+ }
+}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/matchlist/ResultForm.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/matchlist/ResultForm.java
index 71272be..8f2ee05 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/matchlist/ResultForm.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/matchlist/ResultForm.java
@@ -1,13 +1,13 @@
package com.github.javydreamercsw.tournament.manager.ui.views.matchlist;
-import com.github.javydreamercsw.tournament.manager.ui.common.MatchResultTypeLabelGenerator;
-
import org.openide.util.Exceptions;
import com.github.javydreamercsw.database.storage.db.MatchEntry;
import com.github.javydreamercsw.database.storage.db.MatchHasTeam;
import com.github.javydreamercsw.database.storage.db.MatchResultType;
import com.github.javydreamercsw.database.storage.db.server.MatchService;
+import com.github.javydreamercsw.tournament.manager.api.TournamentException;
+import com.github.javydreamercsw.tournament.manager.ui.common.MatchResultTypeLabelGenerator;
import com.vaadin.flow.component.HasValue.ValueChangeEvent;
import com.vaadin.flow.component.HasValue.ValueChangeListener;
import com.vaadin.flow.component.button.Button;
@@ -73,9 +73,9 @@ public void valueChanged(ValueChangeEvent e)
{
try
{
- MatchService.getInstance().lockMatchResult(mht.getMatchResult());
+ MatchService.getInstance().lockMatchResult(mht.getMatchEntry());
}
- catch (Exception ex)
+ catch (TournamentException ex)
{
Exceptions.printStackTrace(ex);
}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerEditorDialog.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerEditorDialog.java
index 5435574..0cac695 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerEditorDialog.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerEditorDialog.java
@@ -59,7 +59,7 @@ private void addNameField()
@Override
protected void confirmDelete()
{
- if (getCurrentItem().getRecordList().size() > 0
+ if (getCurrentItem().getTeamList().get(0).getRecordList().size() > 0
|| getCurrentItem().getTeamList().size() > 0)
{
openConfirmationDialog("Delete player",
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerList.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerList.java
index 2684774..e94d7c2 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerList.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/playerlist/PlayerList.java
@@ -126,7 +126,7 @@ private Button createEditButton(Player player)
private String getWinCount(Player player)
{
int wins = 0;
- for (Record r : player.getRecordList())
+ for (Record r : player.getTeamList().get(0).getRecordList())
{
wins += r.getWins();
}
@@ -136,9 +136,9 @@ private String getWinCount(Player player)
private String getLossCount(Player player)
{
int losses = 0;
- for (Record r : player.getRecordList())
+ for (Record r : player.getTeamList().get(0).getRecordList())
{
- losses += r.getLoses();
+ losses += r.getLosses();
}
return Integer.toString(losses);
}
@@ -146,9 +146,9 @@ private String getLossCount(Player player)
private String getDrawCount(Player player)
{
int losses = 0;
- for (Record r : player.getRecordList())
+ for (Record r : player.getTeamList().get(0).getRecordList())
{
- losses += r.getLoses();
+ losses += r.getLosses();
}
return Integer.toString(losses);
}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/rankings/RankingList.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/rankings/RankingList.java
index 6b28477..6f4e6ad 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/rankings/RankingList.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/rankings/RankingList.java
@@ -7,14 +7,24 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
+
+import org.openide.util.Lookup;
import com.github.javydreamercsw.database.storage.db.Format;
+import com.github.javydreamercsw.database.storage.db.Game;
+import com.github.javydreamercsw.database.storage.db.Record;
import com.github.javydreamercsw.database.storage.db.TeamHasFormatRecord;
import com.github.javydreamercsw.database.storage.db.server.FormatService;
+import com.github.javydreamercsw.database.storage.db.server.GameService;
import com.github.javydreamercsw.database.storage.db.server.RankingManager;
+import com.github.javydreamercsw.tournament.manager.api.IGame;
import com.github.javydreamercsw.tournament.manager.ui.MainLayout;
import com.github.javydreamercsw.tournament.manager.ui.common.FormatLabelGenerator;
+import com.github.javydreamercsw.tournament.manager.ui.common.GameLabelGenerator;
import com.github.javydreamercsw.tournament.manager.ui.views.TMView;
+import com.vaadin.flow.component.HasValue.ValueChangeEvent;
+import com.vaadin.flow.component.HasValue.ValueChangeListener;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.Grid.SelectionMode;
@@ -33,6 +43,7 @@
public class RankingList extends TMView
{
private static final long serialVersionUID = 495427102994660040L;
+ private final ComboBox game = new ComboBox<>("Game");
private final ComboBox format = new ComboBox<>("Format");
private final Grid rankings = new Grid<>();
private Map> ranks = new HashMap<>();
@@ -43,18 +54,41 @@ public RankingList()
// Add the top menu
HorizontalLayout header = new HorizontalLayout();
- // Add the format selector
- List formats = FormatService.getInstance().findFormatByGame(
- (String) VaadinService.getCurrentRequest().getWrappedSession()
- .getAttribute(CURRENT_GAME));
+ // Add the game selector
+ game.setItemLabelGenerator(new GameLabelGenerator());
+ game.addValueChangeListener(new ValueChangeListener()
+ {
+ private static final long serialVersionUID = 5377566605252849942L;
- format.setDataProvider(new ListDataProvider<>(formats));
+ @Override
+ public void valueChanged(ValueChangeEvent e)
+ {
+ if (game.getValue() != null)
+ {
+ List formats = FormatService.getInstance().findFormatByGame(
+ game.getValue().getName());
+ format.setDataProvider(new ListDataProvider<>(formats));
+ format.setValue(null);
+ }
+ else
+ {
+ format.setItems(new ArrayList<>());
+ }
+ updateView();
+ }
+ });
+ List games = new ArrayList<>();
+ games.addAll(Lookup.getDefault().lookupAll(IGame.class));
+ game.setDataProvider(new ListDataProvider<>(games));
+
+ header.add(game);
+
+ // Add the format selector
format.setItemLabelGenerator(new FormatLabelGenerator());
format.setRequired(true);
format.setPreventInvalidInput(true);
format.setAllowCustomValue(false);
format.addValueChangeListener(event -> updateView());
- format.setValue(formats.get(0));
header.add(format);
@@ -64,6 +98,12 @@ public RankingList()
.setResizable(true);
rankings.addColumn(TeamHasFormatRecord::getPoints).setHeader("Points")
.setWidth("4em");
+ rankings.addColumn(this::getWins).setHeader("Wins")
+ .setWidth("4em");
+ rankings.addColumn(this::getLosses).setHeader("Losses")
+ .setWidth("4em");
+ rankings.addColumn(this::getDraws).setHeader("Draws")
+ .setWidth("4em");
rankings.addColumn(TeamHasFormatRecord::getMean).setHeader("Mean")
.setWidth("6em");
rankings.addColumn(TeamHasFormatRecord::getStandardDeviation)
@@ -73,6 +113,24 @@ public RankingList()
container.add(header, rankings);
add(container);
+
+ // By default select the current game
+ Optional currentGame = GameService.getInstance().findGameByName(
+ (String) VaadinService.getCurrentRequest().getWrappedSession()
+ .getAttribute(CURRENT_GAME));
+ if (currentGame.isPresent())
+ {
+ String name = currentGame.get().getName();
+ for (IGame ig : Lookup.getDefault().lookupAll(IGame.class))
+ {
+ if (ig.getName().equals(name))
+ {
+ game.setValue(ig);
+ break;
+ }
+ }
+ }
+ game.setEnabled(games.size() > 1);
}
private String getRowIndex(TeamHasFormatRecord thfr)
@@ -84,7 +142,37 @@ private String getRowIndex(TeamHasFormatRecord thfr)
return String.valueOf(entry.getKey());
}
}
- return "TBD";
+ return "UNRANKED";
+ }
+
+ private String getWins(TeamHasFormatRecord thfr)
+ {
+ int total = 0;
+ for (Record r : thfr.getTeam().getRecordList())
+ {
+ total += r.getWins();
+ }
+ return String.valueOf(total);
+ }
+
+ private String getLosses(TeamHasFormatRecord thfr)
+ {
+ int total = 0;
+ for (Record r : thfr.getTeam().getRecordList())
+ {
+ total += r.getLosses();
+ }
+ return String.valueOf(total);
+ }
+
+ private String getDraws(TeamHasFormatRecord thfr)
+ {
+ int total = 0;
+ for (Record r : thfr.getTeam().getRecordList())
+ {
+ total += r.getDraws();
+ }
+ return String.valueOf(total);
}
private String getTeam(TeamHasFormatRecord thfr)
@@ -98,13 +186,21 @@ public void updateView()
//Update rankings based on format
Format f = format.getValue();
ranks.clear();
+ List items = new ArrayList<>();
if (f != null)
{
// Get all the rankings for this format.
- List items = new ArrayList<>();
ranks = RankingManager.getRankings(f);
- ranks.values().forEach(list->items.addAll(list));
- rankings.setItems(items);
+ ranks.values().forEach(list -> items.addAll(list));
+ }
+ else
+ {
+ if (game.getValue() != null)
+ {
+ ranks = RankingManager.getRankings(game.getValue().getName());
+ ranks.values().forEach(list -> items.addAll(list));
+ }
}
+ rankings.setItems(items);
}
}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentEditorDialog.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentEditorDialog.java
index ad8b416..a2b6add 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentEditorDialog.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentEditorDialog.java
@@ -15,9 +15,9 @@
*/
package com.github.javydreamercsw.tournament.manager.ui.views.tournamentlist;
-import java.time.LocalDate;
+import com.github.javydreamercsw.tournament.manager.ui.common.DoubletoIntegerConverter;
+
import java.time.LocalDateTime;
-import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
@@ -27,15 +27,12 @@
import com.github.javydreamercsw.database.storage.db.Tournament;
import com.github.javydreamercsw.database.storage.db.TournamentFormat;
import com.github.javydreamercsw.database.storage.db.server.TournamentService;
+import com.github.javydreamercsw.tournament.manager.ui.CustomDateTimePicker;
import com.github.javydreamercsw.tournament.manager.ui.common.AbstractEditorDialog;
import com.github.javydreamercsw.tournament.manager.ui.common.TournamentFormatLabelGenerator;
import com.vaadin.flow.component.combobox.ComboBox;
-import com.vaadin.flow.component.datepicker.DatePicker;
+import com.vaadin.flow.component.textfield.NumberField;
import com.vaadin.flow.component.textfield.TextField;
-import com.vaadin.flow.data.binder.Result;
-import com.vaadin.flow.data.binder.ValueContext;
-import com.vaadin.flow.data.converter.Converter;
-import com.vaadin.flow.data.converter.StringToIntegerConverter;
import com.vaadin.flow.data.provider.ListDataProvider;
import com.vaadin.flow.data.validator.StringLengthValidator;
@@ -46,13 +43,15 @@ public class TournamentEditorDialog extends AbstractEditorDialog
{
private static final long serialVersionUID = 1075907611022458493L;
private final TextField tournamentNameField = new TextField("Name");
- private final TextField winPoints = new TextField("Points per win");
- private final TextField lossPoints = new TextField("Points per loss");
- private final TextField drawPoints = new TextField("Points per draw");
+ private final NumberField winPoints = new NumberField("Points per win");
+ private final NumberField lossPoints = new NumberField("Points per loss");
+ private final NumberField drawPoints = new NumberField("Points per draw");
+ private final NumberField signupLength
+ = new NumberField("Signup time limit (Minutes)");
+ private final NumberField roundLength
+ = new NumberField("Round time limit (Minutes)");
private final ComboBox format = new ComboBox<>("Format");
- private final DatePicker signups = new DatePicker();
- private final ComboBox dateHour = new ComboBox<>();
- private final ComboBox dateMin = new ComboBox<>();
+ private final CustomDateTimePicker signupDate = new CustomDateTimePicker();
public TournamentEditorDialog(BiConsumer itemSaver,
Consumer itemDeleter)
@@ -75,95 +74,38 @@ protected void confirmDelete()
private void addSettings()
{
- List minutes = new ArrayList<>();
- for (int i = 1; i <= 60; i++)
- {
- minutes.add(i);
- }
-
LocalDateTime now = LocalDateTime.now();
- dateHour.setPlaceholder("Hour");
- dateHour.setDataProvider(new ListDataProvider<>(minutes.subList(0, 24)));
- if (getCurrentItem() != null)
- {
- dateHour.setValue(getCurrentItem().getSignupDate() == null ? null
- : getCurrentItem().getSignupDate().getHour());
- }
- dateHour.addValueChangeListener(event ->
- {
- updateSignupDate();
- });
-
- dateMin.setPlaceholder("Minutes");
- dateMin.setDataProvider(new ListDataProvider<>(minutes));
- if (getCurrentItem() != null)
- {
- dateMin.setValue(getCurrentItem().getSignupDate() == null ? null
- : getCurrentItem().getSignupDate().getMinute());
- }
- dateMin.addValueChangeListener(event ->
- {
- updateSignupDate();
- });
-
- signups.setMin(now.toLocalDate());
- signups.setPlaceholder("Date signups open.");
+ signupDate.setMinDate(now.toLocalDate());
+ signupDate.setLabel("Signups Start Date");
if (getCurrentItem() != null)
{
- signups.setValue(getCurrentItem().getSignupDate() == null ? null
- : getCurrentItem().getSignupDate().toLocalDate());
+ signupDate.setValue(getCurrentItem().getSignupDate() == null ? null
+ : getCurrentItem().getSignupDate());
}
- getFormLayout().add(signups);
- getFormLayout().add(dateHour);
- getFormLayout().add(dateMin);
- signups.addValueChangeListener(event ->
- {
- updateSignupDate();
- });
- getBinder().forField(signups)
- .withConverter(new Converter()
- {
- private static final long serialVersionUID = -4231752474899375998L;
-
- @Override
- public Result convertToModel(LocalDate value, ValueContext context)
- {
- LocalTime lt
- = LocalTime.of(dateHour.getValue() == null ? 0
- : dateHour.getValue(),
- dateMin.getValue() == null ? 0
- : dateMin.getValue());
- return Result.ok(LocalDateTime.of(value, lt));
- }
-
- @Override
- public LocalDate convertToPresentation(LocalDateTime value, ValueContext context)
- {
- if (value != null)
- {
- dateHour.setValue(value.getHour());
- dateMin.setValue(value.getMinute());
- }
- return value == null ? null : value.toLocalDate();
- }
- })
+ getFormLayout().add(signupDate);
+ signupDate.addValueChangeListener(event -> validate());
+ getBinder().forField(signupDate)
.bind(Tournament::getSignupDate, Tournament::setSignupDate);
- ComboBox signupLength = new ComboBox<>();
- signupLength.setPlaceholder("Signup time limit.");
- signupLength.setDataProvider(new ListDataProvider<>(minutes));
+ signupLength.setMin(0);
+ signupLength.setStep(1);
+ signupLength.setHasControls(true);
+ signupLength.addValueChangeListener(event -> validate());
getFormLayout().add(signupLength);
getBinder().forField(signupLength)
+ .withConverter(new DoubletoIntegerConverter())
.bind(Tournament::getSignupTimeLimit, Tournament::setSignupTimeLimit);
- ComboBox roundLength = new ComboBox<>();
- roundLength.setPlaceholder("Round time limit.");
- roundLength.setDataProvider(new ListDataProvider<>(minutes));
+ roundLength.setMin(0);
+ roundLength.setStep(1);
+ roundLength.setHasControls(true);
+ roundLength.addValueChangeListener(event -> validate());
getFormLayout().add(roundLength);
getBinder().forField(roundLength)
+ .withConverter(new DoubletoIntegerConverter())
.bind(Tournament::getRoundTimeLimit, Tournament::setRoundTimeLimit);
}
@@ -192,44 +134,46 @@ private void addNameField()
}
}
return valid;
- },
- "Tournament name must be unique")
+ }, "Tournament name must be unique")
.bind(Tournament::getName, Tournament::setName);
}
private void addNameWinPoints()
{
+ winPoints.setMin(0);
+ winPoints.setStep(0.5);
+ winPoints.setHasControls(true);
getFormLayout().add(winPoints);
winPoints.addValueChangeListener(listener -> validate());
getBinder().forField(winPoints)
- .withConverter(
- new StringToIntegerConverter("Must enter a number"))
.bind(Tournament::getWinPoints, Tournament::setWinPoints);
}
private void addNameLossPoints()
{
+ lossPoints.setMin(0);
+ lossPoints.setStep(0.5);
+ lossPoints.setHasControls(true);
getFormLayout().add(lossPoints);
lossPoints.addValueChangeListener(listener -> validate());
getBinder().forField(lossPoints)
- .withConverter(
- new StringToIntegerConverter("Must enter a number"))
.bind(Tournament::getLossPoints, Tournament::setLossPoints);
}
private void addNameDrawPoints()
{
+ drawPoints.setMin(0);
+ drawPoints.setStep(0.5);
+ drawPoints.setHasControls(true);
getFormLayout().add(drawPoints);
drawPoints.addValueChangeListener(listener -> validate());
getBinder().forField(drawPoints)
- .withConverter(
- new StringToIntegerConverter("Must enter a number"))
.bind(Tournament::getDrawPoints, Tournament::setDrawPoints);
}
@@ -262,42 +206,44 @@ private void addTournamentFormat()
@Override
protected boolean isValid()
{
- if (getCurrentItem().getTournamentFormat() == null)
+ if (tournamentNameField.getValue() == null
+ || tournamentNameField.getValue().isBlank())
+ {
+ // Invalid name
+ return false;
+ }
+ if (format.getValue() == null)
{
// No format
return false;
}
- if (getCurrentItem().getWinPoints() <= getCurrentItem().getLossPoints()
- || getCurrentItem().getWinPoints() <= getCurrentItem().getDrawPoints())
+ if (winPoints.getValue() <= lossPoints.getValue()
+ || winPoints.getValue() <= drawPoints.getValue())
{
// Win points are less than loss and/or draw.
return false;
}
-// if (getCurrentItem().getNoShowTimeLimit() == null
-// || (getCurrentItem().getNoShowTimeLimit().getHour()
-// + getCurrentItem().getNoShowTimeLimit().getMinute() == 0))
-// {
-// // Must be valid
-// return false;
-// }
- // All are zero
- return getCurrentItem().getDrawPoints() + getCurrentItem().getLossPoints()
- + getCurrentItem().getWinPoints() > 0;
- }
+ if (signupDate.getValue() == null)
+ {
+ return false;
+ }
- private void updateSignupDate()
- {
-// if (signups.getValue() != null
-// && dateHour.getValue() != null
-// && dateMin.getValue() != null)
-// {
-// LocalDateTime ldt = LocalDateTime.of(signups.getValue().getYear(),
-// signups.getValue().getMonthValue(),
-// signups.getValue().getDayOfMonth(),
-// dateHour.getValue(), dateMin.getValue());
-// System.out.println("New Date: " + ldt);
-// getCurrentItem().setSignupDate(ldt);
-// }
+ if (roundLength.getValue() == null
+ || roundLength.getValue() <= 0)
+ {
+ // Must be valid
+ return false;
+ }
+
+ if (signupLength.getValue() == null
+ || signupLength.getValue() <= 0)
+ {
+ // Must be valid
+ return false;
+ }
+ // All are zero
+ return drawPoints.getValue() + lossPoints.getValue()
+ + winPoints.getValue() > 0;
}
}
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentList.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentList.java
index 7c9f135..b845142 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentList.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/tournamentlist/TournamentList.java
@@ -125,7 +125,7 @@ private void addContent()
grid.addColumn(new ComponentRenderer<>(this::createEditButton))
.setFlexGrow(0);
grid.addColumn(new ComponentRenderer<>(this::createControlButton))
- .setFlexGrow(0);
+ .setFlexGrow(1);
grid.setSelectionMode(SelectionMode.NONE);
container.add(header, grid);
diff --git a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/welcome/Welcome.java b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/welcome/Welcome.java
index 6fe3060..27a49eb 100644
--- a/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/welcome/Welcome.java
+++ b/TournamentManagerWeb/src/main/java/com/github/javydreamercsw/tournament/manager/ui/views/welcome/Welcome.java
@@ -13,10 +13,10 @@
import com.github.javydreamercsw.database.storage.db.server.PlayerService;
import com.github.javydreamercsw.tournament.manager.api.IGame;
import com.github.javydreamercsw.tournament.manager.ui.MainLayout;
+import com.github.javydreamercsw.tournament.manager.ui.common.GameLabelGenerator;
import com.github.javydreamercsw.tournament.manager.ui.views.TMView;
import com.vaadin.flow.component.HasValue.ValueChangeEvent;
import com.vaadin.flow.component.HasValue.ValueChangeListener;
-import com.vaadin.flow.component.ItemLabelGenerator;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.Notification.Position;
@@ -30,6 +30,7 @@
public class Welcome extends TMView
{
private static final long serialVersionUID = 1252548231807630022L;
+ private final ComboBox cb = new ComboBox<>();
static
{
@@ -99,11 +100,7 @@ public Welcome()
addClassName("welcome-list");
setDefaultHorizontalComponentAlignment(Alignment.STRETCH);
TextArea mda = new TextArea("Hello world !");
- List games = new ArrayList<>();
- games.addAll(Lookup.getDefault().lookupAll(IGame.class));
- ComboBox cb = new ComboBox<>();
cb.setLabel("Select a Game: ");
- cb.setDataProvider(new ListDataProvider<>(games));
cb.setItemLabelGenerator(new GameLabelGenerator());
cb.addValueChangeListener(new ValueChangeListener()
{
@@ -116,12 +113,6 @@ public void valueChanged(ValueChangeEvent e)
saveValue(CURRENT_GAME, gameAPI.getName());
}
});
- cb.setEnabled(games.size() > 1);
- if (games.size() == 1)
- {
- // Select the only option
- cb.setValue(games.get(0));
- }
add(mda);
add(cb);
@@ -130,17 +121,14 @@ public void valueChanged(ValueChangeEvent e)
@Override
public void updateView()
{
- // Nothing to do
- }
-
- private class GameLabelGenerator implements ItemLabelGenerator
- {
- private static final long serialVersionUID = -4396467477758231860L;
-
- @Override
- public String apply(IGame g)
+ List games = new ArrayList<>();
+ games.addAll(Lookup.getDefault().lookupAll(IGame.class));
+ cb.setDataProvider(new ListDataProvider<>(games));
+ cb.setEnabled(games.size() > 1);
+ if (games.size() == 1)
{
- return g.getName();
+ // Select the only option
+ cb.setValue(games.get(0));
}
}
}
diff --git a/TournamentManagerWeb/src/main/webapp/META-INF/context.xml b/TournamentManagerWeb/src/main/webapp/META-INF/context.xml
index e5c384f..dc2b9fb 100644
--- a/TournamentManagerWeb/src/main/webapp/META-INF/context.xml
+++ b/TournamentManagerWeb/src/main/webapp/META-INF/context.xml
@@ -1,41 +1,35 @@
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/nb-configuration.xml b/nb-configuration.xml
deleted file mode 100644
index a65c451..0000000
--- a/nb-configuration.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- JDK_1.8
-
-
diff --git a/nbactions.xml b/nbactions.xml
new file mode 100644
index 0000000..83d75ad
--- /dev/null
+++ b/nbactions.xml
@@ -0,0 +1,18 @@
+
+
+
+ CUSTOM-Update Versions
+ Update Versions
+
+ versions:use-latest-versions
+
+
+
+ CUSTOM-Commit Updated Versions
+ Commit Updated Versions
+
+ versions:update-child-modules
+ versions:commit
+
+
+