/** * @RDE_HEADER@ * Wandelt DDS-Strukturen in Database-Strukturen * $Id$ * $HeadURL$ * $Author$ */ #include "ddsdbconvert.h" #include namespace AreaEffectSimulation { namespace DdsDbConvert { Database::AesNContamination nContamination(const AreaEffectSimulation::NContamination &src) { Database::AesNContamination dst; dst.id = src.id; dst.chargeTypeId = src.chargeStruct.chargeTypeId; dst.effectStateId = src.effectStateId; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0; dst.effectDuration = src.effectDuration; dst.effectStart = src.effectStart.is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime(); dst.name = QString::fromStdString(src.name); dst.impactPosition.rx() = src.impactPosition.lon; dst.impactPosition.ry() = src.impactPosition.lat; dst.borderLengthInner = src.borderLengthInner; dst.borderLengthOuter = src.borderLengthOuter; dst.impactRadius = src.impactRadius; dst.spanAngle = src.spanAngle; dst.rotationAngle = src.rotationAngle; dst.detonationValue = src.detonationValue; // dst.priv_entityId; // dst.privNContaminationId; return dst; } Database::AesBCContamination bcContamination(const BCContamination &src) { Database::AesBCContamination dst; dst.id = src.id; dst.effectStateId = src.effectStateId; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0; dst.effectDuration = src.effectDuration; dst.effectStart = src.effectStart.is_set() ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime(); dst.name = QString::fromStdString(src.name); dst.impactPosition.rx() = src.impactPosition.lon; dst.impactPosition.ry() = src.impactPosition.lat; dst.impactRadius = src.impactRadius; dst.chargeTypeId = src.chargeStruct.chargeTypeId; dst.windSpeed = src.windSpeed; dst.weatherTimestamp = QDateTime::fromMSecsSinceEpoch(src.weatherTimestamp); dst.propagationDirection = src.propagationDirection; dst.weatherPosition = dst.impactPosition; // initial, is not used during update therefore it's ok here dst.upperOffset = src.upperOffset; dst.lowerOffset = src.lowerOffset; // dst.expansionFactor; // dst.isDynamicWeather; // dst.priv_entityId; // dst.privBCContaminationId; return dst; } Database::AesExplosionArea explosionArea(const ExplosionArea &src) { Database::AesExplosionArea dst; dst.id = src.id; dst.effectStateId = src.effectStateId; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0; dst.effectDuration = src.effectDuration; dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime(); dst.name = QString::fromStdString(src.name); dst.impactPosition.rx() = src.area.cornerBottomLeft.lon; dst.impactPosition.ry() = src.area.cornerBottomLeft.lat; dst.impactLength = src.area.height; dst.impactWidth = src.area.width; dst.rotationAngle = src.area.rotation; dst.chargeTypeId = src.chargeStruct.chargeTypeId; dst.cannonCount = src.cannonCount; dst.cannonRounds = src.cannonRounds; dst.originalEffectStart = src.originalEffectStart > 0 ? QDateTime::fromMSecsSinceEpoch(src.originalEffectStart) : QDateTime(); dst.originalEffectDuration = src.originalEffectDuration; dst.remainExplosionNumber = src.remainExplosionNumber; // dst.firePurpose; // dst.fireRequestTime; // dst.priv_entityId; // dst.priv_explosionId; // dst.privExplosionAreaId; return dst; } Database::AesExplosionSingle explosionSingle(const ExplosionSingle &src) { Database::AesExplosionSingle dst; dst.id = src.id; dst.effectStateId = src.effectStateId; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0; dst.effectDuration = src.effectDuration; dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime(); dst.name = QString::fromStdString(src.name); dst.impactPosition.rx() = src.impactPosition.lon; dst.impactPosition.ry() = src.impactPosition.lat; dst.chargeTypeId = src.chargeStruct.chargeTypeId; // dst.priv_entityId; // dst.priv_explosionId; // dst.privExplosionSingleId; return dst; } Database::AesMineArea mineArea(const MineArea &src) { Database::AesMineArea dst; dst.id = src.id; dst.name = QString::fromStdString(src.name); dst.effectStart = src.effectStart.is_set() && src.effectStart.get() > 0 ? QDateTime::fromMSecsSinceEpoch(src.effectStart.get()) : QDateTime(); dst.effectDuration = src.effectDuration; dst.partyId = src.partyId.is_set() ? src.partyId.get() : 0; dst.chargeTypeId = src.chargeStruct.chargeTypeId; dst.participantId = src.participantId.is_set() ? src.participantId.get() : 0; dst.density = src.density; dst.width = src.width; dst.layingProcedureTypeId = src.layingProcedureType; dst.isLaidHidden = src.isLaidHidden; dst.effectStateId = src.effectStateId; dst.isCenterLine = src.isCenterLine; // qint32 priv_entityId; // qint32 priv_mineId; // qint32 privMineAreaId; return dst; } QVector mineAreaSegments(const MineArea &src) { const std::vector &segments = src.segments; QVector dbSegments; dbSegments.reserve(segments.size()); for (size_t i = 0; i < segments.size(); ++i) { Database::AesMineAreaSegment newSegment; newSegment.elementNumber = i; newSegment.mineAreaId = src.id; // Todo: korrekt? newSegment.id = 0; newSegment.startPosition = QPointF(segments[i].positionStart.lon, segments[i].positionStart.lat); newSegment.endPosition = QPointF(segments[i].positionEnd.lon, segments[i].positionEnd.lat); dbSegments << newSegment; } return dbSegments; } } // namespace DdsDbConvert } // namespace AreaEffectSimulation