/** * @RDE_HEADER@ * Object folder * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2017-04-03 */ #include "object_folder.h" #include "dds_handler.h" #include "logger.h" namespace FileManagement { ObjectFolder::ObjectFolder(MainHandler *mainHandler) : Base(mainHandler, getLogger("ObjectFolder")) { } ObjectFolder::~ObjectFolder() { } bool ObjectFolder::isValid() const { return m_data.id() > 0; } bool ObjectFolder::isUsed() const { return m_data.isUsed(); } Core::FunctionReplyObject ObjectFolder::createObject(const Folder &data) { m_data = data; if (m_data.id() <= 0) { m_data.isUsed(false); Database::FlmFolder dbData; dbData = toDbData(data); if (!db()->insert(dbData)) { QString errText = db()->getLastError().databaseText(); ERROR_LOG(m_logger) << "Error inserting Folder into database: " << errText; if (db()->getLastError().nativeErrorCode().contains(QStringLiteral("23505"))) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Folder into database: unique key violation inserting folder '%1'")).arg(m_data.name()); if (db()->getLastError().nativeErrorCode().contains(QStringLiteral("23503"))) return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Folder into database: foreign key violation inserting folder '%1'")).arg(m_data.name()); return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Folder into database: %1")).arg(errText); } m_data.id(dbData.id); DEBUG_LOG(m_logger) << "New Folder Id: " << m_data.id(); } // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } Core::FunctionReplyObject ObjectFolder::updateObject(const Folder &data) { if (!isValid()) return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Object not valid/blocked")); Database::FlmFolder dbData(toDbData(data)); if (!db()->update(dbData)) { QString errText = db()->getLastError().databaseText(); ERROR_LOG(m_logger) << "Error updating Folder into database: " << errText; return Core::FunctionReplyObject(data.id(), tr_lts("dds", "Error updating Folder into database: %1")).arg(errText); } m_data = data; DEBUG_LOG(m_logger) << "Data changed for Folder Id: " << m_data.id(); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } Core::FunctionReplyObject ObjectFolder::setUsed(bool isUsed) { if (!isValid()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Trying to update an already removed Folder object")); m_data.isUsed(isUsed); // Publish Data via DTS onPublishData(); return Core::FunctionReplyObject(m_data.id()); } Core::FunctionReplyObject ObjectFolder::removeObject() { if (isUsed()) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Folder still in use")); if (!db()->removeFlmFolder(m_data.id())) { QString errText = db()->getLastError().databaseText(); ERROR_LOG(m_logger) << "Folder with id " << m_data.id() << " can not be removed from database: " << errText; return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Folder with id %1 can not be removed from database: %2")).arg(m_data.id()).arg(errText); } if (!dts()->removeFolderByKey(m_data.id())) return Core::FunctionReplyObject(m_data.id(), tr_lts("dds", "Folder with id %1 can not be taken from DDS")).arg(m_data.id()); return Core::FunctionReplyObject(m_data.id()); } void ObjectFolder::onPublishData() { INFO_LOG(m_logger) << "Publish Folder-data to dds (" << m_data.id() << ") ..."; if (!dts()->publish(m_data)) ERROR_LOG(m_logger) << "Error publishing Folder-data to dds"; } // ------------------------------------------------------------------------------------------------------- // convert methods // ------------------------------------------------------------------------------------------------------- // FileManagement::Folder => Database::Folder Database::FlmFolder ObjectFolder::toDbData(const Folder &ddsData) { Database::FlmFolder dbData; dbData.id = ddsData.id(); dbData.name = QString::fromStdString(ddsData.name()); dbData.path = LtsUtils::IntArray(ddsData.path()); dbData.isEditable = ddsData.isEditable(); dbData.isHidden = ddsData.isHidden(); dbData.parentId = ddsData.parentId(); dbData.operatorId = ddsData.operatorId(); dbData.lastModified = ddsData.lastModified(); return dbData; } // ------------------------------------------------------------------------------------------------------- } // Namespace FileManagement