AirSched Logo  0.1.4
C++ Simulated Airline Schedule Manager Library
SegmentPathPeriodKey.hpp
Go to the documentation of this file.
00001 #ifndef __AIRSCHED_BOM_SEGMENTPATHPERIODKEY_HPP
00002 #define __AIRSCHED_BOM_SEGMENTPATHPERIODKEY_HPP
00003 
00004 // //////////////////////////////////////////////////////////////////////
00005 // Import section
00006 // //////////////////////////////////////////////////////////////////////
00007 // STL
00008 #include <iosfwd>
00009 #include <string>
00010 // StdAir
00011 #include <stdair/stdair_basic_types.hpp>
00012 #include <stdair/stdair_date_time_types.hpp>
00013 #include <stdair/bom/KeyAbstract.hpp>
00014 #include <stdair/bom/PeriodStruct.hpp>
00015 // AirSched
00016 #include <airsched/bom/SegmentPathPeriodTypes.hpp>
00017 
00019 namespace boost {
00020   namespace serialization {
00021     class access;
00022   }
00023 }
00024 
00025 namespace AIRSCHED {
00026 
00033   struct SegmentPathPeriodKey : public stdair::KeyAbstract {
00034     friend class boost::serialization::access;
00035 
00036     // /////////// Constructors and destructors ///////////
00037   public:
00041     SegmentPathPeriodKey (const stdair::PeriodStruct&,
00042                           const stdair::Duration_T& iBoardingTime,
00043                           const stdair::Duration_T& iElapsed,
00044                           const DateOffsetList_T&, 
00045                           const stdair::NbOfAirlines_T&);
00046 
00050     SegmentPathPeriodKey();
00051     
00055     SegmentPathPeriodKey (const SegmentPathPeriodKey&);
00056 
00060     ~SegmentPathPeriodKey();
00061 
00062 
00063   public:
00064     // /////////// Getters //////////
00068     const stdair::PeriodStruct& getPeriod() const {
00069       return _period;
00070     }
00071 
00075     const DateOffsetList_T& getBoardingDateOffsetList() const {
00076       return _boardingDateOffsetList;
00077     }
00078     
00082     const stdair::NbOfSegments_T getNbOfSegments() const {
00083       return _boardingDateOffsetList.size();
00084     }
00085     
00089     const stdair::NbOfAirlines_T& getNbOfAirlines() const {
00090       return _nbOfAirlines;
00091     }
00092 
00096     const stdair::Duration_T& getElapsedTime() const {
00097       return _elapsed;
00098     }
00099 
00103     const stdair::Duration_T& getBoardingTime() const {
00104       return _boardingTime;
00105     }
00106 
00107 
00108   public:
00109     // /////////// Setters //////////
00111     void setPeriod (const stdair::PeriodStruct& iPeriod) {
00112       _period = iPeriod;
00113     }
00114 
00115     void setBoardingDateOffsetList (const DateOffsetList_T& iList) {
00116       _boardingDateOffsetList = iList;
00117     }
00118     
00120     void setNbOfAirlines (const stdair::NbOfAirlines_T& iNbOfAirlines) {
00121       _nbOfAirlines = iNbOfAirlines;
00122     }
00123 
00125     void setElapsedTime (const stdair::Duration_T& iElapsed) {
00126       _elapsed = iElapsed;
00127     }
00128 
00130     void setBoardingTime (const stdair::Duration_T& iBoardingTime) {
00131       _boardingTime = iBoardingTime;
00132     }
00133 
00134 
00135   public:
00136     // /////////// Business methods ////////////
00138     const bool isValid () const {
00139       return _period.isValid ();
00140     }
00141 
00142 
00143   public:
00144     // /////////// Display support methods /////////
00150     void toStream (std::ostream& ioOut) const;
00151 
00157     void fromStream (std::istream& ioIn);
00158 
00168     const std::string toString() const;
00169 
00170 
00171   public:
00172     // /////////// (Boost) Serialisation support methods /////////
00176     template<class Archive>
00177     void serialize (Archive& ar, const unsigned int iFileVersion);
00178 
00179   private:
00184     void serialisationImplementationExport() const;
00185     void serialisationImplementationImport();
00186 
00187 
00188   private:
00189     // ///////////////// Attributes ///////////////
00193     stdair::PeriodStruct _period;
00194     
00198     stdair::Duration_T _boardingTime;
00199 
00203     stdair::Duration_T _elapsed;
00204 
00209     DateOffsetList_T _boardingDateOffsetList;
00210 
00214     stdair::NbOfAirlines_T _nbOfAirlines;
00215   };
00216 
00217 }
00218 #endif // __AIRSCHED_BOM_SEGMENTPATHPERIODKEY_HPP