Adds immediate migration results in progress

This commit is contained in:
torsten committed 2026-08-19 11:18:24 +02:00
1 parent 8453e104c5
commit 3bb6e89496
2102 files changed
+17482 -15071

No files matched your search

@@ -16,13 +16,12 @@
namespace Buildings
{
IsmHandler::IsmHandler(MainHandler *mainHandler)
: m_mainHandler(mainHandler)
IsmHandler::IsmHandler(MainHandler *mainHandler) : m_mainHandler(mainHandler)
, m_dtcIsm(nullptr)
, m_ftcIsm(nullptr)
, m_changeTimeoutTimer(new QTimer(this))
, m_changeTimeoutTimerInit(new QTimer(this))
{
, m_changeTimeoutTimerInit(new QTimer(this)),
m_logger(NGL::NGLLoggerBootstrap::getLogger()) {
connect(m_changeTimeoutTimer, &QTimer::timeout,
this, &IsmHandler::onBuildingsChanged);
m_changeTimeoutTimer->setInterval(3 * 1000);
@@ -57,13 +56,13 @@ bool IsmHandler::init()
!m_dtcIsm->enableMountingPointAsset() ||
!m_dtcIsm->enableBridgeChangeStatus())
{
ERROR_LOG() << "Can not read data from ISM";
ERROR_LOG(m_logger) << "Can not read data from ISM";
return false;
}
m_ftcIsm = InfrastructureManagement::Interface::Ftc::create(m_mainHandler->ddsHandler()->ddsConnector());
if (!m_ftcIsm->enableStructureElementUpdateEffectOverride())
{
ERROR_LOG() << "Can not read data from ISM";
ERROR_LOG(m_logger) << "Can not read data from ISM";
return false;
}
m_changeTimeoutTimerInit->start();
@@ -105,14 +104,14 @@ void IsmHandler::onInstrumentationAssetChanged(const InfrastructureManagement::I
case DataModification::eModified:
{
const int exerciseId = data.availableInExercise().size() == 0 ? 0 : data.availableInExercise().at(0);
DEBUG_LOG() << "setting asset " << data.id() << " available in exercise " << exerciseId;
DEBUG_LOG(m_logger) << "setting asset " << data.id() << " available in exercise " << exerciseId;
m_assetMainStructureElementInExercise.insert(data.id(), exerciseId);
break;
}
case DataModification::eRemoved:
{
const int exerciseId = data.availableInExercise().size() == 0 ? 0 : data.availableInExercise().at(0);
DEBUG_LOG() << "removing asset " << data.id() << " from exercise " << exerciseId;
DEBUG_LOG(m_logger) << "removing asset " << data.id() << " from exercise " << exerciseId;
m_assetMainStructureElementInExercise.remove(data.id());
break;
}
@@ -127,11 +126,11 @@ void IsmHandler::onMountingPointAssetChanged(const InfrastructureManagement::Mou
{
case DataModification::eAdded:
case DataModification::eModified:
DEBUG_LOG() << "mounting asset " << data.assetId() << " on structure element id " << data.structureElementId();
DEBUG_LOG(m_logger) << "mounting asset " << data.assetId() << " on structure element id " << data.structureElementId();
m_structureElementId2AssetId.insert(data.structureElementId(), data.assetId());
break;
case DataModification::eRemoved:
DEBUG_LOG() << "unmounting asset " << m_structureElementId2AssetId.value(data.structureElementId()) << " from structure element " << data.structureElementId();
DEBUG_LOG(m_logger) << "unmounting asset " << m_structureElementId2AssetId.value(data.structureElementId()) << " from structure element " << data.structureElementId();
m_structureElementId2AssetId.remove(data.structureElementId());
break;
}
@@ -140,7 +139,7 @@ void IsmHandler::onMountingPointAssetChanged(const InfrastructureManagement::Mou
void IsmHandler::onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &data, DataModification modType)
{
DEBUG_LOG() << Q_FUNC_INFO;
DEBUG_LOG(m_logger) << Q_FUNC_INFO;
switch (modType)
{
case DataModification::eAdded:
@@ -149,10 +148,10 @@ void IsmHandler::onMainStructureElementChanged(const InfrastructureManagement::M
if (!isElementAssignedToExercise (data.id(),m_mainHandler->exerciseId() ) )
{
m_mainStructureElements.remove(data.id());
DEBUG_LOG() << "Building not in exercise id=" << data.id();
DEBUG_LOG(m_logger) << "Building not in exercise id=" << data.id();
return;
}
DEBUG_LOG() << "Building=" << data.name()
DEBUG_LOG(m_logger) << "Building=" << data.name()
<< " properties=" << data.properties();
QJsonParseError parserError;
QByteArray content = QByteArray::fromStdString(data.properties());
@@ -160,24 +159,24 @@ void IsmHandler::onMainStructureElementChanged(const InfrastructureManagement::M
const QJsonDocument doc(QJsonDocument::fromJson(content, &parserError));
if (parserError.error != QJsonParseError::NoError)
{
WARNING_LOG() << "Error parsing json document: " << parserError.errorString();
WARNING_LOG(m_logger) << "Error parsing json document: " << parserError.errorString();
return;
}
DEBUG_LOG() << "json to parse: " << doc.toJson();
DEBUG_LOG(m_logger) << "json to parse: " << doc.toJson();
const QJsonObject objProperties(doc.object());
if ( objProperties.contains(QStringLiteral("start_building_process")))
{
DEBUG_LOG() << "properties contains start_building_process";
DEBUG_LOG(m_logger) << "properties contains start_building_process";
bool startBuildingProcess = objProperties.value(QStringLiteral("start_building_process")).toBool();
if (!startBuildingProcess)
{
DEBUG_LOG() << "Building=" << data.name()
DEBUG_LOG(m_logger) << "Building=" << data.name()
<< " start_building_process = false ";
return;
}
}
DEBUG_LOG() << "##### onMainStructureElementChanged - ID = " << data.id();
DEBUG_LOG(m_logger) << "##### onMainStructureElementChanged - ID = " << data.id();
checkOverride( m_mainStructureElements[data.id()], data);
m_mainStructureElements[data.id()] = data;
break;
@@ -192,13 +191,13 @@ void IsmHandler::onMainStructureElementChanged(const InfrastructureManagement::M
void IsmHandler::onBridgeStatusChanged(const InfrastructureManagement::BridgeChangeStatus &data, DataModification modType)
{
static int s_id = 1;
DEBUG_LOG() << Q_FUNC_INFO << "s_id=" << s_id;
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "s_id=" << s_id;
switch (modType)
{
case DataModification::eAdded:
case DataModification::eModified:
{
DEBUG_LOG() << "##### onBridgeStatusChanged - buildingId = " << data.buildingId();
DEBUG_LOG(m_logger) << "##### onBridgeStatusChanged - buildingId = " << data.buildingId();
BridgeStatus bs;
bs.id(s_id++);
bs.buildingId(data.buildingId());
@@ -215,17 +214,17 @@ void IsmHandler::onBridgeStatusChanged(const InfrastructureManagement::BridgeCha
void IsmHandler::getEgcuToRoom(const InfrastructureManagement::MainStructureElement &mse, QVector<EgcuInfo> &eis)
{
INFO_LOG() << "properties=" << mse.properties();
INFO_LOG(m_logger) << "properties=" << mse.properties();
QJsonParseError parserError;
QByteArray content = QByteArray::fromStdString(mse.properties());
const QJsonDocument doc(QJsonDocument::fromJson(content, &parserError));
if (parserError.error != QJsonParseError::NoError)
{
WARNING_LOG() << "Error parsing json document: " << parserError.errorString();
WARNING_LOG(m_logger) << "Error parsing json document: " << parserError.errorString();
return;
}
DEBUG_LOG() << "json to parse: " << doc.toJson();
DEBUG_LOG(m_logger) << "json to parse: " << doc.toJson();
const QJsonObject objEgcus(doc.object());
const QJsonArray arrEgcus(objEgcus.value(QStringLiteral("egcusToRooms")).toArray());
for (int i = 0; i < arrEgcus.size(); ++i)
@@ -233,19 +232,19 @@ void IsmHandler::getEgcuToRoom(const InfrastructureManagement::MainStructureElem
const QJsonObject objRooms(arrEgcus.at(i).toObject());
const int mountpointEgcuId = objRooms[QStringLiteral("mountpointEgcu")].toInt();
INFO_LOG() << "mountpointEgcu=" << mountpointEgcuId;
INFO_LOG() << "i=" <<i;
INFO_LOG(m_logger) << "mountpointEgcu=" << mountpointEgcuId;
INFO_LOG(m_logger) << "i=" <<i;
const QJsonArray arrRooms(objRooms.value(QStringLiteral("rooms")).toArray());
INFO_LOG() << "bi.egcus.size()=" << eis.size();
INFO_LOG(m_logger) << "bi.egcus.size()=" << eis.size();
for (EgcuInfo &egcuInfo : eis)
{
DEBUG_LOG() << "bi.egcus.at(k).mountPointId=" << egcuInfo.mountPointId
DEBUG_LOG(m_logger) << "bi.egcus.at(k).mountPointId=" << egcuInfo.mountPointId
<< " mountpointEgcu=" << mountpointEgcuId;
if (egcuInfo.mountPointId == mountpointEgcuId)
{
DEBUG_LOG() << "mountpointEgcu=" << mountpointEgcuId;
DEBUG_LOG(m_logger) << "mountpointEgcu=" << mountpointEgcuId;
egcuInfo.roomIds.clear();
egcuInfo.roomIds.reserve(arrRooms.size());
@@ -273,10 +272,10 @@ void IsmHandler::buildingsChanged(bool init)
QSet<int> availableBuildingIds;
QMap<int, BuildingInfo> newBuildingConfiguration;
availableBuildingIds.reserve(m_mainStructureElements.size());
INFO_LOG() << "Updating building config m_mainStructureElements.size=" << m_mainStructureElements.size();
INFO_LOG(m_logger) << "Updating building config m_mainStructureElements.size=" << m_mainStructureElements.size();
for (const InfrastructureManagement::MainStructureElement &mse : std::as_const(m_mainStructureElements))
{
DEBUG_LOG() << "Checking building " << mse.id() << " - " << mse.name();
DEBUG_LOG(m_logger) << "Checking building " << mse.id() << " - " << mse.name();
BuildingInfo bi;
bi.mseId = mse.id();
bi.modelId = mse.modelId();
@@ -300,7 +299,7 @@ void IsmHandler::buildingsChanged(bool init)
bi.subId2RoomId.insert(se.mountingPointId(), se.id());
bi.roomId2SubId.insert(se.id(), se.mountingPointId());
bi.roomName2RoomId.insert(QString::fromStdString(se.name()), se.mountingPointId());
INFO_LOG() << " Room: mountingPointId: " << se.mountingPointId()
INFO_LOG(m_logger) << " Room: mountingPointId: " << se.mountingPointId()
<< ", roomId: " << se.id()
<< ", Name: " << se.name();
m_roomId2RoomName.insert(se.id(), QString::fromStdString(se.name()));
@@ -308,13 +307,13 @@ void IsmHandler::buildingsChanged(bool init)
}
if (m_mainHandler->exerciseId() != bi.currentExerciseId)
{
DEBUG_LOG() << "Exercise id of building does not match current exercise: " << bi.currentExerciseId
DEBUG_LOG(m_logger) << "Exercise id of building does not match current exercise: " << bi.currentExerciseId
<< " != " << m_mainHandler->exerciseId()
<< " buildingId=" << bi.mseId
<< " buildingName" << bi.name;
continue;
}
INFO_LOG() << "Adding building configuration for " << mse.id() << " - " << mse.name();
INFO_LOG(m_logger) << "Adding building configuration for " << mse.id() << " - " << mse.name();
availableBuildingIds += mse.id();
getEgcuToRoom(mse, bi.egcus);
newBuildingConfiguration.insert(bi.mseId, bi);
@@ -325,7 +324,7 @@ void IsmHandler::buildingsChanged(bool init)
if (!availableBuildingIds.contains(buildingId))
{
INFO_LOG() << "Building " << buildingId << " no longer exists in this exercise - removing";
INFO_LOG(m_logger) << "Building " << buildingId << " no longer exists in this exercise - removing";
emit buildingRemoved(buildingId);
continue;
}
@@ -333,11 +332,11 @@ void IsmHandler::buildingsChanged(bool init)
const BuildingInfo &biNew = newBuildingConfiguration.value(buildingId);
if (biOld == biNew)
{
INFO_LOG() << "Building " << buildingId << " did not change - nothing to do";
INFO_LOG(m_logger) << "Building " << buildingId << " did not change - nothing to do";
}
else
{
INFO_LOG() << "setHistoryState Building " << buildingId << " changed -> updating configuration"
INFO_LOG(m_logger) << "setHistoryState Building " << buildingId << " changed -> updating configuration"
<< " biNew mseId=" << biNew.mseId
<< " init=" << init;
bool initBuildingChanged = true;
@@ -348,7 +347,7 @@ void IsmHandler::buildingsChanged(bool init)
{
if (m_currentBuildingConfiguration.contains(it.key()))
continue;
INFO_LOG() << "setHistoryState New building added key= " << it.key()
INFO_LOG(m_logger) << "setHistoryState New building added key= " << it.key()
<< " init=" << init;
emit buildingChanged(it.value(), init);
}
@@ -372,7 +371,7 @@ void IsmHandler::handleBuildingSensorModule(const InfrastructureManagement::Stru
bsi.port = getBsmPortFromJSon(ia.properties());
bsi.relPosition = se.relPosition();
bsi.orientation = se.orientation();
DEBUG_LOG() << "adding bsm sensor module to building " << bi.mseId << ": " << bsi.assetId << ", " << bsi.bsmId << ", " << bsi.hostname;
DEBUG_LOG(m_logger) << "adding bsm sensor module to building " << bi.mseId << ": " << bsi.assetId << ", " << bsi.bsmId << ", " << bsi.hostname;
bi.bsms.insert(bsi.assetId, bsi);
}
@@ -387,7 +386,7 @@ void IsmHandler::handleBuildingControlUnit(const InfrastructureManagement::Struc
auto itMpa = m_structureElementId2AssetId.find(se.id());
if (itMpa == m_structureElementId2AssetId.end())
{
INFO_LOG() << "structure element id " << se.id() << " not (yet)found"
INFO_LOG(m_logger) << "structure element id " << se.id() << " not (yet)found"
<< " bi.mseId=" << bi.mseId
<< " bi.assetId=" << bi.assetId
<< " bi.egcus.size=" << bi.egcus.size()
@@ -398,31 +397,31 @@ void IsmHandler::handleBuildingControlUnit(const InfrastructureManagement::Struc
const auto itAsset = m_assetMainStructureElementInExercise.find(assetId);
if (itAsset == m_assetMainStructureElementInExercise.end())
{
ERROR_LOG() << "asset id " << assetId << " not found";
ERROR_LOG(m_logger) << "asset id " << assetId << " not found";
Q_ASSERT(false);
return;
}
bi.currentExerciseId = itAsset.value();
bi.assetId = itAsset.key();
DEBUG_LOG() << "adding bsm control unit (virtual) to building " << bi.mseId << ": " << bi.assetId << ", " << bi.currentExerciseId;
DEBUG_LOG(m_logger) << "adding bsm control unit (virtual) to building " << bi.mseId << ": " << bi.assetId << ", " << bi.currentExerciseId;
}
void IsmHandler::handleEffectGenerationControlUnit(const InfrastructureManagement::StructureElement &se, BuildingInfo &bi) const
{
DEBUG_LOG() << "BuildingId=" << bi.mseId
DEBUG_LOG(m_logger) << "BuildingId=" << bi.mseId
<< " se.id=" << se.id();
auto itMpa = m_structureElementId2AssetId.find(se.id());
if (itMpa == m_structureElementId2AssetId.end())
{
INFO_LOG() << "Return m_structureElementId2AssetId.size()=" << m_structureElementId2AssetId.size();
INFO_LOG(m_logger) << "Return m_structureElementId2AssetId.size()=" << m_structureElementId2AssetId.size();
return;
}
const int assetId = itMpa.value();
const auto itAsset = m_instAssets.find(assetId);
if (itAsset == m_instAssets.end())
{
INFO_LOG() << "Return m_instAssets.size()=" << m_instAssets.size();
INFO_LOG(m_logger) << "Return m_instAssets.size()=" << m_instAssets.size();
return;
}
const InfrastructureManagement::InstrumentationAsset &ia = itAsset.value();
@@ -433,12 +432,12 @@ void IsmHandler::handleEffectGenerationControlUnit(const InfrastructureManagemen
egcu.mountPointId = se.mountingPointId();
egcu.hostname = QString::fromStdString(ia.hostname());
egcu.assetId = assetId;
DEBUG_LOG() << "Egcu.hostname=" << egcu.hostname;
INFO_LOG() << "properties=" << ia.properties();
DEBUG_LOG(m_logger) << "Egcu.hostname=" << egcu.hostname;
INFO_LOG(m_logger) << "properties=" << ia.properties();
bi.egcus.push_back(egcu);
DEBUG_LOG() << "adding egcu to building " << bi.mseId << ": " << egcu.hostname
DEBUG_LOG(m_logger) << "adding egcu to building " << bi.mseId << ": " << egcu.hostname
<< " name=" << egcu.buildingName
<< " mountPointName=" << egcu.mountPointName
<< " mountPointId=" << egcu.mountPointId
@@ -470,37 +469,37 @@ void IsmHandler::checkOverride(const InfrastructureManagement::MainStructureElem
const InfrastructureManagement::MainStructureElement &mseNew)
{
DEBUG_LOG() << Q_FUNC_INFO;
DEBUG_LOG() << "mseOld.elements().size()=" << mseOld.elements().size()
DEBUG_LOG(m_logger) << Q_FUNC_INFO;
DEBUG_LOG(m_logger) << "mseOld.elements().size()=" << mseOld.elements().size()
<< " mseNew.elements().size()=" << mseNew.elements().size();
for (const InfrastructureManagement::StructureElement &se : mseNew.elements())
{
DEBUG_LOG() << "se=" << se.id()
DEBUG_LOG(m_logger) << "se=" << se.id()
<< " name=" << se.name()
<< " displayName=" << se.displayName()
<< " properties=" << se.properties();
for (const InfrastructureManagement::StructureElement &seOld : mseOld.elements())
{
DEBUG_LOG() << "seOld.id=" << seOld.id()
DEBUG_LOG(m_logger) << "seOld.id=" << seOld.id()
<< " se.id=" << se.id();
if ( seOld.id() == se.id())
{
DEBUG_LOG() << "Properties =" << se.properties()
DEBUG_LOG(m_logger) << "Properties =" << se.properties()
<< " se.id=" << se.id()
<< " se.name=" << se.name()
<< " mountingPointId=" << se.mountingPointId();
DEBUG_LOG() << "se.properties()=" << se.properties()
DEBUG_LOG(m_logger) << "se.properties()=" << se.properties()
<< " seOld.properties()=" << seOld.properties();
if (se.properties() != seOld.properties() )
{
DEBUG_LOG() << "HandleOverrides"
DEBUG_LOG(m_logger) << "HandleOverrides"
"<< m_currentBuildingConfiguration.size=" << m_currentBuildingConfiguration.size();
if ( se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Building)
{
DEBUG_LOG() << "BSM-Flash, no EGCU";
DEBUG_LOG(m_logger) << "BSM-Flash, no EGCU";
QByteArray properties = QByteArray::fromStdString(se.properties());
emit setEffectStates(mseNew.id(), 0, properties );
continue;
@@ -508,13 +507,13 @@ void IsmHandler::checkOverride(const InfrastructureManagement::MainStructureElem
for (auto it = m_currentBuildingConfiguration.begin(); it != m_currentBuildingConfiguration.end(); ++it)
{
BuildingInfo &bi = it.value();
DEBUG_LOG() << "key=" << it.key()
DEBUG_LOG(m_logger) << "key=" << it.key()
<< " id=" << bi.mseId
<< " assetId=" << bi.assetId
<< " egcus.size=" << bi.egcus.size();
for (const auto &egcu : std::as_const(bi.egcus))
{
DEBUG_LOG() << "AssetId=" << egcu.assetId
DEBUG_LOG(m_logger) << "AssetId=" << egcu.assetId
<< " assetName=" << egcu.assetName
<< " hostname=" << egcu.hostname
<< " egcu.mountPointId=" << egcu.mountPointId
@@ -522,7 +521,7 @@ void IsmHandler::checkOverride(const InfrastructureManagement::MainStructureElem
if (egcu.mountPointId == se.mountingPointId())
{
QByteArray properties = QByteArray::fromStdString(se.properties());
DEBUG_LOG() << "Send Json SetEffectStates to BuildingProcess"
DEBUG_LOG(m_logger) << "Send Json SetEffectStates to BuildingProcess"
<< " buildingId="
<< " assetId="<< egcu.assetId
<< " properties =" << properties;
@@ -535,7 +534,7 @@ void IsmHandler::checkOverride(const InfrastructureManagement::MainStructureElem
}
else
{
TRACE_LOG() << "No changes do not HandleOverrides";
TRACE_LOG(m_logger) << "No changes do not HandleOverrides";
}
}
@@ -549,7 +548,7 @@ void IsmHandler::checkOverride(const InfrastructureManagement::MainStructureElem
int assetId;
bool foundAssetId = m_dtcIsm->getAssetIdFromMountingPoint(se.id(), se.mountingPointId(), assetId);
DEBUG_LOG() << "Send Overrides to BuildingProcess (EGCU)"
DEBUG_LOG(m_logger) << "Send Overrides to BuildingProcess (EGCU)"
<< " foundAssetId=" << foundAssetId
<< " structureElementId=" << mseNew.id()
<< " se.id=" << se.id()