/** * @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(QString::fromStdString(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(QString::fromStdString(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