diff --git a/mysql/CreateDB.sql b/mysql/CreateDB.sql
index 474e80c..38fae84 100644
--- a/mysql/CreateDB.sql
+++ b/mysql/CreateDB.sql
@@ -12,10 +12,12 @@ CREATE TABLE Game (
description text DEFAULT(""),
shortDescription text DEFAULT(""),
releaseDate date DEFAULT("1999-09-09"),
- state ENUM("Released", "Beta", "Alpha", "Coming_soon", "Unlisted") NOT NULL DEFAULT("Coming_soon"),
+ state ENUM("Released", "Beta", "Alpha", "Unlisted") NOT NULL DEFAULT("Alpha"),
pegi int NOT NULL DEFAULT(18),
publisher varchar(30) NOT NULL DEFAULT("Microsoft"),
- primary key(id)
+ primary key(id),
+ constraint number_price_game
+ check(price >= 0 and price <= 1000)
);
CREATE TABLE Category (
@@ -95,7 +97,9 @@ CREATE TABLE Purchase (
CONSTRAINT usernameConsPurchase
foreign key (username) references User (username),
UNIQUE (gameId, username), -- TEST: IF WORK
- primary key (id)
+ primary key (id),
+ constraint number_price_purchase
+ check(price >= 0 and price <= 1000)
);
CREATE TABLE Review (
diff --git a/src/main/java/control/BaseServlet.java b/src/main/java/control/BaseServlet.java
index 406ad94..acf2483 100644
--- a/src/main/java/control/BaseServlet.java
+++ b/src/main/java/control/BaseServlet.java
@@ -51,13 +51,10 @@ protected boolean validParameters(HttpServletRequest request, HttpServletRespons
return true;
}
- protected void showError(HttpServletRequest request, HttpServletResponse response, String message, String path) {
+ protected void showError(HttpServletRequest request, HttpServletResponse response, String message, String path) throws ServletException, IOException {
request.setAttribute("logError", message);
RequestDispatcher rs = request.getRequestDispatcher(path);
- try {
- rs.forward(request, response);
- } catch (ServletException | IOException e) {
- //AAAAAAAA
- }
+
+ rs.forward(request, response);
}
}
diff --git a/src/main/java/control/DeleteFromCartServlet.java b/src/main/java/control/DeleteFromCartServlet.java
index 7f48e71..f659da3 100644
--- a/src/main/java/control/DeleteFromCartServlet.java
+++ b/src/main/java/control/DeleteFromCartServlet.java
@@ -20,7 +20,7 @@
import model.Cart;
import model.Interested;
import model.User;
-
+import utility.BackendException;
import utility.InvalidParameters;
@WebServlet("/DeleteFromCartServlet")
@@ -70,7 +70,7 @@ protected synchronized void doGet(HttpServletRequest request, HttpServletRespons
try {
interestedDAO.removeInterest(interested);
} catch (SQLException e) {
- e.printStackTrace();
+ throw new BackendException();
}
//Add interest to the database
}
diff --git a/src/main/java/dao/GameDAO.java b/src/main/java/dao/GameDAO.java
index 0f45f83..a431dbd 100644
--- a/src/main/java/dao/GameDAO.java
+++ b/src/main/java/dao/GameDAO.java
@@ -86,6 +86,10 @@ public void updateGame (Game game) throws SQLException {
}
}
+ private static final String COUNTGAMEQUERY = "SELECT Count(DISTINCT id) as count"
+ + " FROM Game as G, Belongs as B, Category as C "
+ + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in ";
+
public int countGames(List categories, int maxPrice, int pegi, String searchText, boolean unListed) throws SQLException {
int size = 0;
@@ -110,17 +114,13 @@ public int countGames(List categories, int maxPrice, int pegi, String
//Construct query string
//Construct query
- String query = "SELECT Count(DISTINCT id) as count"
- + " FROM Game as G, Belongs as B, Category as C "
- + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in "
+ String query = COUNTGAMEQUERY
+ categoriesToSearch
+ "AND G.price <= ? AND "
+ "G.pegi <= ? AND INSTR(G.name, ?) > 0 ";
if(! unListed)
- query = "SELECT Count(DISTINCT id) as count"
- + " FROM Game as G, Belongs as B, Category as C "
- + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in "
+ query = COUNTGAMEQUERY
+ categoriesToSearch
+ "AND G.price <= ? AND "
+ "G.state != 'unlisted' AND "
@@ -158,6 +158,10 @@ public int countGames(List categories, int maxPrice, int pegi, String
return size;
}
+ private static final String RETRIEVEGAMEQUERY = "SELECT DISTINCT id, price, G.name, description, shortDescription, releaseDate, state, pegi, publisher"
+ + " FROM Game as G, Belongs as B, Category as C "
+ + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in ";
+
public List retrieveGames(List categories, int maxPrice, int pegi, String searchText, String order, int limit, int offset, boolean unListed) throws SQLException {
List games = new ArrayList<>();
@@ -182,9 +186,7 @@ public List retrieveGames(List categories, int maxPrice, int peg
//Construct query string
//Construct query
- String query = "SELECT DISTINCT id, price, G.name, description, shortDescription, releaseDate, state, pegi, publisher"
- + " FROM Game as G, Belongs as B, Category as C "
- + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in "
+ String query = RETRIEVEGAMEQUERY
+ categoriesToSearch
+ "AND G.price <= ? AND "
+ "G.pegi <= ? AND INSTR(G.name, ?) > 0 "
@@ -192,9 +194,7 @@ public List retrieveGames(List categories, int maxPrice, int peg
+ " LIMIT ? OFFSET ?";
if(! unListed) {
- query = "SELECT DISTINCT id, price, G.name, description, shortDescription, releaseDate, state, pegi, publisher"
- + " FROM Game as G, Belongs as B, Category as C "
- + "WHERE G.id = B.gameId AND C.name = B.categoryName AND C.name in "
+ query = RETRIEVEGAMEQUERY
+ categoriesToSearch
+ "AND G.price <= ? AND "
+ "G.pegi <= ? AND INSTR(G.name, ?) > 0 "
diff --git a/src/main/java/dao/ImageDAO.java b/src/main/java/dao/ImageDAO.java
index 1cbd333..55ccbf2 100644
--- a/src/main/java/dao/ImageDAO.java
+++ b/src/main/java/dao/ImageDAO.java
@@ -17,7 +17,7 @@ public ImageDAO(DataSource ds) {
super(ds);
}
- public synchronized Image getImageFromID(String Id) throws SQLException {
+ public synchronized Image getImageFromID(String id) throws SQLException {
Image image = null;
@@ -28,7 +28,7 @@ public synchronized Image getImageFromID(String Id) throws SQLException {
//Retrieve connection and make prepared statement
//Create query
- ps.setString(1, Id);
+ ps.setString(1, id);
//Create query
//Execute query
@@ -40,7 +40,7 @@ public synchronized Image getImageFromID(String Id) throws SQLException {
//Create the image object
image = new Image();
- image.setId(Id);
+ image.setId(id);
image.setAltText(rs.getString("alt"));
byte[] bytes = rs.getBytes("raw");
image.setBytes(bytes);
diff --git a/src/main/java/model/Game.java b/src/main/java/model/Game.java
index 3690a11..de59220 100644
--- a/src/main/java/model/Game.java
+++ b/src/main/java/model/Game.java
@@ -88,7 +88,6 @@ public enum State{
RELEASED("Released"),
BETA("Beta"),
ALPHA("Alpha"),
- COMING_SOON("Coming_soon"),
UNLISTED("Unlisted");
private String value;
diff --git a/src/main/webapp/CSS/CartStyle.css b/src/main/webapp/CSS/CartStyle.css
index 97ac7d7..10b1b66 100644
--- a/src/main/webapp/CSS/CartStyle.css
+++ b/src/main/webapp/CSS/CartStyle.css
@@ -12,5 +12,4 @@ p.gamePrice span.removeButton{
#emptyCartButton{
font-size: 12px;
- float:right;
}
\ No newline at end of file
diff --git a/src/main/webapp/Cart.jsp b/src/main/webapp/Cart.jsp
index 3941d66..afc950c 100644
--- a/src/main/webapp/Cart.jsp
+++ b/src/main/webapp/Cart.jsp
@@ -12,7 +12,8 @@
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
Cart
diff --git a/src/main/webapp/Catalog.jsp b/src/main/webapp/Catalog.jsp
index 6f26537..c0116d7 100644
--- a/src/main/webapp/Catalog.jsp
+++ b/src/main/webapp/Catalog.jsp
@@ -10,7 +10,8 @@
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
diff --git a/src/main/webapp/PersonalGamePage.jsp b/src/main/webapp/PersonalGamePage.jsp
index 1e35f93..ab094f4 100644
--- a/src/main/webapp/PersonalGamePage.jsp
+++ b/src/main/webapp/PersonalGamePage.jsp
@@ -13,7 +13,8 @@
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
Personal Game Page
diff --git a/src/main/webapp/Register.jsp b/src/main/webapp/Register.jsp
index 34e1679..1668568 100644
--- a/src/main/webapp/Register.jsp
+++ b/src/main/webapp/Register.jsp
@@ -11,7 +11,8 @@ import="org.owasp.encoder.Encode" %>
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
Sign up to Gaming World
diff --git a/src/main/webapp/Scripts/CartScript.js b/src/main/webapp/Scripts/CartScript.js
index 3ac8acb..d41b9d6 100644
--- a/src/main/webapp/Scripts/CartScript.js
+++ b/src/main/webapp/Scripts/CartScript.js
@@ -6,7 +6,7 @@ let USDollar = new Intl.NumberFormat('en-US', {
//when document is ready
window.addEventListener('load', function () {
//format prices
- classes = document.getElementsByClassName("price")
+ let classes = document.getElementsByClassName("price")
for( i = 0; i 0 ) {
$('#gameListSection').append("
")
let pageSize = 10;
diff --git a/src/main/webapp/Scripts/GameLibrary.js b/src/main/webapp/Scripts/GameLibrary.js
index 7faf8b4..7ef35b1 100644
--- a/src/main/webapp/Scripts/GameLibrary.js
+++ b/src/main/webapp/Scripts/GameLibrary.js
@@ -7,8 +7,8 @@ let USDollar = new Intl.NumberFormat('en-US', {
$(document).ready(function() {
//format prices
- var classes = document.getElementsByClassName("price")
- for(var i = 0; i < classes.length; i++){
+ let classes = document.getElementsByClassName("price")
+ for(let i = 0; i < classes.length; i++){
classes[i].innerHTML = USDollar.format(classes[i].innerHTML/100);
}
//format prices
diff --git a/src/main/webapp/Scripts/PersonalGamePageScript.js b/src/main/webapp/Scripts/PersonalGamePageScript.js
index d20f1f8..e9760e6 100644
--- a/src/main/webapp/Scripts/PersonalGamePageScript.js
+++ b/src/main/webapp/Scripts/PersonalGamePageScript.js
@@ -10,15 +10,15 @@ function formatPrice(price) {
//Convert price of game in dollars
$(document).ready(function() {
- var stringPrice = document.getElementById("buyButton").innerHTML;
+ let stringPrice = document.getElementById("buyButton").innerHTML;
document.getElementById("buyButton").innerHTML = formatPrice(stringPrice);
});
//Convert price of game in dollars
//Function to change schede requirement
function changeSchedeReq(id) {
- schedes = document.getElementsByClassName("reqSchede");
- for(schede in schedes) {
+ let schedes = document.getElementsByClassName("reqSchede");
+ for(let schede in schedes) {
schedes[schede].style = "display: none";
}
@@ -32,7 +32,7 @@ function addToCart(id) {
$.get("/GamingWorldShop/AddToCartServlet?gameId="+id+"&category=cart");
- str = $('#cartItemCount').html();
+ let str = $('#cartItemCount').html();
str = str.replace(/\s/g, '');
if(str == "") {
diff --git a/src/main/webapp/Scripts/Purchase.js b/src/main/webapp/Scripts/Purchase.js
index 5bdf023..ce2e7b3 100644
--- a/src/main/webapp/Scripts/Purchase.js
+++ b/src/main/webapp/Scripts/Purchase.js
@@ -1,10 +1,11 @@
var errorMessages = {
- fname: "The name can contain only characters",
+ fname: "The name can contain only characters separeted by a space",
state: "The state is a pair of char",
zip: "ZipCode is a number of 5 digit",
- cname: "The name on card can contain only characters",
+ cname: "The name on card can contain only characters separeted by a spaces",
cvv: "CVV is a number of 3 digit",
- ccnum: "Card number follow this pattern: dddd-dddd-dddd-dddd"
+ ccnum: "Card number follow this pattern: dddd-dddd-dddd-dddd",
+ email: "Email must follow this pattern: name@domain.com"
}
//Function to check validity of a field
@@ -31,7 +32,7 @@ function checkField(field) {
function checkForm(e) {
//Check if all the values of the fields are valid
- for(f in errorMessages) {
+ for(let f in errorMessages) {
let i = f;
//In case the field hasn't a valid value
if(! checkField(i)) {
@@ -53,7 +54,7 @@ function checkForm(e) {
var oldLength = 0;
function assistCardNumber() {
- textContent = document.getElementById("ccnum").value;
+ let textContent = document.getElementById("ccnum").value;
if(oldLength < textContent.length) {
if(textContent.length == 4 || textContent.length == 9 || textContent.length == 14)
diff --git a/src/main/webapp/Scripts/PurchaseListScript.js b/src/main/webapp/Scripts/PurchaseListScript.js
index ebb7c3a..9d2b01b 100644
--- a/src/main/webapp/Scripts/PurchaseListScript.js
+++ b/src/main/webapp/Scripts/PurchaseListScript.js
@@ -20,12 +20,11 @@ $(document).ready(function() {
//Function to update the page
function update() {
//Retrieve parameter from the form
- var data = $("form").serializeArray();
- console.log(data);
+ let data = $("form").serializeArray();
//Retrieve parameter from the form
//Retrieve purchases from the db
- var url="/GamingWorldShop/admin/SearchPurchasesServlet";
+ let url="/GamingWorldShop/admin/SearchPurchasesServlet";
$.get(url, data, function buildTable(responseData) {
$('table tbody').empty();
diff --git a/src/main/webapp/Scripts/RegisterScript.js b/src/main/webapp/Scripts/RegisterScript.js
index 5ae9936..9500b87 100644
--- a/src/main/webapp/Scripts/RegisterScript.js
+++ b/src/main/webapp/Scripts/RegisterScript.js
@@ -10,7 +10,7 @@ function validateFormElem(formElem, span, errorMessage) {
if(formElem.checkValidity()){
//Remove error for pattern mismatching
- var doc = new DOMParser().parseFromString(span.innerHTML, "text/html")
+ let doc = new DOMParser().parseFromString(span.innerHTML, "text/html")
formElem.classList.remove("error");
if(errorMessage != null && doc.documentElement.textContent == errorMessage) {
formElem.classList.remove("error");
diff --git a/src/main/webapp/admin/PurchasesList.jsp b/src/main/webapp/admin/PurchasesList.jsp
index d4c7ec0..03073be 100644
--- a/src/main/webapp/admin/PurchasesList.jsp
+++ b/src/main/webapp/admin/PurchasesList.jsp
@@ -11,7 +11,8 @@
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
Purchase
diff --git a/src/main/webapp/admin/UpdateGame.jsp b/src/main/webapp/admin/UpdateGame.jsp
index 823f183..ea6a159 100644
--- a/src/main/webapp/admin/UpdateGame.jsp
+++ b/src/main/webapp/admin/UpdateGame.jsp
@@ -10,7 +10,8 @@
+ integrity = "sha512-pumBsjNRGGqkPzKHndZMaAG+bir374sORyzM3uulLV14lN5LyykqNk8eEeUlUkB3U0M4FApyaHraT65ihJhDpQ=="
+ crossorigin="anonymous">
@@ -50,11 +51,11 @@
Description: