/** * @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