Advertisement
Arham-4

White-Box SSD for View Pollutant Map UC

Apr 18th, 2023 (edited)
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. @startuml
  2. title ViewPollutantMap
  3. actor Traveler
  4.  
  5. box Front-End
  6. participant "System\n Android Cell Phone" as Android
  7. end box
  8.  
  9. box Database Hook
  10. participant Webhook
  11. end box
  12.  
  13. box Back-End
  14. participant SensorController
  15. participant SensorService
  16. participant CapturedPollutantProvider
  17. participant SensorProvider
  18. participant WaypointValidator
  19. end box
  20.  
  21. box Database
  22. participant Sensor as Sensors
  23. participant CapturedPollutant as CapturedPollutants
  24. end box
  25.  
  26. Traveler -> Android: selectMapView
  27. Android ->> Webhook : set up listener
  28. Android ->> Android : set up locationListener
  29. note right: the location listener triggers anytime\nthe traveler's geolocation updates
  30. Android -->> Traveler : map view
  31.  
  32. opt if location disabled
  33. Android -> Traveler: promptForLocation()
  34. alt if user allows
  35. Traveler -> Android: selectAllow()
  36. Android -> Android : locationTrackingEnabled = true
  37. Android -->> Traveler
  38. else if user refuses
  39. Traveler --> Android: selectDecline()
  40. Android -> Android : locationTrackingEnabled = false
  41. Android -->> Traveler
  42. end
  43. end
  44.  
  45. loop while frontend is running
  46. opt when database hook updates with info
  47. Webhook ->> Android : trigger listener
  48. Android -> Android : needsSensorsUpdated = true
  49. end
  50.  
  51. opt if user wants to drag map
  52. Traveler -> Android : dragMap()
  53. Android -> Android : needsSensorsUpdated = true
  54. Android -->> Traveler : updated map
  55. end
  56.  
  57. opt needsSensorsUpdated is true
  58. Android -> SensorController : getSensorsWithData(boundingBox, preferences)
  59. note right: boundingBox = the view range\nof what can be seen on the map
  60.  
  61. SensorController -> SensorService : getSensorsWithData(boundingBox, preferences)
  62.  
  63. SensorService -> SensorProvider : findRelevantSensors(boundingBox, preferences)
  64. SensorProvider -> Sensors : findIntersectingSensors(boundingBox)
  65. Sensors -->> SensorProvider : sensors
  66. SensorProvider -->> SensorService : sensors
  67.  
  68. SensorService -> CapturedPollutantProvider : findLatestDataFor(sensors)
  69. loop sensor ∈ sensors
  70. CapturedPollutantProvider -> CapturedPollutants : findLatestDataFor(sensor)
  71. CapturedPollutants -->> CapturedPollutantProvider : sensorData
  72. end
  73. CapturedPollutantProvider -->> SensorService : sensorsData
  74.  
  75. SensorService -->> SensorController : sensors, sensorsData
  76. SensorController -->> Android : sensors, sensorsData
  77. end
  78.  
  79. opt when location of user updates
  80. Android -> SensorController : isUserNearHazardousArea(latitude, longitude)
  81. SensorController -> SensorService : isUserNearHazardousArea(geoLocation)
  82. SensorService -> WaypointValidator : isValidWaypoint(geoLocation)
  83.  
  84. alt if user location <500m of red zone
  85. WaypointValidator -->> SensorService : false
  86. SensorService -->> SensorController : true
  87. SensorController -->> Android : true
  88.  
  89. Android ->> Traveler: alertRedZoneApproach
  90. else if user is safe
  91. WaypointValidator -->> SensorService : true
  92. SensorService -->> SensorController : false
  93. SensorController -->> Android : false
  94. end
  95. end
  96.  
  97. @enduml
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement