Я пытаюсь определить продолжительность телефонного звонка через Интернет, передавая новое значение даты в приложение во время соединения и время выхода каждого звонка.
Код выглядит примерно так:
class Call {
Date startTime = new Date()
Date endTime = new Date()
String callLength = ""
String Id = UUID.randomUUID()
}
class callController {
def connected = {
callInstance = Call.findById(params.Id)
//Id params are passed through from external voice call
Call.executeUpdate("update Call a set a.startTime=? where a.Id='${params.id}'", [new Date()])
}
def callEnded = {
callInstance = Call.findById(params.Id)
Call.executeUpdate("update Call a set a.endTime=? where a.Id='${params.id}'", [new Date()])
timeHandler(callInstance.endTime, callInstance.startTime)
}
def timeHandler = {end, start->
TimeDuration duration = TimeCategory.minus(end, start)
Call.executeUpdate("update Call a set a.callLength='$duration' where a.Id = '${params.id}'")
}
}
Редактировать: Код немного отредактирован для улучшения вывода.
Редактировать 2:
Я создал переменные в объекте Call для startTime и endTime.Но теперь у меня проблемы с обновлением дат - наверное, Граилс не любит обновлять даты?Он говорит, что у него проблемы с передачей новой даты в переменную даты.Это точная ошибка:
java.lang.ClassCastException: [Ljava.util.Date; cannot be cast to java.util.Date
и Stacktrace указывает на линию, где я пытаюсь обновить вызов.Есть ли обходной путь для этого?
Еще раз спасибо!
Редактировать 3:
Исправлено с правильным кодом.
Спасибо всем за вашу помощь!