The objective of this project is to create all the parts of an application that would allow the user to find their way from any location to any other location by using the bikes offered by JCDecaux.
LightClient.mp4
HeavyClient.mp4
- Getting information about which
Contracts(cities) have bike stations and which do not. - Finding the nearest
Stationto the providedLocationwith free bikes or available stands. - Caching received information inside the generic cache using
System.Runtime.Cachingwith the following policies:ObjectCache.InfiniteAbsoluteExpirationfor Contracts.3 minutesfor Stations.
- Sending a request to determine if the provided station still has bikes or stands, and if not, sending another nearest one.
2) A Routing Server to compute the routing and return the results to the clients. This server is a WCF server, receiving requests in both REST and SOAP. This server has multiple jobs:
- Calling OpenStreetMap to get information about the provided geo data (city name).
- Checking if the current location has Stations with bikes within a maximum of 3 hours of walking.
- Checking if the destination location has Stations with stands available within a maximum of 3 hours of walking.
- Computing the routing and returning the result to the Client. There are 4 points: Start location -> Nearest station with available bike -> Closest station to the destination with available bike parking -> Destination
- Sending the full route in parts in the Message queue. The parts are: Start location -> Nearest station with available bike -> Closest station to the destination with available bike parking -> Destination And returning the name of the created (or found) queue name in which the response has been sent. Each time the Client sends the request, the server is checking if the station's informations is still up to date and if not -> rebuild the route and rolls back to the previous step.
-
Version 1: (App.java)
- Getting name of starting point and destination from the client then give them up to 5 options to choose from
- Once the starting point and destination is defined, Heavy Client communicates with the server through SOAP to get the routes then show it step-by-step to the client with the help of map visualisation thanks to the library
jxmapviewer2
-
Version 2: (Main.java)
- Do the same thing as version 1 but instead of using ActiveMQ to communicates with the server instead of SOAP. When each parts of the routes finishes, send another request to server to update the new steps. It then gets the new steps from ActiveMQ and continues to show it to the user.
4) A Light Client, a web project made with React.js, communicates with the server through REST requests.
- Getting the starting point and destination by entering an address / use the user's current location / click on the map
- Then communicating with RoutingServer though REST API to get way to go from starting point to the destination
- Show the way to the client, together with information of each step (duration, distance, type of movement, type of movement) and extensional information (estimated arrival time, kms left to the destination, number of rental bikes in nearest station and number of available stands in destination station, together with Google Map link of each)
Group: SI4 FISA
Warning You have to have the administrator right to launch the servers since we are using different ports and URLs between the routing server and the proxy cache server, and it's allowed only with the administrator's right on Windows.
- Having Node.js
- Having JDK 11, 17, or 18.
- Having ActiveMQ launched at
activemq:tcp://localhost:61616.
- Launch the servers.
If it's your first time launching, please build the 2 servers first.
Then run them with
runProxyServer.batandrunRoutingServer.bat. - Launch the Light Client:
If it's your first time launching it, please install its dependencies with
npmInstallClient.bat. Then run it withrunLightClient.bat. You will find it running athttp://localhost:3000/. - Launch the Heavy Client:
Run it with
runHeavyClient.bat.