diff --git a/nginx/public/index.html b/nginx/public/index.html
index df91054..3f47660 100644
--- a/nginx/public/index.html
+++ b/nginx/public/index.html
@@ -65,6 +65,7 @@
Now with dark mode for the true programmers!
+
diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala
index 1db211b..f6ff93a 100644
--- a/src/main/scala/model/OfficeHoursServer.scala
+++ b/src/main/scala/model/OfficeHoursServer.scala
@@ -117,6 +117,8 @@ class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String]
i.sendEvent("queue", server.queueJSON_TA())
}
+ }else{
+ socket.sendEvent("changeUsername","This username has been used by another student in the queue, please use another username.")
}
}
}
diff --git a/src/main/scala/model/database/Database.scala b/src/main/scala/model/database/Database.scala
index bda7b4a..df588dc 100644
--- a/src/main/scala/model/database/Database.scala
+++ b/src/main/scala/model/database/Database.scala
@@ -45,8 +45,22 @@ class Database extends DatabaseAPI {
statement.execute()
}
+ override def moveToEndOfQueue(student: StudentInQueue): Unit = {
+ val statement1 = connection.prepareStatement("DELETE FROM queue WHERE username=?")
+ statement1.setString(1, student.username)
+ statement1.execute()
+
+ val statement2 = connection.prepareStatement("INSERT INTO queue VALUE (?, ?, ?)")
+ statement2.setString(1, student.username)
+ statement2.setString(2, student.helpDescription)
+ statement2.setLong(3, System.nanoTime())
+ statement2.execute()
+ }
-
+ override def clearQueue:Unit = {
+ val statement = connection.prepareStatement("TRUNCATE TABLE queue")
+ statement.execute()
+ }
override def removeStudentFromQueue(username: String): Unit = {
val statement = connection.prepareStatement("DELETE FROM queue WHERE username=?")
statement.setString(1, username)
diff --git a/src/main/scala/model/database/DatabaseAPI.scala b/src/main/scala/model/database/DatabaseAPI.scala
index 61b90e1..9052b3a 100644
--- a/src/main/scala/model/database/DatabaseAPI.scala
+++ b/src/main/scala/model/database/DatabaseAPI.scala
@@ -5,6 +5,8 @@ import model.StudentInQueue
trait DatabaseAPI {
def addStudentToQueue(student: StudentInQueue): Unit
+ def moveToEndOfQueue(student: StudentInQueue): Unit
+ def clearQueue:Unit
def removeStudentFromQueue(username: String): Unit
def getQueue: List[StudentInQueue]
def checkTACredentials(credentials: String): Boolean
diff --git a/src/main/scala/model/database/TestingDatabase.scala b/src/main/scala/model/database/TestingDatabase.scala
index b847f27..07cde0e 100644
--- a/src/main/scala/model/database/TestingDatabase.scala
+++ b/src/main/scala/model/database/TestingDatabase.scala
@@ -11,12 +11,21 @@ class TestingDatabase extends DatabaseAPI {
data ::= student
}
+ override def moveToEndOfQueue(student: StudentInQueue): Unit = {
+ data = data.filter(_.username != student.username)
+ var latestTime = data.head.timestamp
+ val newStudent = new StudentInQueue(student.username,student.helpDescription,latestTime+1)
+ data ::= newStudent
+ }
+
+ override def clearQueue: Unit = {
+ data = List()
+ }
override def removeStudentFromQueue(username: String): Unit = {
data = data.filter(_.username != username)
}
-
override def getQueue: List[StudentInQueue] = {
data.reverse
}
diff --git a/src/main/scala/testCases.scala b/src/main/scala/testCases.scala
new file mode 100644
index 0000000..b1f71e8
--- /dev/null
+++ b/src/main/scala/testCases.scala
@@ -0,0 +1,71 @@
+import java.sql.{Connection, DriverManager, ResultSet}
+import model.database.{Database,DatabaseAPI,TestingDatabase}
+import model.StudentInQueue
+import play.api.libs.json.Json
+import org.mindrot.jbcrypt.BCrypt
+import org.scalatest.FunSuite
+
+class testCases extends FunSuite{
+ test("myTest"){
+
+ val database = new TestingDatabase
+ val student1 = new StudentInQueue("David","Project1",5)
+ val student2 = new StudentInQueue("Alex","Project2",50)
+ val student3 = new StudentInQueue("Jesse","Project3",500)
+ val student4 = new StudentInQueue("Ethan","Project4",5000)
+ val student5 = new StudentInQueue("Nathan","Project5",50000)
+
+
+ database.addStudentToQueue(student1)
+ database.addStudentToQueue(student2)
+ database.addStudentToQueue(student3)
+ val queue = database.getQueue
+ assert(queue(0).username == "David")
+ assert(queue(0).helpDescription == "Project1")
+ assert(queue(0).timestamp == 5)
+
+ assert(queue(1).username == "Alex")
+ assert(queue(1).helpDescription == "Project2")
+ assert(queue(1).timestamp == 50)
+
+ assert(queue(2).username == "Jesse")
+ assert(queue(2).helpDescription == "Project3")
+ assert(queue(2).timestamp == 500)
+
+ database.removeStudentFromQueue("Alex")
+ val queue2 = database.getQueue
+ assert(queue2(1).username == "Jesse")
+ assert(queue2(1).helpDescription == "Project3")
+ assert(queue2(1).timestamp == 500)
+
+ database.clearQueue
+ val queue3 = database.getQueue
+ assert(queue3 == List())
+ database.addStudentToQueue(student1)
+ database.addStudentToQueue(student2)
+ database.addStudentToQueue(student3)
+ database.addStudentToQueue(student4)
+ database.addStudentToQueue(student5)
+ database.moveToEndOfQueue(student2)
+ val queue4 = database.getQueue
+ assert(queue4(0).username == "David")
+ assert(queue4(0).helpDescription == "Project1")
+ assert(queue4(0).timestamp == 5)
+ assert(queue4(1).username == "Jesse")
+ assert(queue4(1).helpDescription == "Project3")
+ assert(queue4(1).timestamp == 500)
+ assert(queue4(2).username == "Ethan")
+ assert(queue4(2).helpDescription == "Project4")
+ assert(queue4(2).timestamp == 5000)
+ assert(queue4(3).username == "Nathan")
+ assert(queue4(3).helpDescription == "Project5")
+ assert(queue4(3).timestamp == 50000)
+ assert(queue4(4).username == "Alex")
+ assert(queue4(4).helpDescription == "Project2")
+ assert(queue4(4).timestamp == 50001)
+
+
+
+
+ }
+}