/** * @RDE_HEADER@ * The ClientMessage class is an abstract base class for concrete ClientMessage objects * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, SLST, 2017-12-05 */ #include "client_message.h" #include "WebSocketInterface/Messages/reply_message.h" #include "WebSocketInterface/json_keys.h" #include "WebSocketInterface/data_manager.h" #include #include namespace FileManagement { namespace WebSocketInterface { namespace ClientMessages { using namespace JsonKeys; // ####### ClientMessageFactory begin ####### ClientMessageFactory::ClientMessageFactory(DataManager *dataManager) : LtsWebSocket::AbstractClientMessageFactory(getLogger("ClientMessageFactory")) , m_dataManager(dataManager) {} LtsWebSocket::AbstractClientMessage *ClientMessageFactory::createMessage(LtsWebSocket::ReplyHandler *client, const QString &message) { LtsWebSocket::AbstractClientMessage *result = checkAttributes(client, message); if (result) return result; if (m_type == OcBaseDownload::WebSocketInterface::JsonKeys::BASE_DL_REQUEST()) result = new BaseDlRequest(m_dataManager, client, m_type, m_typeId, m_uuid, m_data); else if (m_type == OcBaseDownload::WebSocketInterface::JsonKeys::PDF_LIST_REQUEST()) result = new PdfListRequest(m_dataManager, client, m_type, m_typeId, m_uuid, m_data); return checkResult(client, message, result); } // ####### ClientMessageFactory end ####### // ####### ClientMessage begin ####### ClientMessage::ClientMessage(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data) : LtsWebSocket::AbstractClientMessage(client, type, typeId, uuid, data) , m_dataManager(dataManager) , m_logger(getLogger("ClientMessage")) {} // ####### ClientMessage end ####### // ####### BaseDlRequest begin ####### BaseDlRequest::BaseDlRequest(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data) : ClientMessage(dataManager, client, type, typeId, uuid, data) {} void BaseDlRequest::process() { if (m_data.toObject().contains(OcBaseDownload::WebSocketInterface::JsonKeys::EXERCISE_ID())) { int exerciseId = m_data.toObject().value(OcBaseDownload::WebSocketInterface::JsonKeys::EXERCISE_ID()).toInt(); m_client->addReply(m_dataManager->folderBaseData(m_uuid)); m_client->addReply(m_dataManager->fileContentBaseData(m_uuid, exerciseId)); } else { LtsWebSocket::ErrorMessage::ErrorData errorData; errorData.uuid = m_uuid; errorData.errorMessage = QStringLiteral("No exercise ID specified for FLM base DL."); m_client->addReply(new LtsWebSocket::ErrorMessage(errorData)); } } bool BaseDlRequest::hasValidData() const { return true; } // ####### BaseDlRequest end ####### // ####### PdfListRequest begin ####### PdfListRequest::PdfListRequest(DataManager *dataManager, LtsWebSocket::ReplyHandler *client, const QString &type, const int typeId, const QString &uuid, const QJsonValue &data) : ClientMessage(dataManager, client, type, typeId, uuid, data) {} void PdfListRequest::process() { m_client->addReply(m_dataManager->pdfList(m_uuid, m_data.toObject().value(OcBaseDownload::WebSocketInterface::JsonKeys::EXERCISE_ID()).toInt())); } bool PdfListRequest::hasValidData() const { return true; } // ####### PdfListRequest end ####### } // namespace ClientMessages } // namespace WebSocketInterface } // namespace FileManagement