Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/scala/model/LocalDateTime.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package model

import java.time.LocalDateTime

object LocalDateTimeUse {
LocalDateTime.now()
}
8 changes: 6 additions & 2 deletions src/main/scala/model/OfficeHoursServer.scala
Original file line number Diff line number Diff line change
@@ -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}
Expand Down Expand Up @@ -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())
Expand All @@ -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)
Expand Down
10 changes: 7 additions & 3 deletions src/main/scala/model/StudentInQueue.scala
Original file line number Diff line number Diff line change
@@ -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}


Expand All @@ -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)
}
Expand Down
13 changes: 9 additions & 4 deletions src/main/scala/model/database/Database.scala
Original file line number Diff line number Diff line change
@@ -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{
Expand All @@ -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()
}
Expand All @@ -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
Expand Down