From dae126f7216ea2f5af1821a9a4fe4ea567207227 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Wed, 14 Feb 2024 19:55:50 +0100 Subject: [PATCH] Project details stage half implemented --- database.sql | 6 +++++- src/main/java/servlet/Database.java | 19 +++++++++++++++++++ src/main/java/servlet/FormGenerator.java | 14 +++++++++++++- src/main/java/servlet/Survey.java | 18 ++++++++++++++++-- 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/database.sql b/database.sql index 5a5d6e1..0f34e15 100644 --- a/database.sql +++ b/database.sql @@ -11,4 +11,8 @@ CREATE TABLE IF NOT EXISTS Answers ( FOREIGN KEY (name) REFERENCES Respondents(name) ); -INSERT INTO Respondents (name) VALUES ('user1'); +CREATE TABLE IF NOT EXISTS ProjectDetails ( + projectID INT PRIMARY KEY, + projectName VARCHAR(255), + projectDescription TEXT +); \ No newline at end of file diff --git a/src/main/java/servlet/Database.java b/src/main/java/servlet/Database.java index 59d4f8a..360009d 100644 --- a/src/main/java/servlet/Database.java +++ b/src/main/java/servlet/Database.java @@ -55,6 +55,25 @@ public class Database implements AutoCloseable { // Using the try-with-resources syntax, this will call ps.close() automatically } + public boolean addProjectDetails(String name, String description) { + String sql = "insert into ProjectDetails (projectName, projectDescription) values(?,?)"; + + try (PreparedStatement ps = conn.prepareStatement(sql)) { + ps.setString(1, name); + ps.setString(2, description); + ps.executeUpdate(); + return true; + } catch (SQLException e) { + if (e.getErrorCode() == 1062 && e.getSQLState().equals("23000")) { + // duplicate key error + System.out.println(name + " already exists in the database"); + } else { + printSqlError(e); + } + return false; + } + } + public boolean addAnswer(String name, String answerOne, String answerTwo, String answerThree, String answerFour) { String sql = "insert into Answers (answerOne, answerTwo, answerThree, answerFour, name) values(?,?,?,?,?)"; diff --git a/src/main/java/servlet/FormGenerator.java b/src/main/java/servlet/FormGenerator.java index 3572d2b..d70cfcd 100644 --- a/src/main/java/servlet/FormGenerator.java +++ b/src/main/java/servlet/FormGenerator.java @@ -22,7 +22,19 @@ public class FormGenerator { html += "

'; return html; } - + + public String projectDetailsRequestForm() { + String[][] variables = {{"Project Name", "proj_name"}, {"Project Description", "proj_desc"}}; + String html = "

Please give us some information about your project"; + html += "

'; + return html; + } /* * Form for requesting success with respect to four factors diff --git a/src/main/java/servlet/Survey.java b/src/main/java/servlet/Survey.java index db9c449..024cfbe 100644 --- a/src/main/java/servlet/Survey.java +++ b/src/main/java/servlet/Survey.java @@ -21,6 +21,7 @@ public class Survey extends HttpServlet { // Define states private static final int NEED_NAME = 0; + private static final int NEED_PROJECT_INFO = 1; private static final int NEED_PROJECT_DATA = 2; private FormGenerator formGenerator = new FormGenerator(); @@ -86,8 +87,8 @@ public class Survey extends HttpServlet { if (name != null) { if (nameOk(db, name)) { session.setAttribute("name", name); // save the name in the session - state = NEED_PROJECT_DATA; - out.println(formGenerator.projectDataRequestForm()); + state = NEED_PROJECT_INFO; + out.println(formGenerator.projectDetailsRequestForm()); } else { out.println("That was not a valid name. Maybe it is already taken by someone else."); @@ -97,6 +98,19 @@ public class Survey extends HttpServlet { out.println(formGenerator.nameRequestForm()); } break; + case NEED_PROJECT_INFO: + name = (String) session.getAttribute("name"); + String description = request.getParameter("proj_desc"); + String proj_name = request.getParameter("proj_name"); + System.out.println("description: " + description); + if (description != null) { + state = NEED_PROJECT_DATA; + db.addProjectDetails(proj_name, description); + out.println(formGenerator.projectDataRequestForm()); + } else { + out.println(formGenerator.projectDetailsRequestForm()); + } + break; case NEED_PROJECT_DATA: int s11 = 0, s12 = 0, s13 = 0, s14 = 0; name = (String) session.getAttribute("name");