/** * @RDE_HEADER@ * ISM Object Structure Element * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2016-11-26 */ #pragma once #include "base.h" #include #include #include namespace LtsCoordTrans { struct UtmCoordinate; } //------------------------------------------------------------------------------------------------------------- namespace InfrastructureManagement { class MainHandler; class ObjectMainStructureElement; class ObjectStructureElement : public Base { public: ObjectStructureElement(MainHandler *mainHandler, ObjectMainStructureElement *objMse); ObjectStructureElement(const StructureElement &data, MainHandler *mainHandler, ObjectMainStructureElement *objMse); Core::FunctionReplyObject createObject(const Database::IsmStructureElement &dbData); Core::FunctionReplyObject updateObject(const StructureElement &data); Core::FunctionReplyObject removeObject(); qint32 getId() const { return m_data.id(); } const std::string &getName() const { return m_data.displayName(); } std::vector getPath() const { return m_data.path(); } qint32 getParentId() const { return m_data.path().size() > 0 ? m_data.path().at(m_data.path().size() - 1) : 0; } qint32 getMainStructureElementId() const { return m_data.mainStructureElementId(); } InfrastructureManagement::StructureElementType getStructureElementTypeId() const { return m_data.structureElementTypeId(); } InfrastructureManagement::MountingPointType getMountingPointType() const { return m_data.mountingPointTypeId(); } InfrastructureManagement::StructureElement &getData() { return m_data; } const InfrastructureManagement::StructureElement &getData() const { return m_data; } const Core::RelativePosition &getRelativePosition() const { return m_data.relPosition(); } const Core::GeoPosition &getGeoPosition() const { return m_data.geoPosition(); } ObjectMainStructureElement *getMainStructureElement() const { return m_objMse; } bool isValid() const; bool isUsed() const; Core::FunctionReplyObject setUsed(bool isUsed); // update geoPosition based on MainStructureElement void updateGeoPosition(); void updateGeoPosition(const LtsCoordTrans::UtmCoordinate &basePoint, double zBase, double angleDeg); // convert methods static Database::IsmStructureElement toDbData(const StructureElement &ddsData); // dds -> db private: StructureElement m_data; ObjectMainStructureElement *m_objMse; }; }