Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+141
@@ -0,0 +1,141 @@
|
||||
/**
|
||||
* The Participant class is the base class for either Buildings or ExerciseParticipants.
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Baeuerle, SLSE, 2016-05-23
|
||||
*/
|
||||
|
||||
#include "participant_for_exercise.h"
|
||||
#include "main_handler.h"
|
||||
#include "convert_db_to_dds.h"
|
||||
|
||||
namespace ParticipantManagement
|
||||
{
|
||||
namespace ParticipantHandling
|
||||
{
|
||||
|
||||
//
|
||||
// ParticipantForExercise
|
||||
//
|
||||
ParticipantForExercise::ParticipantForExercise(MainHandler *mainHandler,
|
||||
ParticipantHandler *particpantHandler,
|
||||
UnitPositionCalculator *unitPosCalculator,
|
||||
const Database::PpmParticipant &data)
|
||||
: Participant(particpantHandler, unitPosCalculator, data, "Participant")
|
||||
, m_mainHandler(mainHandler)
|
||||
{}
|
||||
|
||||
ParticipantForExercise::~ParticipantForExercise()
|
||||
{
|
||||
removeFromDds();
|
||||
}
|
||||
|
||||
bool ParticipantForExercise::applyEquipmentExerciseMapping(int newEqId)
|
||||
{
|
||||
if (!newEqId)
|
||||
return true;
|
||||
|
||||
if (m_equipmentExerciseMappingPublished.equipmentNumber == newEqId &&
|
||||
m_equipmentExerciseMappingPublished.participantId == id() &&
|
||||
m_equipmentExerciseMappingPublished.exerciseId == m_mainHandler->exerciseId())
|
||||
return true;
|
||||
|
||||
|
||||
Database::EquipmentExerciseMapping dbEem;
|
||||
dbEem.equipmentNumber = newEqId;
|
||||
dbEem.participantId = id();
|
||||
dbEem.exerciseId = m_mainHandler->exerciseId();
|
||||
|
||||
DEBUG_LOG(m_logger) << "Inserting EquipmentExerciseMapping into db: " << dbEem.equipmentNumber
|
||||
<< ", " << dbEem.participantId
|
||||
<< ", " << dbEem.exerciseId;
|
||||
if (!m_mainHandler->dbEx0()->insert(dbEem))
|
||||
{
|
||||
m_participantData.equipmentNumber().reset();
|
||||
m_participantData.assignState(ParticipantAssignState::NotAssigned);
|
||||
publishParticipant();
|
||||
return false;
|
||||
}
|
||||
|
||||
m_participantHandler->setEquipmentNumberForParticipant(m_equipmentExerciseMappingPublished.equipmentNumber,
|
||||
dbEem.equipmentNumber,
|
||||
id());
|
||||
m_equipmentExerciseMappingPublished = dbEem;
|
||||
return true;
|
||||
}
|
||||
|
||||
void ParticipantForExercise::removeEquipmentExerciseMapping(int oldEqId, bool bIsShutdown)
|
||||
{
|
||||
if (!oldEqId)
|
||||
return;
|
||||
m_equipmentExerciseMappingPublished = Database::EquipmentExerciseMapping();
|
||||
|
||||
if (!bIsShutdown)
|
||||
{
|
||||
Database::EquipmentExerciseMapping dbEem;
|
||||
dbEem.equipmentNumber = oldEqId;
|
||||
dbEem.participantId = id();
|
||||
dbEem.exerciseId = m_mainHandler->exerciseId();
|
||||
m_mainHandler->dbEx0()->removeEquipmentExerciseMapping(dbEem);
|
||||
m_participantHandler->setEquipmentNumberForParticipant(oldEqId, 0, id());
|
||||
}
|
||||
}
|
||||
|
||||
bool ParticipantForExercise::updateEquipmentExerciseMapping(int oldEqId, int newEqId)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "updateEquipmentExerciseMapping from " << oldEqId << " to " << newEqId;
|
||||
if (oldEqId == newEqId)
|
||||
return true;
|
||||
removeEquipmentExerciseMapping(oldEqId, false);
|
||||
return applyEquipmentExerciseMapping(newEqId);
|
||||
}
|
||||
|
||||
bool ParticipantForExercise::publishParticipant()
|
||||
{
|
||||
return Participant::publishParticipant();
|
||||
}
|
||||
|
||||
void ParticipantForExercise::removeFromDds() // only called on shutdown
|
||||
{
|
||||
removeEquipmentExerciseMapping(equipmentNumber(), true);
|
||||
Participant::removeFromDds();
|
||||
}
|
||||
|
||||
void ParticipantForExercise::registerInfoFromFt(const RegisterParticipantRequest &request)
|
||||
{
|
||||
m_participantData.info(request.info());
|
||||
m_participantData.identification(request.identification());
|
||||
}
|
||||
|
||||
bool ParticipantForExercise::registerFromFt(const RegisterParticipantRequest &request)
|
||||
{
|
||||
int newEquipmentNumber = request.equipmentNumber();
|
||||
// just to be sure ...
|
||||
if (request.assignState() == ParticipantAssignState::NotAssigned)
|
||||
newEquipmentNumber = 0;
|
||||
|
||||
if (!updateEquipmentExerciseMapping(equipmentNumber(), newEquipmentNumber))
|
||||
return false;
|
||||
particpantHandler()->setEquipmentNumberForParticipant(equipmentNumber(),
|
||||
newEquipmentNumber,
|
||||
id());
|
||||
|
||||
INFO_LOG(m_logger) << "Set assign state for participant " << id() << " from "
|
||||
<< assignState() << " to " << request.assignState()
|
||||
<< ", old eqid: " << equipmentNumber() << ", new eqid: "
|
||||
<< newEquipmentNumber;
|
||||
|
||||
if (newEquipmentNumber)
|
||||
m_participantData.equipmentNumber(newEquipmentNumber);
|
||||
else
|
||||
m_participantData.equipmentNumber().reset();
|
||||
m_participantData.assignState(request.assignState());
|
||||
m_participantData.info(request.info());
|
||||
m_participantData.identification(request.identification());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
} // namespace ParticipantHandling
|
||||
} // namespace ParticipantManagement
|
||||
Reference in new issue
Block a user