Vesna
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
RouteData.h
Go to the documentation of this file.
1 #ifndef _ROUTE_POINT_H_
2 #define _ROUTE_POINT_H_
3 
4 #include <QList>
5 #include <QJsonObject>
6 #include <QJsonArray>
7 
9 
11 {
12 public:
13  long mLatitude;
14  long mLongitude;
15 
17  {
18  mLatitude = mLongitude = 0.0;
19  }
20 
21  RoutePoint( const RoutePoint &modelRoutePoint )
22  {
23  mLatitude = modelRoutePoint.mLatitude;
24  mLongitude = modelRoutePoint.mLongitude;
25  }
26 
27  bool operator==( const RoutePoint &routePoint ) const
28  {
29  if ( mLatitude != routePoint.mLatitude )
30  {
31  return false;
32  }
33 
34  if ( mLongitude != routePoint.mLongitude )
35  {
36  return false;
37  }
38 
39  return true;
40  }
41 
42  QJsonObject ToJsonObject() const
43  {
44  QJsonObject jsonObject;
45  jsonObject.insert( "latitude", mLatitude * 1.0 );
46  jsonObject.insert( "longitude", mLongitude * 1.0 );
47  return jsonObject;
48  }
49 
50  void FromJsonObject( const QJsonObject &object )
51  {
52  mLatitude = object.value( "latitude" ).toInt();
53  mLongitude = object.value( "longitude" ).toInt();
54  }
55 };
56 
58 {
59 public:
62 
64  {
65  mDistanceInMeters = 0;
66  mTimeInPercentage = 0.0;
67  }
68 
69  RouteSynchroPoint( const RouteSynchroPoint &routeSynchroPoint )
70  : RoutePoint( routeSynchroPoint )
71  {
72  mDistanceInMeters = routeSynchroPoint.mDistanceInMeters;
73  mTimeInPercentage = routeSynchroPoint.mTimeInPercentage;
74  }
75 
76  // QMap requires this operator - @see member mExpectedSynchroPoints in class @ref GPSAlgorithmSynchronization::DataClass
77  bool operator<( const RouteSynchroPoint &routeSynchroPoint ) const
78  {
79  if ( mDistanceInMeters < routeSynchroPoint.mDistanceInMeters )
80  {
81  return true;
82  }
83 
84  return false;
85  }
86 
87  bool operator==( const RouteSynchroPoint &routeSynchroPoint ) const
88  {
89  bool isEqual = RoutePoint::operator==( routeSynchroPoint );
90  if ( isEqual == false )
91  {
92  return false;
93  }
94 
95  if ( mTimeInPercentage != routeSynchroPoint.mTimeInPercentage )
96  {
97  return false;
98  }
99 
100  if ( mDistanceInMeters != routeSynchroPoint.mDistanceInMeters )
101  {
102  return false;
103  }
104 
105  return true;
106  }
107 
108  QString ToString() const
109  {
110  return QString( "PositionX: %1, positionY: %2, time[%]: %3, distance[m]: %4" ).arg( mLongitude ).arg( mLatitude ).arg( mTimeInPercentage ).arg( mDistanceInMeters );
111  }
112 
113  QJsonObject ToJsonObject() const
114  {
115  QJsonObject jsonObject = RoutePoint::ToJsonObject();
116  jsonObject.insert( "time_percentage", mTimeInPercentage );
117  jsonObject.insert( "distance_meters", mDistanceInMeters );
118  return jsonObject;
119  }
120 
121  void FromJsonObject( const QJsonObject &object )
122  {
123  RoutePoint::FromJsonObject( object );
124  mTimeInPercentage = object.value( "time_percentage" ).toDouble();
125  mDistanceInMeters = object.value( "distance_meters" ).toInt();
126  }
127 };
128 
129 class RouteBusStop : public RoutePoint
130 {
131 public:
135 
137 
139  {
140  mArrivalRadius = mDepartureRadius = mTripBusStopOrder = 0;
141  mRouteSynchroPoints.clear();
142  }
143 
144  RouteBusStop( const RouteBusStop &routeBusStop )
145  : RoutePoint( routeBusStop )
146  {
147  mDepartureRadius = routeBusStop.mDepartureRadius;
148  mArrivalRadius = routeBusStop.mArrivalRadius;
149  mTripBusStopOrder = routeBusStop.mTripBusStopOrder;
150 
151  foreach ( RouteSynchroPoint routeSynchroPoint, routeBusStop.mRouteSynchroPoints )
152  {
153  mRouteSynchroPoints.push_back( routeSynchroPoint );
154  }
155  }
156 
157  QString ToString() const
158  {
159  return QString( "PositionX: %1, positionY: %2, TripBusStopOrder: %3" ).arg( mLongitude ).arg( mLatitude ).arg( mTripBusStopOrder );
160  }
161 
162  QJsonObject ToJsonObject() const
163  {
164  QJsonObject jsonObject = RoutePoint::ToJsonObject();
165  jsonObject.insert( "trip_order", mTripBusStopOrder );
166  jsonObject.insert( "arrival_radius", mArrivalRadius );
167  jsonObject.insert( "departure_radius", mDepartureRadius );
168 
169  QJsonArray synchroPoints;
170  foreach ( RouteSynchroPoint routeSynchroPoint, mRouteSynchroPoints )
171  {
172  synchroPoints.push_back( routeSynchroPoint.ToJsonObject() );
173  }
174  jsonObject.insert( "synchro_points", synchroPoints );
175 
176  return jsonObject;
177  }
178 
179  void FromJsonObject( const QJsonObject &object )
180  {
181  RoutePoint::FromJsonObject( object );
182  mTripBusStopOrder = object.value( "trip_order" ).toInt();
183  mArrivalRadius = object.value( "arrival_radius" ).toInt();
184  mDepartureRadius = object.value( "departure_radius" ).toInt();
185 
186  QJsonArray synchroPoints = object.value( "synchro_points" ).toArray();
187  foreach ( const QJsonValue &value, synchroPoints )
188  {
189  RouteSynchroPoint routeSynchroPoint;
190  routeSynchroPoint.FromJsonObject( value.toObject() );
191  mRouteSynchroPoints.push_back( routeSynchroPoint );
192  }
193  }
194 };
195 
197 {
198 public:
199  int mStopID1;
201  int mStopID2;
203 
205  {
206  mStopID1 = mStopID2 = mStopPlatformID1 = mStopPlatformID2 = 0;
207  }
208 
209  RouteBusStopPair( int stopID1, int stopPlatformID1, int stopID2, int stopPlatformID2 )
210  {
211  mStopID1 = stopID1;
212  mStopPlatformID1 = stopPlatformID1;
213  mStopID2 = stopID2;
214  mStopPlatformID2 = stopPlatformID2;
215  }
216 
218  {
219  mStopID1 = other.mStopID1;
220  mStopPlatformID1 = other.mStopPlatformID1;
221  mStopID2 = other.mStopID2;
222  mStopPlatformID2 = other.mStopPlatformID2;
223  }
224 };
225 
226 #endif //_ROUTE_POINT_H_
QString ToString() const
Definition: RouteData.h:108
QString ToString() const
Definition: RouteData.h:157
RouteBusStopPair(int stopID1, int stopPlatformID1, int stopID2, int stopPlatformID2)
Definition: RouteData.h:209
const int ROUTE_SYNCHRO_POINT_CIRCLE_IN_METERS
Definition: RouteData.h:8
QJsonObject ToJsonObject() const
Definition: RouteData.h:42
bool operator==(const RouteSynchroPoint &routeSynchroPoint) const
Definition: RouteData.h:87
long mLongitude
Definition: RouteData.h:14
void FromJsonObject(const QJsonObject &object)
Definition: RouteData.h:50
RouteBusStop(const RouteBusStop &routeBusStop)
Definition: RouteData.h:144
long mLatitude
Definition: RouteData.h:13
RouteBusStop()
Definition: RouteData.h:138
Definition: RouteData.h:10
RouteBusStopPair()
Definition: RouteData.h:204
int mStopPlatformID1
Definition: RouteData.h:200
void FromJsonObject(const QJsonObject &object)
Definition: RouteData.h:179
int mDepartureRadius
Definition: RouteData.h:133
RouteSynchroPoint(const RouteSynchroPoint &routeSynchroPoint)
Definition: RouteData.h:69
QList< RouteSynchroPoint > mRouteSynchroPoints
Definition: RouteData.h:136
RoutePoint(const RoutePoint &modelRoutePoint)
Definition: RouteData.h:21
bool operator<(const RouteSynchroPoint &routeSynchroPoint) const
Definition: RouteData.h:77
RoutePoint()
Definition: RouteData.h:16
RouteBusStopPair(const RouteBusStopPair &other)
Definition: RouteData.h:217
RouteSynchroPoint()
Definition: RouteData.h:63
double mTimeInPercentage
Definition: RouteData.h:60
QJsonObject ToJsonObject() const
Definition: RouteData.h:162
int mDistanceInMeters
Definition: RouteData.h:61
int mStopID2
Definition: RouteData.h:201
int mStopPlatformID2
Definition: RouteData.h:202
Definition: RouteData.h:129
int mArrivalRadius
Definition: RouteData.h:132
Definition: RouteData.h:196
int mTripBusStopOrder
Definition: RouteData.h:134
Definition: RouteData.h:57
int mStopID1
Definition: RouteData.h:199
bool operator==(const RoutePoint &routePoint) const
Definition: RouteData.h:27
QJsonObject ToJsonObject() const
Definition: RouteData.h:113
void FromJsonObject(const QJsonObject &object)
Definition: RouteData.h:121