Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+268
@@ -0,0 +1,268 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* ISM Object Main Structure Element
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Iuliana Ojog, SLSE, 2016-11-26
|
||||
*/
|
||||
|
||||
#include "object_presentation.h"
|
||||
#include "initialization.h"
|
||||
#include "dds_handler.h"
|
||||
#include <ngldb/dbtransaction.h>
|
||||
|
||||
namespace PresentationManagement
|
||||
{
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
ObjectPresentation::ObjectPresentation(Initialization *mainHandler)
|
||||
: m_mainHandler(mainHandler)
|
||||
, m_logger(getLogger("ObjectPresentation"))
|
||||
{
|
||||
}
|
||||
|
||||
ObjectPresentation::ObjectPresentation(const Presentation &data, Initialization *mainHandler)
|
||||
: m_mainHandler(mainHandler)
|
||||
, m_data(data)
|
||||
, m_logger(getLogger("ObjectPresentation"))
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
ObjectPresentation::~ObjectPresentation()
|
||||
{
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
bool ObjectPresentation::isValid() const
|
||||
{
|
||||
return m_data.id() > 0;
|
||||
}
|
||||
|
||||
void ObjectPresentation::addPresentationContent(PresentationContent &&data)
|
||||
{
|
||||
m_content.push_back(std::move(data));
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
Core::FunctionReplyObject ObjectPresentation::createObject(const PresentationModifyRequest &request)
|
||||
{
|
||||
m_data = Presentation();
|
||||
m_content.clear();
|
||||
|
||||
m_data.name(request.name());
|
||||
m_data.description(request.description());
|
||||
m_data.operatorId(request.operatorId());
|
||||
m_data.lastModified(request.lastModified());
|
||||
|
||||
m_content = request.content();
|
||||
//for(auto it = request.content().begin(); it != request.content().end(); ++it)
|
||||
// m_content.append(*it);
|
||||
|
||||
DBTransaction trans(m_mainHandler->db()->database());
|
||||
|
||||
// Insert Presentation
|
||||
Database::PrePresentation dbData(toDbData(m_data));
|
||||
if (!m_mainHandler->db()->insert(dbData))
|
||||
return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Presentation-data into database"));
|
||||
m_data.id(dbData.id);
|
||||
|
||||
// Insert PresentationContent
|
||||
for (PresentationContent &conData : m_content)
|
||||
{
|
||||
conData.presentationId(m_data.id());
|
||||
|
||||
Database::PrePresentationContent conDbData = toDbData(conData);
|
||||
conDbData.id = 0;
|
||||
conDbData.presentationId = m_data.id();
|
||||
|
||||
if (!m_mainHandler->db()->insert(conDbData))
|
||||
return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting PresentationContent-data into database"));
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "New presentation content id : " << conDbData.id;
|
||||
conData.id(conDbData.id);
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_LOG(m_logger) << "New Id: " << m_data.id();
|
||||
trans.commit();
|
||||
|
||||
onPublishData();
|
||||
|
||||
return Core::FunctionReplyObject(m_data.id());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
Core::FunctionReplyObject ObjectPresentation::updateObject(const PresentationModifyRequest &request)
|
||||
{
|
||||
if (!isValid())
|
||||
return Core::FunctionReplyObject(request.id(), tr_lts("dds", "Object not valid/blocked"));
|
||||
|
||||
m_data.id(request.id());
|
||||
m_data.name(request.name());
|
||||
m_data.description(request.description());
|
||||
m_data.operatorId(request.operatorId());
|
||||
m_data.lastModified(request.lastModified());
|
||||
m_data.fileStatus(request.fileStatus());
|
||||
|
||||
DBTransaction trans(m_mainHandler->db()->database());
|
||||
|
||||
Database::PrePresentation dbData(toDbData(m_data));
|
||||
if (!m_mainHandler->db()->update(dbData))
|
||||
return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Error updating Presentation-data into database"));
|
||||
|
||||
for (const auto &content : qAsConst(m_content))
|
||||
{
|
||||
if (m_mainHandler->db()->removePrePresentationContent(content.id()))
|
||||
DEBUG_LOG(m_logger) << "Removed presentation content id " << content.id();
|
||||
else
|
||||
ERROR_LOG(m_logger) << "Failed to remove presentation content id " << content.id();
|
||||
}
|
||||
|
||||
m_content = request.content();
|
||||
for (PresentationContent &conData : m_content)
|
||||
{
|
||||
conData.presentationId(m_data.id());
|
||||
|
||||
Database::PrePresentationContent conDbData = toDbData(conData);
|
||||
conDbData.presentationId = m_data.id();
|
||||
conDbData.id = 0;
|
||||
|
||||
if (!m_mainHandler->db()->insert(conDbData))
|
||||
return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting PresentationContent-data into database"));
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "New presentation content id : " << conDbData.id;
|
||||
conData.id(conDbData.id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
trans.commit();
|
||||
|
||||
onPublishData();
|
||||
|
||||
return Core::FunctionReplyObject(m_data.id());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
Core::FunctionReplyObject ObjectPresentation::removeObject()
|
||||
{
|
||||
// remove also presentationContent data via foreign key
|
||||
if (!m_mainHandler->db()->removePrePresentation(m_data.id()))
|
||||
return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Presentation with id %1 can not be removed from DB")).arg(m_data.id());
|
||||
|
||||
int id = m_data.id();
|
||||
m_content.clear();
|
||||
m_data = Presentation();
|
||||
|
||||
return Core::FunctionReplyObject(id);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
Core::FunctionReplyObject ObjectPresentation::changeStatus(const PresentationChangeStatusRequest &request)
|
||||
{
|
||||
if (!isValid())
|
||||
return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Trying to update an already removed Presentation object"));
|
||||
|
||||
m_data.fileStatus(request.fileStatus());
|
||||
m_data.operatorId(request.operatorId());
|
||||
m_data.lastModified(request.lastModified());
|
||||
Database::PrePresentation dbData(toDbData(m_data));
|
||||
if (!m_mainHandler->db()->update(dbData))
|
||||
return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Error updating Presentation-data into database"));
|
||||
// Publish Data via DTS
|
||||
onPublishData();
|
||||
|
||||
return Core::FunctionReplyObject(m_data.id());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
void ObjectPresentation::onPublishData()
|
||||
{
|
||||
INFO_LOG(m_logger) << "Publish Presentation-data to dds (" << m_data.id() << ") ...";
|
||||
|
||||
m_mainHandler->dds()->dts()->publish(m_data);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------
|
||||
// convert methods
|
||||
// -------------------------------------------------------------------------------------------------------
|
||||
|
||||
// PresentationManagement::Presentation => Database::PrePresentation
|
||||
Database::PrePresentation ObjectPresentation::toDbData(const Presentation &ddsData)
|
||||
{
|
||||
Database::PrePresentation dbData;
|
||||
|
||||
dbData.id = ddsData.id();
|
||||
dbData.name = QString::fromStdString(ddsData.name());
|
||||
dbData.description = QString::fromStdString(ddsData.description());
|
||||
dbData.lastModified = ddsData.lastModified();
|
||||
dbData.operatorId = ddsData.operatorId();
|
||||
dbData.fileStatusId = ddsData.fileStatus();
|
||||
|
||||
return dbData;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------
|
||||
// Database::PrePresentation => PresentationManagement::Presentation
|
||||
Presentation ObjectPresentation::toDdsData(const Database::PrePresentation &dbData)
|
||||
{
|
||||
Presentation ddsData;
|
||||
|
||||
ddsData.id(dbData.id);
|
||||
ddsData.name(dbData.name.toStdString());
|
||||
ddsData.description(dbData.description.toStdString());
|
||||
ddsData.operatorId(dbData.operatorId);
|
||||
ddsData.lastModified(dbData.lastModified);
|
||||
ddsData.fileStatus(dbData.fileStatusId);
|
||||
|
||||
// init data not in db
|
||||
ddsData.isDeleted(false);
|
||||
ddsData.isUsed(false);
|
||||
|
||||
return ddsData;
|
||||
}
|
||||
|
||||
Database::PrePresentationContent ObjectPresentation::toDbData(const PresentationContent &ddsData)
|
||||
{
|
||||
Database::PrePresentationContent dbData;
|
||||
dbData.id = ddsData.id();
|
||||
dbData.presentationId = ddsData.presentationId();
|
||||
dbData.presentationTopicType = QString::fromStdString(ddsData.presentationTopicType());
|
||||
dbData.channel = QString::fromStdString(ddsData.channel());
|
||||
dbData.description = QString::fromStdString(ddsData.description());
|
||||
dbData.duration = ddsData.duration();
|
||||
dbData.startTime = ddsData.startTime();
|
||||
dbData.attributes = QString::fromStdString(ddsData.attributes());
|
||||
dbData.x = ddsData.x();
|
||||
dbData.y = ddsData.y();
|
||||
dbData.width = ddsData.width();
|
||||
dbData.height = ddsData.height();
|
||||
dbData.index = ddsData.index();
|
||||
|
||||
return dbData;
|
||||
}
|
||||
|
||||
PresentationContent ObjectPresentation::toDdsData(const Database::PrePresentationContent &dbData)
|
||||
{
|
||||
PresentationContent ddsData;
|
||||
ddsData.id(dbData.id);
|
||||
ddsData.presentationId(dbData.presentationId);
|
||||
ddsData.presentationTopicType(dbData.presentationTopicType.toStdString());
|
||||
ddsData.channel(dbData.channel.toStdString());
|
||||
ddsData.description(dbData.description.toStdString());
|
||||
ddsData.startTime(dbData.startTime);
|
||||
ddsData.attributes(dbData.attributes.toStdString());
|
||||
ddsData.duration(dbData.duration);
|
||||
ddsData.x(dbData.x);
|
||||
ddsData.y(dbData.y);
|
||||
ddsData.width(dbData.width);
|
||||
ddsData.height(dbData.height);
|
||||
ddsData.index(dbData.index);
|
||||
|
||||
return ddsData;
|
||||
}
|
||||
|
||||
} // namespace PresentationManagement
|
||||
Reference in new issue
Block a user