diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateRequestObjectException.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateRequestObjectException.java new file mode 100644 index 0000000000000000000000000000000000000000..15b31679632ae10ef6fa0854d631d66ecc39546b --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateRequestObjectException.java @@ -0,0 +1,4 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Exception; + +public class DuplicateRequestObjectException extends Exception { +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateTileException.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateTileException.java new file mode 100644 index 0000000000000000000000000000000000000000..c56d0d3c29c0bb12c7440e1d02e1a1fce27c3df2 --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/DuplicateTileException.java @@ -0,0 +1,4 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Exception; + +public class DuplicateTileException extends Exception { +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/RequestObjectNotFoundException.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/RequestObjectNotFoundException.java new file mode 100644 index 0000000000000000000000000000000000000000..3b99757c5573caad686c0bd8ad33c0b40cdc1d4e --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/RequestObjectNotFoundException.java @@ -0,0 +1,4 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Exception; + +public class RequestObjectNotFoundException extends Exception { +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/TileNotFoundException.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/TileNotFoundException.java new file mode 100644 index 0000000000000000000000000000000000000000..3e34b905a407c59d349a9b5a36bf2fb30917f1f4 --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Exception/TileNotFoundException.java @@ -0,0 +1,4 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Exception; + +public class TileNotFoundException extends Exception { +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/RequestObjectDAO.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/RequestObjectDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..8f4a62c41baa439b5b4950ba64afd2f160658519 --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/RequestObjectDAO.java @@ -0,0 +1,41 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Persistence; + +import com.galaxytrucker.galaxytruckerreloaded.Server.Exception.DuplicateRequestObjectException; +import com.galaxytrucker.galaxytruckerreloaded.Server.Exception.RequestObjectNotFoundException; +import com.galaxytrucker.galaxytruckerreloaded.Server.RequestObject; + +/** Used for retracing game steps */ +public class RequestObjectDAO extends ObjectDAO<RequestObject> { + + /** Add a new request object to the database + * @param o - the request object to add + * @throws DuplicateRequestObjectException if the request object already exists in the database */ + @Override + public void persist(RequestObject o) throws DuplicateRequestObjectException { + try { + entityManager.getTransaction().begin(); + entityManager.persist(o); + entityManager.getTransaction().commit(); + } + catch (Exception e){ + e.printStackTrace(); + throw new DuplicateRequestObjectException(); + } + } + + /** Remove an existing request object from the database + * @param o - the request object to remove + * @throws RequestObjectNotFoundException if the request object cannot be found in the database */ + @Override + public void remove(RequestObject o) throws RequestObjectNotFoundException { + try { + entityManager.getTransaction().begin(); + entityManager.persist(o); + entityManager.getTransaction().commit(); + } + catch (Exception e){ + e.printStackTrace(); + throw new RequestObjectNotFoundException(); + } + } +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/TileDAO.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/TileDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..452bcdcc6f12ff4da8847acef927af2eba68b783 --- /dev/null +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Persistence/TileDAO.java @@ -0,0 +1,56 @@ +package com.galaxytrucker.galaxytruckerreloaded.Server.Persistence; + +import com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout.Tile; +import com.galaxytrucker.galaxytruckerreloaded.Server.Exception.DuplicateTileException; +import com.galaxytrucker.galaxytruckerreloaded.Server.Exception.TileNotFoundException; + +/** Handles tile objects in the database */ +public class TileDAO extends ObjectDAO<Tile> { + + /** Add a new tile to the database + * @param t - the tile to add + * @throws DuplicateTileException if the tile already exists in the database */ + @Override + public void persist(Tile t) throws DuplicateTileException { + try { + entityManager.getTransaction().begin(); + entityManager.persist(t); + entityManager.getTransaction().commit(); + } + catch (Exception e){ + e.printStackTrace(); + throw new DuplicateTileException(); + } + } + + /** Update an existing tile in the database + * @param t - the tile to update + * @throws TileNotFoundException if the tile cannot be found in the database */ + public void update(Tile t) throws TileNotFoundException { + try { + entityManager.getTransaction().begin(); + entityManager.merge(t); + entityManager.getTransaction().commit(); + } + catch (Exception e){ + e.printStackTrace(); + throw new TileNotFoundException(); + } + } + + /** Remove a tile from the database + * @param t - the tile to remove + * @throws TileNotFoundException if the tile cannot be found in the database */ + @Override + public void remove(Tile t) throws TileNotFoundException { + try { + entityManager.getTransaction().begin(); + entityManager.remove(t); + entityManager.getTransaction().commit(); + } + catch (Exception e){ + e.printStackTrace(); + throw new TileNotFoundException(); + } + } +} diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/RequestObject.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/RequestObject.java index 5d900d63f65287c81d5ae28478d47148e9feda38..61bddc79bc9c5f961e528abe70ee223cebac21ec 100644 --- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/RequestObject.java +++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/RequestObject.java @@ -6,15 +6,26 @@ import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Trader; import com.galaxytrucker.galaxytruckerreloaded.Model.Ship; import com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout.Room; import com.galaxytrucker.galaxytruckerreloaded.Model.Weapons.Weapon; -import lombok.Getter; -import lombok.Setter; +import lombok.*; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import java.io.Serializable; import java.util.List; /** Request sent to the server */ @Getter @Setter -public class RequestObject { +@RequiredArgsConstructor(access = AccessLevel.PUBLIC) +@NoArgsConstructor(access = AccessLevel.PUBLIC) +@Entity +public class RequestObject implements Serializable { + + /** ID */ + @Id + private int id; /** Type of Request */ private RequestType requestType; @@ -23,23 +34,31 @@ public class RequestObject { private String username; /** Ship */ + @OneToOne private Ship ship; /** Trader */ + @OneToOne private Trader trader; /** Planet */ + @OneToOne private Planet planet; /** Crew */ + @OneToOne private Crew crew; /** List of crew */ + @OneToMany private List<Crew> moreCrew; /** Room */ + @OneToOne private Room room; + /** Weapon */ + @OneToOne private Weapon weapon; /** Heal amount */ @@ -47,8 +66,7 @@ public class RequestObject { /** Damage amount */ private int damageAmount; + /** int - eg fuel, rockets, hp for trader */ private int intAmount; - - }