Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+163
@@ -0,0 +1,163 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
INCLUDE(MacroRTIDDSGen)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
|
||||
SET(xml_FILE flt_service.xml)
|
||||
|
||||
#
|
||||
# --- Library svcFltCommon --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_common
|
||||
flt_export.h
|
||||
logger.cpp
|
||||
logger.h
|
||||
)
|
||||
|
||||
# Generate flt_enums.idl / flt.idl
|
||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||
# Generate flt_db_impl.cpp/.h, flt_db.h
|
||||
CODEGEN_DATABASE(SRCS_common ${xml_FILE})
|
||||
|
||||
# Generate *.cpp/*.hpp from idl
|
||||
RTIDDSGEN(SRCS_common flt_enums.idl)
|
||||
RTIDDSGEN(SRCS_common flt.idl)
|
||||
|
||||
# Generate flt_dt[s,c]_types.h, flt_ft[s,c]_types.h
|
||||
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
||||
# Generate flt_[d|f]tc.h
|
||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS svcFltCommon SHARED ${SRCS_common})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcFltCommon
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcFltCommon
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
PUBLIC
|
||||
Qt5::Core
|
||||
ngldb
|
||||
ddscore
|
||||
NGLLogger
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcFltCommon)
|
||||
|
||||
#
|
||||
# --- Library svcFltClient --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_client
|
||||
flt_export.h
|
||||
)
|
||||
# generate flt_[d|f]tc.h, flt_[d|f]tc_impl.[cpp|h]
|
||||
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV WS svcFltClient SHARED ${SRCS_client})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcFltClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcFltClient
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
svcFltCommon
|
||||
ddsftc
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcFltClient)
|
||||
|
||||
#
|
||||
# --- Library svcFltServer --------------------------------------------------------------------------------
|
||||
#
|
||||
SET(SRCS_server
|
||||
dds_handler.cpp
|
||||
dds_handler.h
|
||||
flt_export.h
|
||||
handler_aes_filter.cpp
|
||||
handler_aes_filter.h
|
||||
handler_building_component_filter.cpp
|
||||
handler_building_component_filter.h
|
||||
handler_filter_data_update.cpp
|
||||
handler_filter_data_update.h
|
||||
handler_symbol_appearance.cpp
|
||||
handler_symbol_appearance.h
|
||||
initialization.cpp
|
||||
initialization.h
|
||||
# settings.cpp
|
||||
# settings.h
|
||||
${xml_FILE}
|
||||
)
|
||||
# generate flt_[d|f]ts.h, flt_[d|f]ts_impl.[cpp|h]
|
||||
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
||||
# Generate flt.sql, flt.xml
|
||||
CODEGEN_SQL(SRCS_server ${xml_FILE})
|
||||
|
||||
NGL_ADD_LIBRARY(AAR SV svcFltServer SHARED ${SRCS_server})
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcFltServer
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcFltServer
|
||||
PRIVATE
|
||||
Qt5::Core
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
ddsfts
|
||||
NGLLogger
|
||||
svcCoreClient
|
||||
PUBLIC
|
||||
nglsettings
|
||||
ngltools
|
||||
svcFltCommon
|
||||
ngldb
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcFltServer)
|
||||
|
||||
#
|
||||
# --- Topic Type Plugin --------------------------------------------------------------
|
||||
#
|
||||
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
||||
|
||||
#
|
||||
# --- Executable -------------------------------------------------
|
||||
#
|
||||
SET(SRCS_exe
|
||||
main.cpp
|
||||
main_handler.cpp
|
||||
main_handler.h
|
||||
|
||||
# compile again:
|
||||
settings.cpp
|
||||
settings.h
|
||||
|
||||
)
|
||||
NGL_ADD_SVC_ICON(SRCS_exe)
|
||||
NGL_ADD_EXECUTABLE(AAR SV svcFilterManagement ${SRCS_exe} ${HDRS_exe})
|
||||
NGL_TARGET_LINK_LIBRARIES(svcFilterManagement
|
||||
Qt5::Network
|
||||
nglcoreapplication
|
||||
ProjectConfig
|
||||
NGLLogger
|
||||
LtsCommandLineParser
|
||||
svcCoreClient
|
||||
svcFltServer
|
||||
)
|
||||
|
||||
NGL_INSTALL_TARGET(svcFilterManagement)
|
||||
NGL_ADD_TARGET_LINK(svcFilterManagement sFLT)
|
||||
|
||||
# Uncomment if necessary
|
||||
#ADD_SUBDIRECTORY(UnitTests)
|
||||
#ADD_SUBDIRECTORY(ModuleTests)
|
||||
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* DdsHandler for DDS
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-02
|
||||
*/
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include <DDS/Core/pacemaker.h>
|
||||
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
DdsHandler::DdsHandler(int domainId, int partitionId, IDL::PartitionType partitionType)
|
||||
: m_ddsConnector(std::make_shared<DDSConnector::DdsConnector>(domainId, partitionType, partitionId))
|
||||
, m_logger(getLogger("DdsHandler"))
|
||||
{
|
||||
FATAL_LOG(m_logger) << "DdsHandler of domainId, partitionId ... (" << m_ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition();
|
||||
}
|
||||
|
||||
DdsHandler::DdsHandler(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector)
|
||||
: m_ddsConnector(ddsConnector)
|
||||
, m_logger(getLogger("DdsHandler"))
|
||||
{
|
||||
FATAL_LOG(m_logger) << "DdsHandler of ddsConnector (" << m_ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition();
|
||||
}
|
||||
|
||||
|
||||
bool DdsHandler::init(const QStringList &qosFileList)
|
||||
{
|
||||
FATAL_LOG(m_logger) << " START, this=" << this;
|
||||
|
||||
if (!m_ddsConnector->init(qosFileList))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error initializing dds connections - aborting";
|
||||
return false;
|
||||
}
|
||||
|
||||
// default initialize Publisher and Subscriber
|
||||
m_ddsConnector->initPublisherSubscriber();
|
||||
|
||||
// Pacemaker
|
||||
if(ddsConnector()->getPartitionId() == 0)
|
||||
m_pacemaker = new Core::Pacemaker(m_ddsConnector);
|
||||
|
||||
m_ddsDts = FilterManagement::Interface::Dts::create(m_ddsConnector);
|
||||
m_ddsFts = FilterManagement::Interface::Fts::create(m_ddsConnector);
|
||||
|
||||
bool bRet = m_ddsDts->enableAll();
|
||||
FATAL_LOG(m_logger) << "Dts initialised";
|
||||
|
||||
bRet &= m_ddsFts->enableAll();
|
||||
FATAL_LOG(m_logger) << "Fts initialised";
|
||||
|
||||
FATAL_LOG(m_logger) << " END, this=" << this;
|
||||
return bRet;
|
||||
}
|
||||
|
||||
void DdsHandler::setRunningState(Core::RunningState rs)
|
||||
{
|
||||
if (!m_pacemaker)
|
||||
return;
|
||||
m_pacemaker->setNewState(rs);
|
||||
}
|
||||
|
||||
void DdsHandler::addPortToPacemaker(quint16 port, Core::PortType type)
|
||||
{
|
||||
if (!m_pacemaker)
|
||||
return;
|
||||
m_pacemaker->addPort(port, type);
|
||||
}
|
||||
|
||||
|
||||
} // Namespace PDM
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* DdsHandler for DDS
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-09-02
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
#include <DDS/Core/topic_lock_master.h>
|
||||
#include <FilterManagement/flt_dts.h>
|
||||
#include <FilterManagement/flt_fts.h>
|
||||
|
||||
#include "logger.h"
|
||||
|
||||
class QThread;
|
||||
namespace Core
|
||||
{
|
||||
class Pacemaker;
|
||||
}
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class FLT_SERVER_EXPORT DdsHandler final
|
||||
{
|
||||
public:
|
||||
explicit DdsHandler(int domainId, int partitionId, IDL::PartitionType partitionType);
|
||||
explicit DdsHandler(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector);
|
||||
~DdsHandler() = default;
|
||||
|
||||
bool init(const QStringList &qosFileList = QStringList());
|
||||
|
||||
void setRunningState(Core::RunningState rs);
|
||||
void addPortToPacemaker(quint16 port, Core::PortType type);
|
||||
|
||||
std::shared_ptr<FilterManagement::Interface::Dts> dts() const { return m_ddsDts; }
|
||||
std::shared_ptr<FilterManagement::Interface::Fts> fts() const { return m_ddsFts; }
|
||||
std::shared_ptr<DDSConnector::DdsConnector> ddsConnector() const { return m_ddsConnector; }
|
||||
|
||||
private:
|
||||
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
|
||||
std::shared_ptr<FilterManagement::Interface::Dts> m_ddsDts;
|
||||
std::shared_ptr<FilterManagement::Interface::Fts> m_ddsFts;
|
||||
|
||||
Core::Pacemaker *m_pacemaker{nullptr};
|
||||
|
||||
NGL::INGLLogger &m_logger;
|
||||
};
|
||||
|
||||
} // namespace FilterManagement
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Export definitions
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hanna E. Rathje, SLSE, 2015-08-04
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef FLT_COMMON_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define FLT_COMMON_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCFLTCOMMON_LIB)
|
||||
# define FLT_COMMON_EXPORT Q_DECL_EXPORT
|
||||
# ifndef WIN32
|
||||
# ifdef NDDSUSERDllExport
|
||||
# undef NDDSUSERDllExport
|
||||
# endif
|
||||
# define NDDSUSERDllExport Q_DECL_EXPORT
|
||||
# endif
|
||||
# else
|
||||
# define FLT_COMMON_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef FLT_CLIENT_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define FLT_CLIENT_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCFLTCLIENT_LIB)
|
||||
# define FLT_CLIENT_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define FLT_CLIENT_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef FLT_SERVER_EXPORT
|
||||
# ifdef BUILD_STATIC_LIBRARIES
|
||||
# define FLT_SERVER_EXPORT
|
||||
# else
|
||||
# if defined(MAKE_SVCFLTSERVER_LIB)
|
||||
# define FLT_SERVER_EXPORT Q_DECL_EXPORT
|
||||
# else
|
||||
# define FLT_SERVER_EXPORT Q_DECL_IMPORT
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<service namespace="FilterManagement" abbreviation="FLT" procNames="FilterManagement" exerciseDependency="Global,Exercise" groups="Core" prio="4">
|
||||
<rcs>
|
||||
<Id Id="$Id$"/>
|
||||
<HeadURL HeadURL="$HeadURL$"/>
|
||||
<Author Author="$Author$"/>
|
||||
</rcs>
|
||||
<operatorRights offset="14">
|
||||
<guiPlugin name="FilterManagement" offset="1">
|
||||
<operatorRightGroup name="AES Filter" description="Edit Area Effect Simulation Filter">
|
||||
<operatorRight right="AesFilterEdit" value="1" description="Edit Area Effect Simulation Filter"/>
|
||||
</operatorRightGroup>
|
||||
<operatorRightGroup name="Symbol Appearance Filter" description="Edit Symbol Appearance">
|
||||
<operatorRight right="SymbolAppearanceEdit" value="2" description="Edit Symbol Appearance"/>
|
||||
</operatorRightGroup>
|
||||
</guiPlugin>
|
||||
</operatorRights>
|
||||
<topicTypes>
|
||||
<topicType name="AesFilter" isDataObject="1" routeToClient="1" routeToServer="0" routeInReplay="1" recordTopic="1">
|
||||
<column name="id" idlType="long" isKey="1"/>
|
||||
<column name="operatorId" idlType="long"/>
|
||||
<column name="sampleTime" idlType="long long"/>
|
||||
<column name="content" idlType="string"/>
|
||||
<column name="ctx" idlType="string"/>
|
||||
</topicType>
|
||||
<topicType name="BuildingComponentFilter" isDataObject="1" routeToClient="1" routeToServer="0" routeInReplay="1" recordTopic="1">
|
||||
<column name="id" idlType="long" isKey="1"/>
|
||||
<column name="operatorId" idlType="long"/>
|
||||
<column name="sampleTime" idlType="long long"/>
|
||||
<column name="content" idlType="string"/>
|
||||
<column name="ctx" idlType="string"/>
|
||||
</topicType>
|
||||
<topicType name="FilterData" isDataObject="1" routeToClient="1" routeToServer="0" routeInReplay="1" baseValueType="TriggerFilterData">
|
||||
<column name="screenTypeId" idlType="long"/>
|
||||
<column name="screenId" idlType="long"/>
|
||||
<column name="screenContainerId" idlType="long"/>
|
||||
<column name="aesFilterContent" idlType="string"/>
|
||||
<column name="buildingComponentsFilterContent" idlType="string"/>
|
||||
<column name="symbolAppearanceContent" idlType="string"/>
|
||||
<column name="operatorMapSettingsContent" idlType="string"/>
|
||||
</topicType>
|
||||
<topicType name="SymbolAppearance" isDataObject="1" routeToClient="1" routeToServer="0" routeInReplay="1" recordTopic="1">
|
||||
<column name="id" idlType="long" isKey="1"/>
|
||||
<column name="operatorId" idlType="long"/>
|
||||
<column name="sampleTime" idlType="long long"/>
|
||||
<column name="content" idlType="string"/>
|
||||
<column name="ctx" idlType="string"/>
|
||||
</topicType>
|
||||
<topicType name="TriggerFilterData" isDataObject="1" routeToClient="1" routeToServer="0" routeInReplay="1">
|
||||
<column name="id" idlType="long" isKey="1"/>
|
||||
<column name="operatorId" idlType="long"/>
|
||||
<column name="requestTime" idlType="long long"/>
|
||||
</topicType>
|
||||
</topicTypes>
|
||||
<functionTopics>
|
||||
<functionTopic name="AesFilterUpdate" requestTopicType="AesFilter" replyTopicType="Core::FunctionReply" requestTopicName="AesFilterUpdateRequest" replyTopicName="AesFilterUpdateReply" routeInReplay="1"/>
|
||||
<functionTopic name="BuildingComponentFilterUpdate" requestTopicType="BuildingComponentFilter" replyTopicType="Core::FunctionReply" requestTopicName="BuildingComponentFilterUpdateRequest" replyTopicName="BuildingComponentFilterUpdateReply" routeInReplay="1"/>
|
||||
<functionTopic name="FilterDataUpdate" requestTopicType="FilterData" replyTopicType="Core::FunctionReply" requestTopicName="FilterDataUpdateRequest" replyTopicName="FilterDataUpdateReply" routeInReplay="1"/>
|
||||
<functionTopic name="SymbolAppearanceUpdate" requestTopicType="SymbolAppearance" replyTopicType="Core::FunctionReply" requestTopicName="SymbolAppearanceUpdateRequest" replyTopicName="SymbolAppearanceUpdateReply" routeInReplay="1"/>
|
||||
<functionTopic name="TriggerFilterDataUpdate" requestTopicType="TriggerFilterData" replyTopicType="Core::FunctionReply" requestTopicName="TriggerFilterDataUpdateRequest" replyTopicName="TriggerFilterDataUpdateReply" routeInReplay="1"/>
|
||||
</functionTopics>
|
||||
<tables>
|
||||
<table name="flt_aes_filter">
|
||||
<column name="id" datatype="integer" isPrimaryKey="1">
|
||||
<sequence start="1" increment="1"/>
|
||||
</column>
|
||||
<column name="operator_id" datatype="integer" isForeignKey="1"/>
|
||||
<column name="content" datatype="text"/>
|
||||
<column name="ctx" datatype="text"/>
|
||||
<constraint name="UQ_aes_filter_id" type="unique">
|
||||
<column name="id"/>
|
||||
</constraint>
|
||||
<constraint name="UQ_flt_aes_filter_operator_id" type="unique">
|
||||
<column name="operator_id"/>
|
||||
<column name="ctx"/>
|
||||
</constraint>
|
||||
<foreignKey name="FK_aes_filter_opm_operator">
|
||||
<source table="flt_aes_filter" column="operator_id"/>
|
||||
<destination service="OperatorManagement" serviceAbbr="opm" schema="opm" table="opm_operator" column="id"/>
|
||||
</foreignKey>
|
||||
</table>
|
||||
<table name="flt_building_component_settings">
|
||||
<column name="id" datatype="integer" isPrimaryKey="1">
|
||||
<sequence start="1" increment="1"/>
|
||||
</column>
|
||||
<column name="operator_id" datatype="integer" isForeignKey="1"/>
|
||||
<column name="content" datatype="text"/>
|
||||
<column name="ctx" datatype="text"/>
|
||||
<constraint name="UQ_flt_building_component_settings_id" type="unique">
|
||||
<column name="id"/>
|
||||
</constraint>
|
||||
<constraint name="UQ_flt_building_component_settings_id" type="unique">
|
||||
<column name="operator_id"/>
|
||||
<column name="ctx"/>
|
||||
</constraint>
|
||||
<foreignKey name="FK_flt_building_component_settings_opm_operator">
|
||||
<source table="flt_building_component_settings" column="operator_id"/>
|
||||
<destination service="OperatorManagement" serviceAbbr="opm" schema="opm" table="opm_operator" column="id"/>
|
||||
</foreignKey>
|
||||
</table>
|
||||
<table name="flt_symbol_appearance">
|
||||
<column name="id" datatype="integer" isPrimaryKey="1">
|
||||
<sequence start="1" increment="1"/>
|
||||
</column>
|
||||
<column name="operator_id" datatype="integer" isForeignKey="1"/>
|
||||
<column name="content" datatype="text"/>
|
||||
<column name="ctx" datatype="text"/>
|
||||
<constraint name="UQ_flt_symbol_appearance_id" type="unique">
|
||||
<column name="id"/>
|
||||
</constraint>
|
||||
<constraint name="UQ_flt_symbol_appearance_operator_id" type="unique">
|
||||
<column name="operator_id"/>
|
||||
<column name="ctx"/>
|
||||
</constraint>
|
||||
<foreignKey name="FK_flt_symbol_appearance_opm_operator">
|
||||
<source table="flt_symbol_appearance" column="operator_id"/>
|
||||
<destination service="OperatorManagement" serviceAbbr="opm" schema="opm" table="opm_operator" column="id"/>
|
||||
</foreignKey>
|
||||
</table>
|
||||
</tables>
|
||||
<views/>
|
||||
<dbServiceStructs>
|
||||
<serviceStruct name="AesFilter" table="flt_aes_filter"/>
|
||||
<serviceStruct name="BuildingComponentFilter" table="flt_building_component_settings"/>
|
||||
<serviceStruct name="SymbolAppearance" table="flt_symbol_appearance"/>
|
||||
<table name="flt_aes_filter"/>
|
||||
<table name="flt_building_component_settings"/>
|
||||
<table name="flt_symbol_appearance"/>
|
||||
</dbServiceStructs>
|
||||
<enumerations>
|
||||
<enumeration name="DummyEnum">
|
||||
<attribute key="val1" value="1"/>
|
||||
<attribute key="val2" value="2"/>
|
||||
</enumeration>
|
||||
</enumerations>
|
||||
</service>
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
|
||||
#include "handler_aes_filter.h"
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "initialization.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
HandlerAesFilter::HandlerAesFilter(Initialization *mainHandler)
|
||||
: Interface::Fts::AesFilterUpdateRequestHandler(mainHandler->dds()->fts())
|
||||
, m_mainHandler(mainHandler)
|
||||
, m_logger(getLogger("HandlerAesFilter"))
|
||||
{
|
||||
}
|
||||
|
||||
HandlerAesFilter::~HandlerAesFilter()
|
||||
{
|
||||
cleanup();
|
||||
}
|
||||
|
||||
bool HandlerAesFilter::init()
|
||||
{
|
||||
cleanup();
|
||||
|
||||
const auto cb = [this](const Database::AesFilter &data)
|
||||
{
|
||||
FilterManagement::AesFilter *ddsData(new FilterManagement::AesFilter(data.id,
|
||||
data.operatorId,
|
||||
QDateTime::currentMSecsSinceEpoch(),
|
||||
data.content.toStdString(),
|
||||
data.ctx.toStdString()));
|
||||
m_aesFilterMap.insert(key(data.operatorId, data.ctx), ddsData);
|
||||
dds()->dts()->publish(*ddsData);
|
||||
};
|
||||
|
||||
// read all file types from database
|
||||
if (!db()->select(cb))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error reading data from database!";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandlerAesFilter::cleanup()
|
||||
{
|
||||
DDSConnector::CoherentSet cs(dds()->ddsConnector());
|
||||
|
||||
auto dts = dds()->dts();
|
||||
for (auto it = m_aesFilterMap.cbegin(); it != m_aesFilterMap.cend(); ++it)
|
||||
{
|
||||
dts->removeAesFilterByKey(it.value()->id());
|
||||
delete it.value();
|
||||
}
|
||||
m_aesFilterMap.clear();
|
||||
}
|
||||
|
||||
void HandlerAesFilter::onAesFilterUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const AesFilter &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "onAesFilterUpdateRequest: " << request;
|
||||
auto ret = aesFilterUpdateRequest(request);
|
||||
if (ret.error())
|
||||
WARNING_LOG(m_logger) << ret();
|
||||
dds()->fts()->aesFilterUpdateReply(cookie, ret);
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject HandlerAesFilter::aesFilterUpdateRequest(const AesFilter &request)
|
||||
{
|
||||
Database::AesFilter dbFilter;
|
||||
dbFilter.operatorId = request.operatorId();
|
||||
dbFilter.content = QString::fromStdString(request.content());
|
||||
dbFilter.ctx = QString::fromStdString(request.ctx());
|
||||
|
||||
const key k(dbFilter.operatorId, dbFilter.ctx);
|
||||
auto it = m_aesFilterMap.find(k);
|
||||
if (it == m_aesFilterMap.end())
|
||||
{
|
||||
// new entry
|
||||
dbFilter.id = 0;
|
||||
if (!db()->insert(dbFilter))
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Can not insert AesFilter into database"));
|
||||
AesFilter *ptr = new AesFilter(request);
|
||||
ptr->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
ptr->id(dbFilter.id);
|
||||
m_aesFilterMap.insert(k, ptr);
|
||||
it = m_aesFilterMap.find(k);
|
||||
}
|
||||
else
|
||||
{
|
||||
// already exists
|
||||
dbFilter.id = it.value()->id();
|
||||
dbFilter.operatorId = it.value()->operatorId();
|
||||
|
||||
if (!db()->update(dbFilter))
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Error updating AesFilter in database"));
|
||||
it.value()->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
it.value()->content(request.content());
|
||||
}
|
||||
dds()->dts()->publish(*it.value());
|
||||
return Core::FunctionReplyObject();
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> HandlerAesFilter::db() const
|
||||
{
|
||||
return m_mainHandler->db();
|
||||
}
|
||||
|
||||
std::shared_ptr<DdsHandler> HandlerAesFilter::dds() const
|
||||
{
|
||||
return m_mainHandler->dds();
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QMap>
|
||||
#include <FilterManagement/flt_fts.h>
|
||||
#include "logger.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class DatabaseInterface;
|
||||
class DdsHandler;
|
||||
class Initialization;
|
||||
class HandlerAesFilter final
|
||||
: protected Interface::Fts::AesFilterUpdateRequestHandler
|
||||
{
|
||||
public:
|
||||
explicit HandlerAesFilter(Initialization *mainHandler);
|
||||
~HandlerAesFilter();
|
||||
|
||||
bool init();
|
||||
|
||||
private:
|
||||
void cleanup();
|
||||
void onAesFilterUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const AesFilter &request) override;
|
||||
Core::FunctionReplyObject aesFilterUpdateRequest(const AesFilter &request);
|
||||
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
std::shared_ptr<DdsHandler> dds() const;
|
||||
|
||||
private:
|
||||
struct key
|
||||
{
|
||||
int operatorId = 0;
|
||||
QString ctx;
|
||||
bool operator<(const key &o) const
|
||||
{
|
||||
if (operatorId != o.operatorId)
|
||||
return operatorId < o.operatorId;
|
||||
return ctx < o.ctx;
|
||||
}
|
||||
key() = default;
|
||||
explicit key(int _operatorId, const QString &_ctx)
|
||||
: operatorId(_operatorId)
|
||||
, ctx(_ctx)
|
||||
{}
|
||||
};
|
||||
|
||||
QMap<key, AesFilter *> m_aesFilterMap;
|
||||
Initialization *m_mainHandler;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
|
||||
#include "handler_building_component_filter.h"
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "initialization.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
HandlerBuildingComponentFilter::HandlerBuildingComponentFilter(Initialization *mainHandler)
|
||||
: Interface::Fts::BuildingComponentFilterUpdateRequestHandler(mainHandler->dds()->fts())
|
||||
, m_mainHandler(mainHandler)
|
||||
, m_logger(getLogger("HandlerBuildingComponentFilter"))
|
||||
{
|
||||
}
|
||||
|
||||
HandlerBuildingComponentFilter::~HandlerBuildingComponentFilter()
|
||||
{
|
||||
cleanup();
|
||||
}
|
||||
|
||||
bool HandlerBuildingComponentFilter::init()
|
||||
{
|
||||
cleanup();
|
||||
|
||||
const auto cb = [this](const Database::BuildingComponentFilter &data)
|
||||
{
|
||||
FilterManagement::BuildingComponentFilter *ddsData(new FilterManagement::BuildingComponentFilter(data.id,
|
||||
data.operatorId,
|
||||
QDateTime::currentMSecsSinceEpoch(),
|
||||
data.content.toStdString(),
|
||||
data.ctx.toStdString()));
|
||||
m_buildingComponentFilterMap.insert(key(data.operatorId, data.ctx), ddsData);
|
||||
dds()->dts()->publish(*ddsData);
|
||||
};
|
||||
|
||||
// read all file types from database
|
||||
if (!db()->select(cb))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error reading data from database!";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandlerBuildingComponentFilter::cleanup()
|
||||
{
|
||||
DDSConnector::CoherentSet cs(dds()->ddsConnector());
|
||||
|
||||
auto dts = dds()->dts();
|
||||
for (auto it = m_buildingComponentFilterMap.cbegin(); it != m_buildingComponentFilterMap.cend(); ++it)
|
||||
{
|
||||
dts->removeBuildingComponentFilterByKey(it.value()->id());
|
||||
delete it.value();
|
||||
}
|
||||
m_buildingComponentFilterMap.clear();
|
||||
}
|
||||
|
||||
void HandlerBuildingComponentFilter::onBuildingComponentFilterUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const BuildingComponentFilter &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "onBuildingComponentFilterUpdateRequest: " << request;
|
||||
auto ret = BuildingComponentFilterUpdateRequest(request);
|
||||
if (ret.error())
|
||||
WARNING_LOG(m_logger) << ret();
|
||||
dds()->fts()->buildingComponentFilterUpdateReply(cookie, ret);
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject HandlerBuildingComponentFilter::BuildingComponentFilterUpdateRequest(const BuildingComponentFilter &request)
|
||||
{
|
||||
Database::BuildingComponentFilter dbFilter;
|
||||
dbFilter.operatorId = request.operatorId();
|
||||
dbFilter.content = QString::fromStdString(request.content());
|
||||
dbFilter.ctx = QString::fromStdString(request.ctx());
|
||||
|
||||
const key k(dbFilter.operatorId, dbFilter.ctx);
|
||||
auto it = m_buildingComponentFilterMap.find(k);
|
||||
if (it == m_buildingComponentFilterMap.end())
|
||||
{
|
||||
// new entry
|
||||
dbFilter.id = 0;
|
||||
if (!db()->insert(dbFilter))
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Can not insert BuildingComponentFilter into database"));
|
||||
BuildingComponentFilter *ptr = new BuildingComponentFilter(request);
|
||||
ptr->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
ptr->id(dbFilter.id);
|
||||
m_buildingComponentFilterMap.insert(k, ptr);
|
||||
it = m_buildingComponentFilterMap.find(k);
|
||||
}
|
||||
else
|
||||
{
|
||||
// already exists
|
||||
dbFilter.id = it.value()->id();
|
||||
dbFilter.operatorId = it.value()->operatorId();
|
||||
|
||||
if (!db()->update(dbFilter))
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Error updating BuildingComponentFilter in database"));
|
||||
it.value()->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
it.value()->content(request.content());
|
||||
}
|
||||
dds()->dts()->publish(*it.value());
|
||||
return Core::FunctionReplyObject();
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> HandlerBuildingComponentFilter::db() const
|
||||
{
|
||||
return m_mainHandler->db();
|
||||
}
|
||||
|
||||
std::shared_ptr<DdsHandler> HandlerBuildingComponentFilter::dds() const
|
||||
{
|
||||
return m_mainHandler->dds();
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QMap>
|
||||
#include <FilterManagement/flt_fts.h>
|
||||
#include "logger.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class DatabaseInterface;
|
||||
class DdsHandler;
|
||||
class Initialization;
|
||||
class HandlerBuildingComponentFilter final
|
||||
: protected Interface::Fts::BuildingComponentFilterUpdateRequestHandler
|
||||
{
|
||||
public:
|
||||
explicit HandlerBuildingComponentFilter(Initialization *mainHandler);
|
||||
~HandlerBuildingComponentFilter();
|
||||
|
||||
bool init();
|
||||
|
||||
private:
|
||||
void cleanup();
|
||||
void onBuildingComponentFilterUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const BuildingComponentFilter &request) override;
|
||||
Core::FunctionReplyObject BuildingComponentFilterUpdateRequest(const BuildingComponentFilter &request);
|
||||
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
std::shared_ptr<DdsHandler> dds() const;
|
||||
|
||||
private:
|
||||
struct key
|
||||
{
|
||||
int operatorId = 0;
|
||||
QString ctx;
|
||||
bool operator<(const key &o) const
|
||||
{
|
||||
if (operatorId != o.operatorId)
|
||||
return operatorId < o.operatorId;
|
||||
return ctx < o.ctx;
|
||||
}
|
||||
key() = default;
|
||||
explicit key(int _operatorId, const QString &_ctx)
|
||||
: operatorId(_operatorId)
|
||||
, ctx(_ctx)
|
||||
{}
|
||||
};
|
||||
|
||||
QMap<key, BuildingComponentFilter *> m_buildingComponentFilterMap;
|
||||
Initialization *m_mainHandler;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Broadcasting of FilterData
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Norbert Thoden, SLSE, 2019-02-19
|
||||
*/
|
||||
|
||||
|
||||
#include "handler_filter_data_update.h"
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "initialization.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
HandlerFilterDataUpdate::HandlerFilterDataUpdate(Initialization *mainHandler)
|
||||
: Interface::Fts::TriggerFilterDataUpdateRequestHandler(mainHandler->dds()->fts())
|
||||
, Interface::Fts::FilterDataUpdateRequestHandler(mainHandler->dds()->fts())
|
||||
, m_mainHandler(mainHandler)
|
||||
, m_logger(getLogger("FilterDataUpdate"))
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
HandlerFilterDataUpdate::~HandlerFilterDataUpdate()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
cleanup();
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
bool HandlerFilterDataUpdate::init()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandlerFilterDataUpdate::cleanup()
|
||||
{
|
||||
// nothing to do here. But to keep structure similar to other hander...
|
||||
}
|
||||
|
||||
void HandlerFilterDataUpdate::onTriggerFilterDataUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const TriggerFilterData &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " TriggerFilterData: " << request;
|
||||
auto ret = triggerFilterDataUpdateRequest(request);
|
||||
if (ret.error())
|
||||
WARNING_LOG(m_logger) << ret();
|
||||
dds()->fts()->triggerFilterDataUpdateReply(cookie, ret);
|
||||
}
|
||||
Core::FunctionReplyObject HandlerFilterDataUpdate::triggerFilterDataUpdateRequest(const TriggerFilterData &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << " publish TriggerFilterData: " << request;
|
||||
dds()->dts()->publish(request);
|
||||
return Core::FunctionReplyObject();
|
||||
}
|
||||
|
||||
void HandlerFilterDataUpdate::onFilterDataUpdateRequest(const rti::core::SampleIdentity &cookie, const FilterData &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " FilterData: " << request;
|
||||
auto ret = filterDataUpdateRequest(request);
|
||||
if (ret.error())
|
||||
WARNING_LOG(m_logger) << ret();
|
||||
dds()->fts()->filterDataUpdateReply(cookie, ret);
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject HandlerFilterDataUpdate::filterDataUpdateRequest(const FilterData &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " FilterData: " << request;
|
||||
const std::tuple<int,int,int> k(request.operatorId(), request.screenId(), request.screenContainerId());
|
||||
auto it = m_latestFilter.find(k);
|
||||
if (it == m_latestFilter.end())
|
||||
{
|
||||
// new entry
|
||||
m_latestFilter[k] = request;
|
||||
} else {
|
||||
// already exists
|
||||
FilterData ¤tRef = it.value();
|
||||
// compare age:
|
||||
if (currentRef.requestTime() <= request.requestTime())
|
||||
currentRef = request;
|
||||
}
|
||||
dds()->dts()->publish(request);
|
||||
return Core::FunctionReplyObject();
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> HandlerFilterDataUpdate::db() const
|
||||
{
|
||||
return m_mainHandler->db();
|
||||
}
|
||||
|
||||
std::shared_ptr<DdsHandler> HandlerFilterDataUpdate::dds() const
|
||||
{
|
||||
return m_mainHandler->dds();
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Broadcasting of FilterData
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Norbert Thoden, SLSE, 2019-02-19
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QMap>
|
||||
#include <FilterManagement/flt_fts.h>
|
||||
#include "logger.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class DatabaseInterface;
|
||||
class DdsHandler;
|
||||
class Initialization;
|
||||
class HandlerFilterDataUpdate final
|
||||
: protected Interface::Fts::TriggerFilterDataUpdateRequestHandler
|
||||
, protected Interface::Fts::FilterDataUpdateRequestHandler
|
||||
{
|
||||
public:
|
||||
explicit HandlerFilterDataUpdate(FilterManagement::Initialization *mainHandler);
|
||||
~HandlerFilterDataUpdate();
|
||||
|
||||
bool init();
|
||||
|
||||
private:
|
||||
void cleanup();
|
||||
|
||||
//
|
||||
// Function Topic 'TriggerFilterDataUpdate'
|
||||
//
|
||||
void onTriggerFilterDataUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const TriggerFilterData &request) override;
|
||||
Core::FunctionReplyObject triggerFilterDataUpdateRequest(const TriggerFilterData &request);
|
||||
|
||||
//
|
||||
// Function Topic 'FilterDataUpdate'
|
||||
//
|
||||
virtual void onFilterDataUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const FilterData &request) override;
|
||||
Core::FunctionReplyObject filterDataUpdateRequest(const FilterData &request);
|
||||
|
||||
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
std::shared_ptr<DdsHandler> dds() const;
|
||||
|
||||
private:
|
||||
struct key
|
||||
{
|
||||
int operatorId = 0;
|
||||
int screenId = 1;
|
||||
bool operator<(const key &o) const
|
||||
{
|
||||
if (operatorId != o.operatorId)
|
||||
return operatorId < o.operatorId;
|
||||
return screenId < o.screenId;
|
||||
}
|
||||
key() = default;
|
||||
explicit key(int _operatorId, int _screenId)
|
||||
: operatorId(_operatorId)
|
||||
, screenId(_screenId)
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
QMap<std::tuple<int,int,int>, FilterData> m_latestFilter;
|
||||
Initialization *m_mainHandler;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
}
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
|
||||
#include "handler_symbol_appearance.h"
|
||||
|
||||
#include "dds_handler.h"
|
||||
#include "initialization.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
HandlerSymbolAppearance::HandlerSymbolAppearance(Initialization *mainHandler)
|
||||
: Interface::Fts::SymbolAppearanceUpdateRequestHandler(mainHandler->dds()->fts())
|
||||
, m_mainHandler(mainHandler)
|
||||
, m_logger(getLogger("HandlerSymbolAppearance"))
|
||||
{
|
||||
}
|
||||
|
||||
HandlerSymbolAppearance::~HandlerSymbolAppearance()
|
||||
{
|
||||
cleanup();
|
||||
}
|
||||
|
||||
bool HandlerSymbolAppearance::init()
|
||||
{
|
||||
cleanup();
|
||||
|
||||
const auto cb = [this](const Database::SymbolAppearance &data)
|
||||
{
|
||||
FilterManagement::SymbolAppearance *ddsData(new FilterManagement::SymbolAppearance(data.id,
|
||||
data.operatorId,
|
||||
QDateTime::currentMSecsSinceEpoch(),
|
||||
data.content.toStdString(),
|
||||
data.ctx.toStdString()));
|
||||
m_symbolAppearanceMap.insert(key(data.operatorId, data.ctx), ddsData);
|
||||
dds()->dts()->publish(*ddsData);
|
||||
};
|
||||
|
||||
// read all file types from database
|
||||
if (!db()->select(cb))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error reading data from database!";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandlerSymbolAppearance::cleanup()
|
||||
{
|
||||
DDSConnector::CoherentSet cs(dds()->ddsConnector());
|
||||
|
||||
auto dts = dds()->dts();
|
||||
for (auto it = m_symbolAppearanceMap.cbegin(); it != m_symbolAppearanceMap.cend(); ++it)
|
||||
{
|
||||
dts->removeSymbolAppearanceByKey(it.value()->id());
|
||||
delete it.value();
|
||||
}
|
||||
m_symbolAppearanceMap.clear();
|
||||
}
|
||||
|
||||
void HandlerSymbolAppearance::onSymbolAppearanceUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const SymbolAppearance &request)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "onSymbolAppearanceUpdateRequest: " << request;
|
||||
auto ret = symbolAppearanceUpdateRequest(request);
|
||||
if (ret.error())
|
||||
WARNING_LOG(m_logger) << ret();
|
||||
dds()->fts()->symbolAppearanceUpdateReply(cookie, ret);
|
||||
}
|
||||
|
||||
Core::FunctionReplyObject HandlerSymbolAppearance::symbolAppearanceUpdateRequest(const SymbolAppearance &request)
|
||||
{
|
||||
Database::SymbolAppearance dbFilter;
|
||||
dbFilter.operatorId = request.operatorId();
|
||||
dbFilter.content = QString::fromStdString(request.content());
|
||||
dbFilter.ctx = QString::fromStdString(request.ctx());
|
||||
|
||||
const key k(dbFilter.operatorId, dbFilter.ctx);
|
||||
auto it = m_symbolAppearanceMap.find(k);
|
||||
if (it == m_symbolAppearanceMap.end())
|
||||
{
|
||||
// new entry
|
||||
dbFilter.id = 0;
|
||||
if (!db()->insert(dbFilter))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Can not insert SymbolAppearanceFilter into database: " << db()->getLastError().text();
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Can not insert SymbolAppearanceFilter into database"));
|
||||
}
|
||||
SymbolAppearance *ptr = new SymbolAppearance(request);
|
||||
ptr->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
ptr->id(dbFilter.id);
|
||||
m_symbolAppearanceMap.insert(k, ptr);
|
||||
it = m_symbolAppearanceMap.find(k);
|
||||
}
|
||||
else
|
||||
{
|
||||
// already exists
|
||||
dbFilter.id = it.value()->id();
|
||||
dbFilter.operatorId = it.value()->operatorId();
|
||||
|
||||
DEBUG_LOG(m_logger) << "Update symbol filter with id " << dbFilter.id
|
||||
<< " for operator " << dbFilter.operatorId;
|
||||
|
||||
if (!db()->update(dbFilter))
|
||||
return Core::FunctionReplyObject(dbFilter.operatorId, tr_lts("dds", "Error updating SymbolAppearanceFilter in database"));
|
||||
it.value()->sampleTime(QDateTime::currentMSecsSinceEpoch());
|
||||
it.value()->content(request.content());
|
||||
}
|
||||
dds()->dts()->publish(*it.value());
|
||||
return Core::FunctionReplyObject();
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> HandlerSymbolAppearance::db() const
|
||||
{
|
||||
return m_mainHandler->db();
|
||||
}
|
||||
|
||||
std::shared_ptr<DdsHandler> HandlerSymbolAppearance::dds() const
|
||||
{
|
||||
return m_mainHandler->dds();
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Handle aes filter data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2017-06-16
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QMap>
|
||||
#include <FilterManagement/flt_fts.h>
|
||||
#include "logger.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class DatabaseInterface;
|
||||
class DdsHandler;
|
||||
class Initialization;
|
||||
class HandlerSymbolAppearance final
|
||||
: protected Interface::Fts::SymbolAppearanceUpdateRequestHandler
|
||||
{
|
||||
public:
|
||||
explicit HandlerSymbolAppearance(FilterManagement::Initialization *mainHandler);
|
||||
~HandlerSymbolAppearance();
|
||||
|
||||
bool init();
|
||||
|
||||
private:
|
||||
void cleanup();
|
||||
void onSymbolAppearanceUpdateRequest(const rti::core::SampleIdentity &cookie,
|
||||
const SymbolAppearance &request) override;
|
||||
Core::FunctionReplyObject symbolAppearanceUpdateRequest(const SymbolAppearance &request);
|
||||
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
std::shared_ptr<DdsHandler> dds() const;
|
||||
|
||||
private:
|
||||
struct key
|
||||
{
|
||||
int operatorId = 0;
|
||||
QString ctx;
|
||||
bool operator<(const key &o) const
|
||||
{
|
||||
if (operatorId != o.operatorId)
|
||||
return operatorId < o.operatorId;
|
||||
return ctx < o.ctx;
|
||||
}
|
||||
key() = default;
|
||||
explicit key(int _operatorId, const QString &_ctx)
|
||||
: operatorId(_operatorId)
|
||||
, ctx(_ctx)
|
||||
{}
|
||||
};
|
||||
|
||||
QMap<key, SymbolAppearance *> m_symbolAppearanceMap;
|
||||
Initialization *m_mainHandler;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Initialization for FileManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Iuliana Ojog, SLSE, 2017-04-03
|
||||
*/
|
||||
|
||||
#include "initialization.h"
|
||||
#include "dds_handler.h"
|
||||
#include "handler_aes_filter.h"
|
||||
#include "handler_building_component_filter.h"
|
||||
#include "handler_symbol_appearance.h"
|
||||
#include "handler_filter_data_update.h"
|
||||
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
#include <ngldb/db_service_handler.h>
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
Initialization::Initialization()
|
||||
: m_logger(getLogger("Initialization"))
|
||||
{}
|
||||
|
||||
Initialization::~Initialization()
|
||||
{
|
||||
m_handlerSymbolAppearance = nullptr;
|
||||
m_handlerAesFilter = nullptr;
|
||||
m_handlerBuildingComponentFilter = nullptr;
|
||||
|
||||
m_dbHandler = nullptr;
|
||||
m_ddsHandler = nullptr;
|
||||
}
|
||||
|
||||
bool Initialization::initialize(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector, const QSqlDatabase &sqlDb)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Start FilterManagement Initialization. domainId =" << ddsConnector->getDomainId()
|
||||
<< " exerciseId=" << ddsConnector->getPartitionId();
|
||||
|
||||
// initialize database
|
||||
m_dbHandler = std::make_shared<DbHandler>();
|
||||
|
||||
if (!m_dbHandler->init(ddsConnector->getPartitionId(), sqlDb))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation dbHandler failed.";
|
||||
return false;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Initialisation dbHandler succesful.";
|
||||
|
||||
// initialize DDS
|
||||
m_ddsHandler = std::make_shared<DdsHandler>(ddsConnector);
|
||||
if (!m_ddsHandler->init())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation ddsHandler failed.";
|
||||
return false;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful.";
|
||||
|
||||
m_handlerAesFilter = std::make_shared<HandlerAesFilter>(this);
|
||||
m_handlerBuildingComponentFilter = std::make_shared<HandlerBuildingComponentFilter>(this);
|
||||
m_handlerSymbolAppearance = std::make_shared<HandlerSymbolAppearance>(this);
|
||||
m_handlerFilterDataUpdate = std::make_shared<HandlerFilterDataUpdate>(this);
|
||||
|
||||
DEBUG_LOG(m_logger) << "initialize succesful.";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Initialization::initializeUseMainDdsHandler(const std::shared_ptr<DdsHandler> &ddsHandler, const QSqlDatabase &sqlDb)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Start FilterManagement Initialization2. domainId =" << ddsHandler->ddsConnector()->getDomainId()
|
||||
<< " exerciseId=" << ddsHandler->ddsConnector()->getPartitionId();
|
||||
|
||||
// initialize database
|
||||
m_dbHandler = std::make_shared<DbHandler>();
|
||||
|
||||
if (!m_dbHandler->init(ddsHandler->ddsConnector()->getPartitionId(), sqlDb))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation2 dbHandler failed.";
|
||||
return false;
|
||||
}
|
||||
DEBUG_LOG(m_logger) << "Initialisation2 dbHandler succesful.";
|
||||
|
||||
// initialize DDS
|
||||
// m_ddsHandler = std::make_shared<DdsHandler>(ddsConnector);
|
||||
// if (!m_ddsHandler->init())
|
||||
// {
|
||||
// ERROR_LOG(m_logger) << "Initialisation ddsHandler failed.";
|
||||
// return false;
|
||||
// }
|
||||
// DEBUG_LOG(m_logger) << "Initialisation ddsHandler succesful.";
|
||||
m_ddsHandler = ddsHandler;
|
||||
DEBUG_LOG(m_logger) << "ddsHandler referenced";
|
||||
|
||||
|
||||
m_handlerAesFilter = std::make_shared<HandlerAesFilter>(this);
|
||||
m_handlerBuildingComponentFilter = std::make_shared<HandlerBuildingComponentFilter>(this);
|
||||
m_handlerSymbolAppearance = std::make_shared<HandlerSymbolAppearance>(this);
|
||||
m_handlerFilterDataUpdate = std::make_shared<HandlerFilterDataUpdate>(this);
|
||||
|
||||
DEBUG_LOG(m_logger) << "initialize2 succesful.";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Initialization::loadFromDatabase()
|
||||
{
|
||||
if (!m_handlerAesFilter || !m_handlerAesFilter->init())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation of aes filter handler failed.";
|
||||
return false;
|
||||
}
|
||||
if (!m_handlerBuildingComponentFilter || !m_handlerBuildingComponentFilter->init())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation of building_component handler failed.";
|
||||
return false;
|
||||
}
|
||||
if (!m_handlerSymbolAppearance || !m_handlerSymbolAppearance->init())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Initialisation of symbol appearance handler failed.";
|
||||
return false;
|
||||
}
|
||||
|
||||
DEBUG_LOG(m_logger) << "loadFromDatabase succesful.";
|
||||
return true;
|
||||
}
|
||||
|
||||
std::shared_ptr<DatabaseInterface> Initialization::db() const
|
||||
{
|
||||
return m_dbHandler->db();
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* MainHandler for FileManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Iuliana Ojog, SLSE, 2017-04-03
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "logger.h"
|
||||
#include <FilterManagement/flt_db.h>
|
||||
|
||||
namespace NGLDB
|
||||
{
|
||||
template <typename DB> class DbServiceHandler;
|
||||
}
|
||||
namespace DDSConnector
|
||||
{
|
||||
class DdsConnector;
|
||||
}
|
||||
namespace FilterManagement
|
||||
{
|
||||
using DbHandler = NGLDB::DbServiceHandler<DatabaseInterface>;
|
||||
class DdsHandler;
|
||||
class HandlerAesFilter;
|
||||
class HandlerBuildingComponentFilter;
|
||||
class HandlerSymbolAppearance;
|
||||
class HandlerFilterDataUpdate;
|
||||
class FLT_SERVER_EXPORT Initialization final
|
||||
{
|
||||
public:
|
||||
Initialization();
|
||||
~Initialization();
|
||||
|
||||
bool initialize(const std::shared_ptr<DDSConnector::DdsConnector> &ddsConnector, const QSqlDatabase &sqlDb);
|
||||
bool initializeUseMainDdsHandler(const std::shared_ptr<DdsHandler> &ddsHandler, const QSqlDatabase &sqlDb);
|
||||
bool loadFromDatabase();
|
||||
|
||||
std::shared_ptr<DdsHandler> dds() const { return m_ddsHandler; }
|
||||
std::shared_ptr<DatabaseInterface> db() const;
|
||||
|
||||
private:
|
||||
std::shared_ptr<DdsHandler> m_ddsHandler;
|
||||
std::shared_ptr<DbHandler> m_dbHandler;
|
||||
std::shared_ptr<HandlerAesFilter> m_handlerAesFilter;
|
||||
std::shared_ptr<HandlerBuildingComponentFilter> m_handlerBuildingComponentFilter;
|
||||
std::shared_ptr<HandlerSymbolAppearance> m_handlerSymbolAppearance;
|
||||
std::shared_ptr<HandlerFilterDataUpdate> m_handlerFilterDataUpdate;
|
||||
NGL::INGLLogger &m_logger;
|
||||
|
||||
};
|
||||
} // namespace FilterManagement
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
log4j.reset=true
|
||||
log4j.rootLogger=INFO, file, stdout
|
||||
|
||||
# Service: FilterManagement
|
||||
###########################################################
|
||||
#grep -r getLogger * | cut -d":" -f2
|
||||
|
||||
#log4j.logger.FLT=INFO
|
||||
#log4j.logger.FLT.Db=DEBUG
|
||||
#log4j.logger.FLT.main=INFO
|
||||
#log4j.logger.FLT.DbHandler=INFO
|
||||
#log4j.logger.FLT.DdsHandler=INFO
|
||||
|
||||
#log4j.logger.FLT.HandlerAesFilter=INFO
|
||||
#log4j.logger.FLT.HandlerBuildingComponentFilter=INFO
|
||||
#log4j.logger.FLT.FilterDataUpdate=INFO
|
||||
#log4j.logger.FLT.HandlerSymbolAppearance=INFO
|
||||
|
||||
|
||||
# File
|
||||
###########################################################
|
||||
log4j.appender.file=Lts::RollingFileAppender
|
||||
log4j.appender.file.MaxFileSize=1MB
|
||||
log4j.appender.file.MaxBackupIndex=9
|
||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.file.layout.ConversionPattern=%d %-5p %c |#| %m (%.50F:%L) %n
|
||||
|
||||
# Appnd_Console
|
||||
###########################################################
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern= %d %p %c %c{1} - %m (%-.30F:%L) %n
|
||||
|
||||
# Appnd_Syslog
|
||||
###########################################################
|
||||
log4j.appender.syslog=org.apache.log4j.SyslogAppender
|
||||
log4j.appender.syslog.Threshold=ERROR
|
||||
log4j.appender.syslog.SysLogHost=localhost
|
||||
log4j.appender.syslog.Facility=LOCAL7
|
||||
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.syslog.layout.ConversionPattern= %-4r %-5p %c %x - %m
|
||||
log4j.appender.syslog.LevelRangeFilter.AcceptOnMatch=true
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMin=INFO
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMax=FATAL
|
||||
|
||||
|
||||
###########################################################
|
||||
###########################################################
|
||||
###########################################################
|
||||
# 1) Available Levels in LOG4CXX Version 0.10.0:
|
||||
# TRACE,
|
||||
# DEBUG,
|
||||
# INFO,
|
||||
# WARN,
|
||||
# ERROR
|
||||
# FATAL
|
||||
#
|
||||
# d = date/time
|
||||
# p = priority (Level)
|
||||
# c = category/channel
|
||||
# m = message
|
||||
# F = file
|
||||
# L = line
|
||||
# n = platform dependent line separator character or characters.
|
||||
# ....
|
||||
#
|
||||
# Examples for console:
|
||||
# a)
|
||||
# %d %p %c #%m# (%.50F:%L)%n
|
||||
# date/time
|
||||
# priority
|
||||
# category/channel
|
||||
# #message#
|
||||
# (Maximal 50Character des Filename von rechts:Line)
|
||||
# line separator
|
||||
#
|
||||
# b)
|
||||
# %d (%.15F:%L) %-5p %c |#| %m%n
|
||||
# date/time
|
||||
# (Maximal 15Character des Filename von rechts:Line)
|
||||
# priority, Right pad with spaces if the priority name is less than 5 characters long.
|
||||
# category/channel
|
||||
# message
|
||||
# line separator
|
||||
#
|
||||
# Examples for files:
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Building Config - logging facility
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "logger.h"
|
||||
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
LOGGER_T getLogger(const char *name)
|
||||
{
|
||||
static const char ns[] = "FLT.";
|
||||
std::string loggerName;
|
||||
const size_t len = strlen(name);
|
||||
loggerName.reserve(sizeof(ns) + len);
|
||||
loggerName.append(ns, sizeof(ns) - 1);
|
||||
loggerName.append(name, len);
|
||||
|
||||
try
|
||||
{
|
||||
return NGL::NGLLoggerBootstrap::getNGLRootLogger().
|
||||
getNGLLogger(loggerName);
|
||||
}
|
||||
catch (const std::exception &ex)
|
||||
{
|
||||
fprintf(stderr, "Error retrieving logger: %s", ex.what());
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Logging for FilterManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
#include "flt_export.h"
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
using LOGGER_T = NGL::INGLLogger &;
|
||||
|
||||
FLT_COMMON_EXPORT LOGGER_T getLogger(const char *name);
|
||||
inline LOGGER_T getLogger(const QString &loggerName)
|
||||
{
|
||||
return getLogger(loggerName.toUtf8().constData());
|
||||
}
|
||||
} // namespace FilterManagement
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* main for ExerciseEventManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include <nglapplication/nglcoreapplication.h>
|
||||
#include <LtsCommandLineParser/LtsCommandLineParser.h>
|
||||
#include <QNetworkProxy>
|
||||
#include <Evaluations/settings.h>
|
||||
|
||||
#include "main_handler.h"
|
||||
#include "logger.h"
|
||||
#include "settings.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
NGLCoreApplication app(argc, argv);
|
||||
QNetworkProxy::setApplicationProxy(QNetworkProxy());
|
||||
|
||||
LtsCommandLineParser::LtsCommandLineParser options;
|
||||
if (!options.init())
|
||||
return -1;
|
||||
app.createLogger("FLT", options.exerciseId());
|
||||
|
||||
// ExerciseEventManagement::Settings::setIniFile(options.iniFile());
|
||||
// Evaluations::Settings::setIniFile(options.iniFile());
|
||||
|
||||
int iRet = -3;
|
||||
{
|
||||
std::unique_ptr<FilterManagement::MainHandler> mainHandler(new FilterManagement::MainHandler);
|
||||
|
||||
if (!mainHandler->init(options.domainId(), options.exerciseId()))
|
||||
return iRet;
|
||||
|
||||
STARTUP_LOG(app.baseLogger());
|
||||
|
||||
iRet = app.exec();
|
||||
|
||||
SHUTDOWN_LOG(app.baseLogger());
|
||||
}
|
||||
|
||||
return iRet;
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* MainHandler for RecordingManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
#include "main_handler.h"
|
||||
|
||||
#include "settings.h"
|
||||
|
||||
#include <DDS/Core/pacemaker.h>
|
||||
#include <FilterManagement/initialization.h>
|
||||
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
|
||||
MainHandler::MainHandler()
|
||||
: m_fltService(nullptr)
|
||||
, m_logger(getLogger("MainHandler"))
|
||||
{
|
||||
}
|
||||
|
||||
MainHandler::~MainHandler()
|
||||
{
|
||||
delete m_fltService;
|
||||
m_ddsHandler = nullptr;
|
||||
m_dbHandler = nullptr;
|
||||
}
|
||||
|
||||
|
||||
bool MainHandler::init(int domainId, int exerciseId)
|
||||
{
|
||||
bool bRet = initInternal(domainId, exerciseId);
|
||||
if (bRet)
|
||||
{
|
||||
INFO_LOG(m_logger) << "svcFilterManagement successfully initialized"
|
||||
<< ", domainId" << domainId
|
||||
<< ", exerciseId" << exerciseId;
|
||||
m_ddsHandler->setRunningState(Core::RunningState::Running);
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error initializing svcFilterManagement..."
|
||||
<< ", domainId" << domainId
|
||||
<< ", exerciseId" << exerciseId;
|
||||
if (m_ddsHandler)
|
||||
m_ddsHandler->setRunningState(Core::RunningState::StartingError);
|
||||
}
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
bool MainHandler::initInternal(int domainId, int exerciseId)
|
||||
{
|
||||
// initialize database
|
||||
m_dbHandler = std::make_shared<DbHandler>();
|
||||
if (!m_dbHandler->init(exerciseId, Settings::settings()))
|
||||
return false;
|
||||
|
||||
// initialize DDS
|
||||
if (exerciseId != 0) // svcFilterManagement for excercises is started at ExcerciseEventmanagement
|
||||
return false;
|
||||
|
||||
m_ddsHandler = std::make_shared<DdsHandler>(domainId, exerciseId, IDL::PartitionType::Global);
|
||||
if (!m_ddsHandler->init())
|
||||
return false;
|
||||
|
||||
m_fltService = new FilterManagement::Initialization;
|
||||
|
||||
// Norbert Thoden, 28.09.2022
|
||||
// typically the ddsConnector is transfered to XY::Initialization::initialize
|
||||
// Unfortunately that leads to a WARNING at flt_fts_impl.cpp later.
|
||||
// WARNING_LOG(m_logger) << "Incoming BuildingComponentFilterUpdateRequest without registered handler!";
|
||||
// It seems like that there a two ddshandler, the first sets the m_buildingComponentFilterUpdateRequestHandler,
|
||||
// but the second require that... -> assert
|
||||
// Don´t know why this happens. At other processes,/service that seems to work... hmm
|
||||
// So let FilterManagement::Initialization use the main m_ddsHandler:
|
||||
// -> initializeUseMainDdsHandler()
|
||||
// if (!m_fltService->initialize(m_ddsHandler->ddsConnector(), m_dbHandler->db()->database()))
|
||||
if (!m_fltService->initializeUseMainDdsHandler(m_ddsHandler, m_dbHandler->db()->database()))
|
||||
return false;
|
||||
|
||||
if (!m_fltService->loadFromDatabase())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
} // FilterManagement
|
||||
Executable
+43
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* MainHandler for RecordingManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <FilterManagement/flt_db.h>
|
||||
#include "dds_handler.h"
|
||||
#include "logger.h"
|
||||
#include <ngldb/db_service_handler.h>
|
||||
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class Initialization;
|
||||
}
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
using DbHandler = NGLDB::DbServiceHandler<DatabaseInterface>;
|
||||
|
||||
class MainHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainHandler();
|
||||
~MainHandler();
|
||||
|
||||
bool init(int domainId, int exerciseId);
|
||||
|
||||
private:
|
||||
bool initInternal(int domainId, int exerciseId);
|
||||
|
||||
std::shared_ptr<DdsHandler> m_ddsHandler;
|
||||
std::shared_ptr<DbHandler> m_dbHandler;
|
||||
|
||||
FilterManagement::Initialization *m_fltService;
|
||||
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
} // namespace FilterManagement
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Settings for FilterManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "settings.h"
|
||||
|
||||
#include <QtCore/QSettings>
|
||||
#include <nglsettings/nglsettings_settings.h>
|
||||
#include <ngltools/ngltools_filesystem.h>
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
class NGLSettingsClass : public NGL::Settings
|
||||
{
|
||||
public:
|
||||
NGLSettingsClass()
|
||||
: NGL::Settings(s_iniFile.isEmpty() ? NGL::findProjectConfigFile() : s_iniFile)
|
||||
{}
|
||||
static void setIniFile(const QString &fn)
|
||||
{
|
||||
s_iniFile = fn;
|
||||
}
|
||||
static QString s_iniFile;
|
||||
};
|
||||
QString NGLSettingsClass::s_iniFile;
|
||||
Q_GLOBAL_STATIC(NGLSettingsClass, s)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
NGL::Settings *Settings::settings()
|
||||
{
|
||||
return s();
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
void Settings::setIniFile(const QString &ini)
|
||||
{
|
||||
NGLSettingsClass::setIniFile(ini);
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Settings for FilterManagement
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <QString>
|
||||
|
||||
namespace NGL
|
||||
{
|
||||
class Settings;
|
||||
}
|
||||
|
||||
namespace FilterManagement
|
||||
{
|
||||
namespace Settings
|
||||
{
|
||||
NGL::Settings *settings();
|
||||
void setIniFile(const QString &ini);
|
||||
}
|
||||
|
||||
} // namespace FilterManagement
|
||||
Reference in new issue
Block a user