Commit Graph

200 Commits

Author SHA1 Message Date
4346b9348d
Menu functions:
- View Vehicles
    - View Routes
2020-11-27 19:18:44 +03:00
b85a4040f2
Simple menu. Does nothing. 2020-11-27 18:42:17 +03:00
6d3d3b5085
Add pause method in InputListener
- Pause method and var to stop
    Scanner from 'taking' the input
    when in menue.
2020-11-27 18:42:17 +03:00
bd68322a75
Start a thread to listen for console input
- Listen for 'commands' on stdin
    the thread is running alongside
    the simulation.
2020-11-27 18:42:16 +03:00
5fde1eee7e
Route override toString()
- Print length, names of streets
    Estimated time (Best case)
    and endpoints.
2020-11-27 06:04:29 +03:00
b214b279db
Add Buses per District in pre run report 2020-11-27 00:39:40 +03:00
538c4a09a4
Average time for each street in report 2020-11-26 23:50:26 +03:00
51534a5d2b
Keep track of time used on every street on route 2020-11-26 22:41:24 +03:00
ff5c7753ff Add avg time of trip per district (Hour report)
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-26 21:14:28 +03:00
480d9ccb46 Print dots as prog bar instead of date (minutes)
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-26 21:11:16 +03:00
71c07b5bc1
Remove colored street name in report 2020-11-26 20:27:41 +03:00
bba5441aee Pre-simulation report:
- Make report with details per District
	(Still incomplete)
	- Use String builder for all reports.
2020-11-26 03:30:36 +03:00
946e4004ae Print msg for no arrival (avg)
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-26 03:29:08 +03:00
4ab5b750b8
Remove printing of '\b'
- Causes problems in some consoles.
2020-11-23 01:29:23 +03:00
ee94355f42
Method in route getFastestTimeOfTravel(Vehicle):
- Every subclass of Vehicle needs to return
    the max of it self.

    - Calculate best case (empty streets) for
    a given vehcile using a Route.
2020-11-23 01:20:48 +03:00
6367b48746
Notes form 21-11-2020 meeting 2020-11-21 17:27:23 +03:00
dfbd961eca addCivilVehileNoise():
- Found possible fix for the method. Not yet done
	The 'numOfSedan', 'numOfSUV' ... get smaller for
	every loop iteration.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-21 02:49:00 +03:00
35cda81a46 Output:
- Add label for current minute output
	- Use "\b" instead of " " when clearing line

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-21 02:43:55 +03:00
da001dc5cd Output Color with respect to capacity
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-21 00:25:43 +03:00
1efd3e2dec Added new output and fixed street overflow
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-21 00:05:55 +03:00
4b0e8800be
Reset num of arrived busses after setting new route 2020-11-20 20:15:13 +03:00
012c8170f9 Two day simulation (buggy)?
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-19 17:06:12 +03:00
d2eeac04ec Setup for new time managment
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-18 19:35:49 +03:00
11a9269cb4 Street capacity used instead of remaining.
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-18 19:28:38 +03:00
9ecbfe15ed updated todo tasks
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-18 19:28:17 +03:00
Asaad Dadoush
5030e7e5ac Edit Routes and Add Streets 2020-11-18 18:22:07 +03:00
86a4ac509a Move counting methods to street
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-17 20:44:10 +03:00
b06a15e303 rename counting methods
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-17 20:25:40 +03:00
200acf9a98 Improved output
Added Breakdown of car types on each street.

	Calculate avg trip time in last 10 min

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-17 20:18:17 +03:00
Asaad Dadoush
5e612c2995 Edit 2020-11-17 17:45:21 +03:00
d5891ad2d1 Add ref to Camp in Bus ...
- Ref to Camp in Bus.
	- Override arrive() in bus to
	notify camp.
	- isAllArrived() changed to implement camp.isDone().
	Should be a bit faster

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-15 17:02:56 +03:00
f6209c669d
Remove camp field and better output 2020-11-15 11:48:48 +03:00
124920787c
Better street report 2020-11-15 01:42:17 +03:00
EngOsamah
0458ff143e maybe this is going to be phase one 2020-11-15 01:21:15 +03:00
Asaad Dadoush
bb46419ed3 Report 2020-11-14 21:27:32 +03:00
Asaad Dadoush
3e1b1f162c Add UID for Sedan / SUV / Truck 2020-11-14 16:31:43 +03:00
2eb6a96a23
Better movement.
- Move Vehicles from list
   in Makkah.
2020-11-14 02:37:57 +03:00
fe781f43b6
Better movement.
- Move Vehicles from list
   in Makkah.
2020-11-14 01:30:20 +03:00
392993a008
Cars move on top of each other 2020-11-13 22:35:52 +03:00
fac5ed0089 Major update
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-12 00:13:05 +03:00
62c8fb22fa Major update
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-12 00:12:59 +03:00
Asaad Dadoush
6aabadd1f0 add enum 2020-11-11 21:35:18 +03:00
16ff81a44c update Vehicle and Campaign
- Added movment in vehicle.
   - Now Campaign sets Routes for
   it's Vehicles.
   - Fixed Array size of stdRoutes
   - Added getShortestRoute(Campaign)
   and getRoutesToDistrict(District)
   in MakkahCity

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-11 21:02:59 +03:00
f4bb5e6099
Prevent IndexOutOFBoundEx:
In genCivilVehicles(), the
    casting might step over
    the number of cars size
    of the array. So, use try
    catch blocks and skip in that
    case.
2020-11-11 14:26:41 +03:00
9fb653397f Make PDate refrence type rather then static members 2020-11-11 12:04:50 +03:00
be05e7f848
Method to make noise cars 2020-11-10 20:48:32 +03:00
b491eaf4ab Vehicle: calc distance to next
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 20:16:36 +03:00
92661695b1 Meeting work
Signed-off-by: HeshamTB <hishaminv@gmail.com>

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 20:16:11 +03:00
HeshamTB
f3258355fe
Merge branch 'master' into master 2020-11-10 17:06:28 +03:00
EngOsamah
2b037e40e8 Update 2020-11-10 16:45:35 +03:00
3fb2291b85
Note to review 2020-11-10 08:02:55 +03:00
fc6b93697c
Street: Add get remaining percent capacity() 2020-11-10 00:54:31 +03:00
96a1254ce3 Makkah: add all busses from camps to list
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:43:16 +03:00
0fb689a3a0 MakkahCity: Main simulation begins
- Defined static lists and arrays holding
	All object references.

	- Generate campaigns with random number range
	based on Area. This is based on estimate of
	real values and density of the Districts in
	Makkah.

	- Main loop is made and limited by
	PDate.isEnded() which is static variable
	indicates the end of the timeline.
	The incrementor is PDate.step(key,value)

	Simulation begins...

	- H.B.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:10:31 +03:00
d242489985 Campaign and Bus:
- Buses now have fixed vehicle length
	stored in STD_BUS_SIZE and are constructed
	without parameters.

	- Fixed generateBuses() in Campaign
	to not be public and used one in practice

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:05:58 +03:00
1bf7290dbf Street:
- Added getCombinedLength(). Returns
	sum of the length of each lane on street

	- Fixed addVehicle() condition to be relative
	to the provided vehicle plus padding

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:03:29 +03:00
7c9fd44070 Clean up TrafficPoliceCar and Changed CanBeGovtCar
Signed-off-by: HeshamTB <hishaminv@gmail.com>

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:02:08 +03:00
713e902e05 Route:
- Changed constructor to take
	Enums of District and Mashier
	as endpoint (start, end)

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-10 00:00:20 +03:00
6d0ea7654e PDate: fix stepping method to not step over sim timeline
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-09 23:57:28 +03:00
0bc231222a StreetNames:
Index values of streets

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-09 23:53:42 +03:00
d3d515a818
Street capacity() calculation:
Add padding for each car except the first
	and last (i.e. number of cars - 2).
2020-11-09 12:42:32 +03:00
af5548734d Fix error in Camp.addVehicle()
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-09 12:30:18 +03:00
11252e7996
Ammar: Street.addVehicle() and capacity(): 2020-11-09 12:24:51 +03:00
4dde706eda Camp: Vehicles list points to null:
vehicles is null, thus, can't use .add() in generateBusses()
	First make an Object in generateBusses() then fill with add().
	Or make generateBusses() only add to an instance member
	(i.e. construct with ref with instance)

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-09 11:57:35 +03:00
EngOsamah
d4d91a4f17 راجع TODO 2020-11-08 23:35:39 +03:00
eb9223b2c2 Campaign check for valid leave date
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-08 18:26:06 +03:00
3ae32ebb11 Rework PDate
- Make PDate a static class or all
   methods and members are static to
   be used in the main implementation
   (Makkah)

   - isValidTime(Date) method to check
   if date is within simulation timeline
2020-11-08 18:22:55 +03:00
1f884631ee PDate class:
- Manege timeline of simulation

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-08 17:26:25 +03:00
HeshamTB
4110fc97ac
Merge pull request #2 from AsaadDadoush/master
Edit
2020-11-08 16:40:37 +03:00
Asaad Dadoush
074cb0a59b TODO Tasks 2020-11-08 16:34:10 +03:00
Asaad Dadoush
da8ef062ae add capcity method , canTakeVehicles , addVehicle 2020-11-08 16:03:44 +03:00
Asaad Dadoush
d63335beb8 Add Class 2020-11-08 03:05:52 +03:00
asaad
8c17a87105 Added classes: 2020-11-08 02:38:37 +03:00
asaad
be384ebf76 SUV Class 2020-11-08 02:31:20 +03:00
b70bad851e Use encapsulation principal in CivilVehicle
Since every occurrence of collide should set
	currentAccident and broken for all cars, use
	setCurrentAccident() for both cars in collide()
	which sets both values.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-07 12:35:35 +03:00
e65d3d16e9 Add isDone() boolean method to Accident
isDone() checks all invovlved CivilVehicles
	in Accident instance. If any car has reference
	to 'this' then it is still not done.
	Done would be true if fix() of each car is invoked.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-07 12:33:01 +03:00
IMXHERO
eeca8c5cbb
Update Campaign.java 2020-11-07 00:07:50 +03:00
IMXHERO
605dff3982
Update Campaign.java 2020-11-07 00:01:20 +03:00
eabe86923d
Fix improper UID String and getUID()
generateUID() used to produce spaces rather then
	leading zeros.
	Before
		(   1)
	After
		(0001)

	Also add getUID method
2020-11-06 23:28:58 +03:00
1372282168 Update Campaigns constructors
General improved constructors with regard to
	agreed upon final UML.

	generateUID() method to set UID for camp
	in constructors based on the new static int
	'numberOfCampaigns'. 0001, 0002, ...

	The type os UID is now String to accommodate
	the leading zeros.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-06 22:53:08 +03:00
3bc0940bee getVehicles() in Campaign
Allow to get ref to Array of Vehicles of Camp

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-06 22:49:33 +03:00
83cb6bcee7 Add Route to Vehicle
This is debatable since every Campgians has routes
	but is done to support all cases.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-06 22:42:15 +03:00
f8b5e79187 Add ref to street in every Accident
Add Street Object for Accident as location
	for Instances of Accident.

	Removed 'isInAccident()' from 'Breakable' interface
	The idea is from Previous suggested UML that replaces
	Broken and Accident with getStatus() that gives info about
	Breakable object. isBroken() now returns 1 if its eaither in
	Accident or Broken. Can check getCurrentAccident() for null.

Signed-off-by: HeshamTB <hishaminv@gmail.com>

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-06 22:36:01 +03:00
8a4a7d8f29 Campaign and new enums Mashier, Distrcit:
Update according to UML
   Set vehicles for camp
   new Constructor for camp

   Enum for District and Mashier. This will be set as endpoints
    for Streets, Routes or Campaigns.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-06 21:48:59 +03:00
d7cbd2910d
remove Date check on Accident
Removed the check on date of accidnet due
	to incomplete information. The start date of
	the simulation will be a static object in the
	future. Implement checks when added. TODO is
	there to reminde.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-10-27 11:55:39 +03:00
8e20f78eb9
Remove Gender enum:
The gender enum was made to be used with the removed
	Pilgrim class. The previous class and simulation vision
	has changed to be more targeted toward Vehicle flow and
	ignore dead-weight information like Pilgrims.

	Priority enum is still avialable to be used with campaigns
	to give preset priority for expermintation.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-10-27 07:52:19 +03:00
04149a4853
remove imports 2020-10-21 11:48:23 +03:00
eb94de2754 Remake Vehicle classes
- Abstract class CivilVehicle that implements Breakable and
	contains all common fields of vehicles. Now for example,
	Sedan <- CivilVehicle <- Vehicle
		      ^
		  Breakable
	The breakable methods are mostly implemented in CivilVehicle
	Except getTimeToFix() which is defined in subclasses of
	CivilVehicle.

	- Breakable interface:
	The method collide() now returns instance of Accident instead of
	void

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-10-21 11:35:19 +03:00
1b8b05cbb5 Remove Cap from Sedan and implement fix() from Breakable
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-10-21 05:45:16 +03:00
49f7be0ceb Campaign update:
- Remove fields as discussed in first project meeting
	- Add 2 Routes to each object with get/set

Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-10-21 05:42:45 +03:00
e12c5ec296
Added classes:
- Bus class that extends Vehicle and implements Breakable
	- Street class and properties
	- Route still to be updated. Add Locations for start/end?
2020-10-21 03:15:03 +03:00
c5db5dcac0
Traffic police implements CanFixAcc
SetVehicleSize is private
2020-10-20 12:55:16 +03:00
2c6721c89a
Merge branch 'master' of https://github.com/HeshamTB/Hajj-simulation into master 2020-10-20 12:52:22 +03:00
16ce4857c8 Restructure of Oct 18th meeting
some of the changes proposed in 18-10-2020 meeting:

- GovtCar marker interface (CanBeGovtCar)
- Remove isGovt from vehicle and Sedan constructors
- Remove Pilgrim.java class
- Remove PermitedForHaj.java interface
2020-10-20 02:33:57 +03:00
97620bce11
Use packages/folders for grouped classes 2020-10-16 07:27:40 +03:00
07e6b0c627
Added Accident class 2020-10-16 06:52:46 +03:00
de0331088f
Restructer and add CanFixAccident
- Move Capacity field to Vehicle class
	- Improve Breakable interface
2020-10-16 05:56:03 +03:00
58dfb37437
Pilgrim:
- Add static count of object. Increment in constructor and decrement in overidden 'finalize' method
	- Throw IllegalArgumentException instead of Exception for passport and age
2020-10-11 04:10:36 +03:00
3dbb440370
Added Vehicle data structure 2020-10-09 22:58:00 +03:00
50fcd50693
init commit
- Campaign, Pilgrim and enums
	- Project files
2020-10-09 22:22:37 +03:00