Go to the documentation of this file.00001 #ifndef __STDAIR_BOM_GUILLOTINEBLOCK_HPP
00002 #define __STDAIR_BOM_GUILLOTINEBLOCK_HPP
00003
00004
00005
00006
00007
00008 #include <iosfwd>
00009 #include <string>
00010
00011 #include <stdair/stdair_inventory_types.hpp>
00012 #include <stdair/bom/BomAbstract.hpp>
00013 #include <stdair/bom/GuillotineBlockKey.hpp>
00014 #include <stdair/bom/GuillotineBlockTypes.hpp>
00015
00017 namespace boost {
00018 namespace serialization {
00019 class access;
00020 }
00021 }
00022
00023 namespace stdair {
00024
00025 class SegmentCabin;
00026
00031 class GuillotineBlock : public BomAbstract {
00032 template <typename BOM> friend class FacBom;
00033 friend class FacBomManager;
00034 friend class boost::serialization::access;
00035
00036 public:
00037
00041 typedef GuillotineBlockKey Key_T;
00042
00043
00044 public:
00045
00047 const Key_T& getKey() const {
00048 return _key;
00049 }
00050
00052 BomAbstract* const getParent() const {
00053 return _parent;
00054 }
00055
00057 const GuillotineNumber_T& getGuillotineNumber() const {
00058 return _key.getGuillotineNumber();
00059 }
00060
00064 const HolderMap_T& getHolderMap() const {
00065 return _holderMap;
00066 }
00067
00069 const SegmentCabinIndexMap_T& getSegmentCabinIndexMap() const {
00070 return _segmentCabinIndexMap;
00071 }
00072
00074 const ValueTypeIndexMap_T& getValueTypeIndexMap() const {
00075 return _valueTypesIndexMap;
00076 }
00077
00079 const BlockIndex_T& getBlockIndex (const MapKey_T&) const;
00080
00082 const BlockNumber_T& getBlockNumber (const SegmentCabin&) const;
00083
00086 ConstSegmentCabinDTDSnapshotView_T
00087 getConstSegmentCabinDTDBookingSnapshotView (const BlockNumber_T,
00088 const BlockNumber_T,
00089 const DTD_T) const;
00090
00093 ConstSegmentCabinDTDRangeSnapshotView_T
00094 getConstSegmentCabinDTDRangeBookingSnapshotView (const BlockNumber_T,
00095 const BlockNumber_T,
00096 const DTD_T,
00097 const DTD_T) const;
00098
00101 SegmentCabinDTDSnapshotView_T
00102 getSegmentCabinDTDBookingSnapshotView (const BlockNumber_T,
00103 const BlockNumber_T, const DTD_T);
00104
00107 SegmentCabinDTDRangeSnapshotView_T
00108 getSegmentCabinDTDRangeBookingSnapshotView (const BlockNumber_T,
00109 const BlockNumber_T,
00110 const DTD_T, const DTD_T);
00111
00114 ConstSegmentCabinDTDSnapshotView_T
00115 getConstSegmentCabinDTDCancellationSnapshotView (const BlockNumber_T,
00116 const BlockNumber_T,
00117 const DTD_T) const;
00118
00121 ConstSegmentCabinDTDRangeSnapshotView_T
00122 getConstSegmentCabinDTDRangeCancellationSnapshotView (const BlockNumber_T,
00123 const BlockNumber_T,
00124 const DTD_T,
00125 const DTD_T) const;
00126
00129 SegmentCabinDTDSnapshotView_T
00130 getSegmentCabinDTDCancellationSnapshotView (const BlockNumber_T,
00131 const BlockNumber_T,
00132 const DTD_T);
00133
00136 SegmentCabinDTDRangeSnapshotView_T
00137 getSegmentCabinDTDRangeCancellationSnapshotView (const BlockNumber_T,
00138 const BlockNumber_T,
00139 const DTD_T, const DTD_T);
00140
00143 ConstSegmentCabinDTDSnapshotView_T
00144 getConstSegmentCabinDTDProductAndPriceOrientedBookingSnapshotView
00145 (const BlockNumber_T, const BlockNumber_T, const DTD_T) const;
00146
00149 ConstSegmentCabinDTDRangeSnapshotView_T
00150 getConstSegmentCabinDTDRangeProductAndPriceOrientedBookingSnapshotView
00151 (const BlockNumber_T, const BlockNumber_T, const DTD_T, const DTD_T) const;
00152
00155 SegmentCabinDTDSnapshotView_T
00156 getSegmentCabinDTDProductAndPriceOrientedBookingSnapshotView
00157 (const BlockNumber_T, const BlockNumber_T, const DTD_T);
00158
00161 SegmentCabinDTDRangeSnapshotView_T
00162 getSegmentCabinDTDRangeProductAndPriceOrientedBookingSnapshotView
00163 (const BlockNumber_T, const BlockNumber_T, const DTD_T, const DTD_T);
00164
00167 ConstSegmentCabinDTDSnapshotView_T
00168 getConstSegmentCabinDTDAvailabilitySnapshotView (const BlockNumber_T,
00169 const BlockNumber_T,
00170 const DTD_T) const;
00171
00174 ConstSegmentCabinDTDRangeSnapshotView_T
00175 getConstSegmentCabinDTDRangeAvailabilitySnapshotView (const BlockNumber_T,
00176 const BlockNumber_T,
00177 const DTD_T,
00178 const DTD_T) const;
00179
00182 SegmentCabinDTDSnapshotView_T
00183 getSegmentCabinDTDAvailabilitySnapshotView (const BlockNumber_T,
00184 const BlockNumber_T,
00185 const DTD_T);
00186
00189 SegmentCabinDTDRangeSnapshotView_T
00190 getSegmentCabinDTDRangeAvailabilitySnapshotView (const BlockNumber_T,
00191 const BlockNumber_T,
00192 const DTD_T, const DTD_T);
00193
00194
00195 public:
00196
00199 void initSnapshotBlocks (const SegmentCabinIndexMap_T&,
00200 const ValueTypeIndexMap_T&);
00201
00202 public:
00203
00209 void toStream (std::ostream& ioOut) const {
00210 ioOut << toString();
00211 }
00212
00218 void fromStream (std::istream& ioIn) {
00219 }
00220
00224 std::string toString() const;
00225
00229 const std::string describeKey() const {
00230 return _key.toString();
00231 }
00232
00233
00234 public:
00235
00239 template<class Archive>
00240 void serialize (Archive& ar, const unsigned int iFileVersion);
00241
00242 private:
00247 void serialisationImplementation();
00248
00249
00250 protected:
00251
00255 GuillotineBlock (const Key_T&);
00256
00260 virtual ~GuillotineBlock();
00261
00262 private:
00266 GuillotineBlock();
00267
00271 GuillotineBlock (const GuillotineBlock&);
00272
00273
00274 protected:
00275
00277 Key_T _key;
00278
00280 BomAbstract* _parent;
00281
00283 HolderMap_T _holderMap;
00284
00286 SegmentCabinIndexMap_T _segmentCabinIndexMap;
00287
00290 ValueTypeIndexMap_T _valueTypesIndexMap;
00291
00293 SnapshotBlock_T _bookingSnapshotBlock;
00294
00296 SnapshotBlock_T _cancellationSnapshotBlock;
00297
00299 SnapshotBlock_T _productAndPriceOrientedBookingSnapshotBlock;
00300
00302 SnapshotBlock_T _availabilitySnapshotBlock;
00303 };
00304
00305 }
00306 #endif // __STDAIR_BOM_GUILLOTINEBLOCK_HPP
00307