diff --git a/src/main/scala/model/LocalDateTime.scala b/src/main/scala/model/LocalDateTime.scala new file mode 100644 index 0000000..94b4053 --- /dev/null +++ b/src/main/scala/model/LocalDateTime.scala @@ -0,0 +1,7 @@ +package model + +import java.time.LocalDateTime + +object LocalDateTimeUse { + LocalDateTime.now() +} diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 09ef61b..0ebbdec 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -1,5 +1,8 @@ package model +import java.time.LocalDateTime +import java.time.LocalDateTime.now + import com.corundumstudio.socketio.listener.{DataListener, DisconnectListener} import com.corundumstudio.socketio.{AckRequest, Configuration, SocketIOClient, SocketIOServer} import model.database.{Database, DatabaseAPI, TestingDatabase} @@ -60,7 +63,8 @@ class DisconnectionListener(server: OfficeHoursServer) extends DisconnectListene class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] { override def onData(socket: SocketIOClient, username: String, ackRequest: AckRequest): Unit = { - server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime())) + val currentTime = LocalDateTime.now() + server.database.addStudentToQueue(StudentInQueue(username, currentTime)) server.socketToUsername += (socket -> username) server.usernameToSocket += (username -> socket) server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON()) @@ -70,7 +74,7 @@ class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] class ReadyForStudentListener(server: OfficeHoursServer) extends DataListener[Nothing] { override def onData(socket: SocketIOClient, dirtyMessage: Nothing, ackRequest: AckRequest): Unit = { - val queue = server.database.getQueue.sortBy(_.timestamp) + val queue = server.database.getQueue if(queue.nonEmpty){ val studentToHelp = queue.head server.database.removeStudentFromQueue(studentToHelp.username) diff --git a/src/main/scala/model/StudentInQueue.scala b/src/main/scala/model/StudentInQueue.scala index 464108f..0e2200b 100644 --- a/src/main/scala/model/StudentInQueue.scala +++ b/src/main/scala/model/StudentInQueue.scala @@ -1,5 +1,9 @@ package model +import java.time.LocalDateTime + +import play.api.libs.json.Format.GenericFormat +import play.api.libs.json.OFormat.oFormatFromReadsAndOWrites import play.api.libs.json.{JsValue, Json} @@ -16,19 +20,19 @@ object StudentInQueue { output } - def apply(username: String, timestamp: Long): StudentInQueue = { + def apply(username: String, timestamp: LocalDateTime): StudentInQueue = { new StudentInQueue(cleanString(username), timestamp) } } -class StudentInQueue(val username: String, val timestamp: Long) { +class StudentInQueue(val username: String, val timestamp: LocalDateTime) { def asJsValue(): JsValue ={ val messageMap: Map[String, JsValue] = Map( "username" -> Json.toJson(username), - "timestamp" -> Json.toJson(timestamp) + "timestamp" -> Json.toJson(timestamp.toString) ) Json.toJson(messageMap) } diff --git a/src/main/scala/model/database/Database.scala b/src/main/scala/model/database/Database.scala index bbc9f7a..2a85483 100644 --- a/src/main/scala/model/database/Database.scala +++ b/src/main/scala/model/database/Database.scala @@ -1,8 +1,12 @@ package model.database import java.sql.{Connection, DriverManager, ResultSet} +import java.time.LocalDateTime +import jdk.nashorn.internal.objects.NativeDate.{getMonth, now, setTime} import model.StudentInQueue +import model.OfficeHoursServer + class Database extends DatabaseAPI{ @@ -20,12 +24,14 @@ class Database extends DatabaseAPI{ statement.execute("CREATE TABLE IF NOT EXISTS queue (username TEXT, timestamp BIGINT)") } - + class LocalDateTime() { + LocalDateTime.now() + } override def addStudentToQueue(student: StudentInQueue): Unit = { val statement = connection.prepareStatement("INSERT INTO queue VALUE (?, ?)") statement.setString(1, student.username) - statement.setLong(2, student.timestamp) + statement.setObject(2, LocalDateTime.now()) statement.execute() } @@ -48,8 +54,7 @@ class Database extends DatabaseAPI{ while (result.next()) { val username = result.getString("username") - val timestamp = result.getLong("timestamp") - queue = new StudentInQueue(username, timestamp) :: queue + queue = new StudentInQueue(username, LocalDateTime.now()) :: queue } queue.reverse