ArrivalData.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python
  2. from datetime import datetime, timedelta
  3. from aman.types.ArrivalRoute import ArrivalRoute
  4. class ArrivalData:
  5. def __init__(self, **kargs):
  6. self.Star = None
  7. self.MaximumTimeToGain = None
  8. self.MaximumTimeToLose = None
  9. self.FlightTimeUntilIaf = None
  10. self.FlightTimeUntilTouchdown = None
  11. self.InitialArrivalTime = None
  12. self.EarliestArrivalTime = None
  13. self.LatestArrivalTime = None
  14. self.ArrivalRoute = None
  15. self.Trackmiles = None
  16. for key, value in kargs.items():
  17. if 'ttg' == key:
  18. if True == isinstance(value, timedelta):
  19. self.MaximumTimeToGain = value
  20. elif True == isinstance(value, (int, float)):
  21. self.MaximumTimeToGain = timedelta(seconds = float(value))
  22. else:
  23. raise Exception('Invalid type for ttg')
  24. elif 'ttl' == key:
  25. if True == isinstance(value, timedelta):
  26. self.MaximumTimeToLose = value
  27. elif True == isinstance(value, (int, float)):
  28. self.MaximumTimeToLose = timedelta(seconds = float(value))
  29. else:
  30. raise Exception('Invalid type for ttl')
  31. elif 'star' == key:
  32. if True == isinstance(value, ArrivalRoute):
  33. self.Star = value
  34. else:
  35. raise Exception('Invalid type for star')
  36. elif 'ita' == key:
  37. if True == isinstance(value, datetime):
  38. self.InitialArrivalTime = value
  39. else:
  40. raise Exception('Invalid type for ita')
  41. elif 'earliest' == key:
  42. if True == isinstance(value, datetime):
  43. self.EarliestArrivalTime = value
  44. else:
  45. raise Exception('Invalid type for earliest')
  46. elif 'latest' == key:
  47. if True == isinstance(value, datetime):
  48. self.LatestArrivalTime = value
  49. else:
  50. raise Exception('Invalid type for latest')
  51. elif 'touchdown' == key:
  52. if True == isinstance(value, timedelta):
  53. self.FlightTimeUntilTouchdown = value
  54. else:
  55. raise Exception('Invalid type for touchdown')
  56. elif 'entry' == key:
  57. if True == isinstance(value, timedelta):
  58. self.FlightTimeUntilIaf = value
  59. else:
  60. raise Exception('Invalid type for entry')
  61. elif 'route' == key:
  62. self.ArrivalRoute = value
  63. elif 'trackmiles' == key:
  64. self.Trackmiles = value
  65. else:
  66. raise Exception('Unknown key: ' + key)