DataIO
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ecp.h
Go to the documentation of this file.
1 #ifndef ECP_H
2 #define ECP_H
3 
4 // STD INCLUDES
5 #include <set>
6 #include <string>
7 #include <vector>
8 
9 // CORE INCLUDES
10 #include "core/common/eplatform.h"
11 
12 // DATAIO INCLUDES
13 #include "dataio/datainput/ETarifnaSkupina.h"
14 #include "dataio/datainput/ELinkaZastavkaZnacka.h"
15 #include "dataio/datainput/ECennik.h"
16 
17 #define VYDAJ_STATUS_NO_VYDAJ 0
18 #define VYDAJ_STATUS_VYDAJ 1
19 #define VYDAJ_STATUS_INFO_WIN 2
20 #define VYDAJ_STATUS_VSTUP 3
21 #define VYDAJ_STATUS_KONECNA 4
22 #define VYDAJ_STATUS_ERR 10
23 
24 #define ECP_NO_NEXT 0
25 #define ECP_LOAD_NEXT 1
26 
27 #define LONGITUDE_INT 2
28 #define LATITUDE_INT 2
29 
30 namespace EM
31 {
32  namespace Strojcek
33  {
34  namespace VstupneUdaje
35  {
36  namespace TarifnySystem
37  {
38  class ETarifnaSkupinaTarifa;
39  class ETarifnaSkupina;
40  }
41  namespace CestovnePoriadky
42  {
43  class ELinka;
44  class ELinkaZastavka;
45  class ELinkaZastavkaCol;
46  class ESpoj;
47  class EZastavka;
48  class ESpojZastavka;
49  class ESpojZastavkaCol;
50  class ENastupisteCol;
51  class ENastupiste;
52  class EZastavkaVypis;
53  class EZona;
54  class ETripTransfer;
55  class ETripTransferCol;
56  class ETripTransferTripStop;
57  }
58  namespace Turnusy
59  {
60  class EPrikaz;
61  class EPrikazKurz;
62  class EPrikazKurzCol;
63  }
64  }
65  }
66 }
67 
68 struct ACTUAL_CP_DATA;
69 class EOfferedTariff;
70 
72 {
73 public:
74  ECp();
75  virtual ~ECp();
76 
84  long GetDefaultCheckOutBusStopTripOrder( short requestedTariffAreaCount = 0, EM::Strojcek::VstupneUdaje::TarifnySystem::ECennik *pricelist = NULL ) const;
85 
93  bool CheckIDSonTG( EM::Strojcek::VstupneUdaje::TarifnySystem::ETarifnaSkupina *tg, unsigned short ids );
94 
103 
113 
122  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZona *GetZoneByBusStop( EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *busStop, unsigned short ids, bool forCheckOut ) const;
123 
131  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZona *GetZoneByBusStopTripOrder( unsigned int busStopTripOrder, unsigned short ids ) const;
132 
141  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZona *GetZoneByBusStopTripOrder( unsigned int busStopTripOrder, unsigned short ids, bool forCheckOut ) const;
142 
151  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZona *GetZoneByBusStopLineOrder( const unsigned long busStopLineOrder, const unsigned short ids, const bool forCheckOut ) const;
152 
161 
167  unsigned short GetSubZoneNumberByBusStopTripOrder( unsigned int busStopTripOrder );
168 
175  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ENastupiste *GetPlatformByBusStopLineOrder( const unsigned long busStopLineOrder ) const;
176 
183  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavka *GetBusStopByBusStopLineOrder( const unsigned long busStopLineOrder ) const;
184 
192  unsigned short GetTariffAreaNumberByBusStopTripOrder( unsigned long busStopTripOrder, bool forCheckOut = false ) const;
193 
201  long GetUrbanTransportIDForBusstop( unsigned int busStopTripOrder, unsigned short &urbanTransportID ) const;
202 
210  long GetUrbanTransportIDForBusstop( EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *tripBusstop, unsigned short &urbanTransportID ) const;
211 
219  long GetUrbanTransportIDByBusStopLineOrder( const unsigned long busStopLineOrder, unsigned short &urbanTransportID );
220 
231  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinkaZastavka *GetLineBusStopByLineOrder( long lineOrderBusStop );
232 
234  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinkaZastavka *GetLineBusStop( long lineOrderBusStop ) const;
235 
244  bool GetNumberOfZonesBetweenBusStops ( const long boardingBusStopOrderOnLine, const long landingBusStopOrderOnLine, unsigned char &zoneCount ) const;
245 
259  bool CheckZoneOnBusStopDefinedByLineOrder( const unsigned long zone, const unsigned long busStopLineOrder, const unsigned short ids, const bool forCheckOut, bool &isZoneValid ) const;
260 
269  bool IsAtLeastOneZoneOnBusstop( const unsigned long busStopLineOrder, const unsigned short ids, const bool forCheckOut, bool &isAtLeastOneZoneOnBusstop ) const;
270 
281  bool CheckTariffAreaOnBusStopDefinedByLineOrder( const unsigned long tariffAreaFrom, const unsigned long tariffAreaTo, const unsigned long busStopLineOrder, const bool forCheckOut, bool &isValid ) const;
282 
287  void EraseBusStopCollection( unsigned short tripBusStopFrom, int tripBusStopTo = -1 );
288 
292  long GetTripBusStopCollectionSize();
293 
297  void ClearTripBusStopCollection();
298 
302  long GetActualTripBusStopIndex() const;
303 
307  long SetActualTripBusStopIndex( const long actualTripBusStopIndex );
308 
312  long GetCheckOutTripBusStopIndex() const;
313 
317  long SetCheckOutTripBusStopIndex( const long actualTripBusStopIndex );
318 
322  EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *GetTripBusStopByIndex( long tripOrder );
323 
328 
334  unsigned short GetActualIDS() const;
335 
343  long GetPlatformByTripBusStopIndex( long tripBusStopIndex, EM::Strojcek::VstupneUdaje::CestovnePoriadky::ENastupiste *&platform );
344  long GetPlatformNumberByTripBusStopIndex( const long tripBusStopIndex, long &platform );
345 
346  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinka *FindLinkaByNum ( long lLinkacislo/*, char smer*/ ) const;
347  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinka *GetActualLinkaPtr() const;
348  void SetActualLinkaPtr ( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinka *pLinka );
350  long GetActualLinkaCisloN() const;
351  const char *GetActualLinkaCisloText() const;
352  char *GetActualLinkaName() const;
353  void SetActualSpojPtr( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpoj *trip );
354  long GetActualSpojCislo() const;
355  long SetNextSpojZastavka1 ( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpojZastavka **spojZast );
356  long SetFirstSpojZastavka();
357  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpojZastavka *GetActualSpojZastavkaPtr() const;
358  char *GetActualZastavkaNazov() const;
359  unsigned short GetActualZastavkaTime() const;
361  long GetActualZastavkaId() const;
362  long GetNextZastavkaId() const;
363  long GetCurrentBusStopPlatformNumber() const;
364 
365  long SetActualPrikaz( char *pcPrikaz );
366  long SetActualCommand( EM::Strojcek::VstupneUdaje::Turnusy::EPrikaz *prikaz );
367  EM::Strojcek::VstupneUdaje::Turnusy::EPrikazKurzCol *GetActualPrikazKurzyPtr() const;
368  long GetActualUsekPrikazuIdx() const;
369  long SetStartUsekPrikazuIdx( unsigned long IdxUsek );
370  long SetLastSpojZastavka();
371 
372  EM::Strojcek::VstupneUdaje::Turnusy::EPrikaz *GetActualPrikazPtr() const;
373  char GetVydajStatus() const;
374  void SetVydajStatus( char cVydajStatus );
375 
376  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinkaZastavkaCol *GetActualLinkaZastavkyPtr() const;
377 
379 
380  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ELinkaZastavka *GetActualLinkaZastavka() const;
382  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpojZastavkaCol *GetActualSpojZastavkyPtr() const;
383 
384  char *GetFileName() const;
385  void Init();
386  void SetActualSpojZastavkaPtr( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpojZastavka *pSpojZast );
387 
388  char *GetActualZastavkaNazovKratky() const;
389  char *GetActualZastavkaNazovDlhy() const;
390 
392  unsigned short GetActualZastavkaLinkaPoradie() const;
393  char *GetMenoByZastVypisPor ( unsigned short por, bool dlhe = false ) const;
394  long LoadLS ( unsigned long linka, unsigned short spoj );
395  unsigned short GetActualZone() const;
400  bool IsActualZoneUrbanZone() const;
401  unsigned char GetActualTarifSkup() const;
403 
404  void SetActualTarifSkup( unsigned char actTarifSkup );
405  bool IsKonecna() const;
406  bool IsKonecna_Continues_Lines() const;
407 
408  EM::Strojcek::VstupneUdaje::Turnusy::EPrikazKurz *GetActualPrikazKurz() const;
409  void SetActualEPrikazKurz ( EM::Strojcek::VstupneUdaje::Turnusy::EPrikazKurz *pPrikazKurz );
410  unsigned short GetNextZone() const;
411  long GetBusStopIDByOrderOnTrip( long orderOnTrip, unsigned long &busStopID ) const;
412  long LoadLS( char *strLineNumber, char *strTripNumber );
413  void LoadBusStopsOfActualTrip();
414  long FindKeyStop( std::vector<EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *> *pVecStops ) const;
415  bool IsNextTripContinuous_MHD() const;
416  bool IsActualTripContinuous_MHD() const;
417  void SetOdchylkovy( long first, long last );
418  void GetOdchylkovy( long &first, long &last ) const;
419 
420  bool IsBorderBusStop( unsigned long paPoradie ) const; // true ak je zastavka v poradi paPoradie hranicna
421  bool IsFirstBusStopOnZone( unsigned long busStopOrderOnTrip ) const; // true ak je zastavka v poradi paPoradie prva v pasme
422  bool IsLastBusStopOnZone( unsigned long busStopOrderOnTrip ) const; // true ak je zastavka v poradi paPoradie posledna v pasme
423  bool IsLastBusStopOnTrip( unsigned long paPoradie ) const; // true ak je zastavka v poradi paPoradie posledna na spoji
424  long GetPocetPasiemDoKonecnej( char &tariffZonesCount, unsigned short *tariffZones, char maxTariffZonesCount ) const;
425  long TarifyLoad( unsigned char tarifSkup, long vodicPredajCl );
426  void AddTariff( EM::Strojcek::VstupneUdaje::TarifnySystem::ETarifnaSkupinaTarifa *tariffGroup, long vodicPredajCl, unsigned long offset );
427  const std::vector<EOfferedTariff *> *GetOfferedTariffs() const;
428  void ClearOfferedTariffsVector();
429 
430  void SetDZVICV ( unsigned long dzv, unsigned long icv );
431  unsigned long GetDZV() const;
432  unsigned long GetICV() const;
433 
443  bool IsUrbanSection();
444 
452  long GetJourneyTimetableTimeByBusStopsLineOrder( unsigned short lineOrderCheckInBusStop, unsigned short lineOrderCheckOutBusStop, unsigned long &diffTime ) const;
453 
462  long GetJourneyTimetableTimeByBusStopsTripOrder( unsigned short tripOrderCheckInBusStop, unsigned short tripOrderCheckOutBusStop, unsigned long &diffTime ) const;
463 
465 
466  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpoj *GetTripByNumber( int lineNumber, int tripNumber ) const;
468 
469  bool FillTripTransfersTripStopsFlagIsForWait( const unsigned short currentBusStopLineOrder, std::list<EM::Strojcek::VstupneUdaje::CestovnePoriadky::ETripTransferTripStop *> *tripTransferTripStopList );
470 
472  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpojZastavka *GetTripBusStopByTripBusStopIndex( const long tripBusStopIndex );
473  EM::Strojcek::VstupneUdaje::CestovnePoriadky::ETripTransferCol *GetTripTransfersFromBusStop( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpoj *trip, long busStopOrderOnTrip ) const;
474 
475  void GetTripTransfersFromBusStop( std::vector<EM::Strojcek::VstupneUdaje::CestovnePoriadky::ETripTransfer *> &transfers,
477  long busStopOrderOnTrip,
478  bool validTodayOnly,
479  bool withSignificantBusStopsOnly ) const;
480 
481  /*
482  * JSI - Asi je zbytocne mat ako vstupny parameter Spoj, pretoze zo vsadial sa to vola z aktualneho spoja.
483  *
484  * Bolo by vhodne mat funkcia na zistkanie 'poradie na spoji' -> 'poradie na linke' nad aktualnym spojom
485  */
486 
487  /*
488  * Poradie na spoji nie je jednoznacne lebo raz niekedy sa medzi zastavky na spoji rataju len tie, na ktorych stoji, inokedy je potrebne zahrnut aj tie ktore maju priznak prechadza (kvoli vypoctu ceny), pripadne mozu a nemusia byt zahrnute aj zastavky navazneho spoja.
489  * Preto je potrebne urcit zoznam zastavok spoja v ramci ktoreho sa ziskava poradie.
490  *
491  * @return poradie zastavky v zadanom zozname zastavok (ak je NULL, tak v zozname ktory je uchovavany vnutri ECp)
492  */
493  int OrderOnLineToOrderOnTrip( int orderOnLine, const std::vector<EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *> *busStopList = NULL ) const;
494  /*
495  * @param orderOnTrip - poradie zastavky v zadanom zozname zastavok (ak je NULL, tak v zozname ktory je uchovavany vnutri ECp)
496  */
497  int OrderOnTripToOrderOnLine( unsigned long orderOnTrip, const std::vector<EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *> *busStopList = NULL ) const;
498 
507  int GetCommandSegmentBusStopOrderOnTrip( EM::Strojcek::VstupneUdaje::CestovnePoriadky::ESpoj *trip, EM::Strojcek::VstupneUdaje::Turnusy::EPrikazKurz *commandSegment, bool wantedFirstBusStop ) const;
508 
509  long GetTripIdFromBusStop( EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *busStop ) const;
510 
511  const char *LineNumberToLineNumberText( unsigned long lineNumber ) const;
512  const char *GetBusStopName( int lineNumber, int tripNumber, int orderOnLine ) const;
513 
524 
532  long SearchNearestBusStopByCheckoutBusStopTariffNumber( const long &checkinBusStopTripOrder, const long &checkoutBusStopTripOrder );
533 
539  std::set<unsigned short> GetZonesOnBusStop( EM::Strojcek::VstupneUdaje::CestovnePoriadky::EZastavkaVypis *busStopListing ) const;
540 
541 private:
542  ACTUAL_CP_DATA *m_pActualData;
543 };
544 
545 #endif
Definition: ecp.cpp:60
Definition: EOfferedTariff.h:22
Class ECol : Objekt je predok pre vsetky nasledujuce kolekcie
Definition: ColReader.h:15
Definition: ecp.h:71
#define DATAIO_API
Definition: DataIODefines.h:10