This commit is contained in:
HeshamTB 2020-10-20 12:52:22 +03:00
commit 2c6721c89a
Signed by: Hesham
GPG Key ID: 74876157D199B09E
16 changed files with 102 additions and 182 deletions

View File

@ -1,5 +1,3 @@
package ee364.hajj.transport;
import java.util.Date;
public class Accident {
@ -17,7 +15,7 @@ public class Accident {
Date startOfSimDate = new Date(15000000);
//TODO: make a static final class with needed values
if (date.before(startOfSimDate)){
throw new IllegalArgumentException("Date of ee364.hajj.transport.Accident before t zero");
throw new IllegalArgumentException("Date of Accident before t zero");
}
else this.date = date;
}

View File

@ -1,5 +1,3 @@
package ee364.hajj.transport;
import java.util.Date;
public interface Breakable {

34
src/Campaign.java Normal file
View File

@ -0,0 +1,34 @@
public class Campaign {
private int UID;
private int workers;
private int numberOfPeople;
private String district;
private String name;
private boolean local;
public Campaign(int numberOfPeople){
/*
Make an array of pilgrims based on number of people with
a set ration pilgrims:workers
Assume not local
*/
}
// public Campaign(Pilgrim[] pilgrims){
// /*
// Calculate number of workers based on number of pilgrims (pilgrims.length;)
// Assume not local
// */
// }
public int getNumberofCars(){
//Assume each car holds 4 workers
return (int)workers/4;
}
public int getNumberOfBusses(){
return 0;//TODO: calc buses?
}
}

3
src/CanBeGovtCar.java Normal file
View File

@ -0,0 +1,3 @@
public interface CanBeGovtCar {
int getGovtID();
}

3
src/CanFixAccident.java Normal file
View File

@ -0,0 +1,3 @@
public interface CanFixAccident {
//void attendToAccident(Accident accident);
}

View File

@ -1,5 +1,3 @@
package ee364.hajj;
public enum Gender {
MALE,
FEMALE

View File

@ -1,5 +1,3 @@
package ee364.hajj;
public enum Priority {
HIGH,
MID,

View File

@ -1,5 +1,3 @@
package ee364.hajj.transport;
import java.util.Date;
public class Sedan extends Vehicle implements Breakable {
@ -7,16 +5,28 @@ public class Sedan extends Vehicle implements Breakable {
private final int TIME_TO_FIX = 15; //in minutes
private boolean broken;
private boolean accident;
private int capacity;
public Sedan(double vehicleSize, boolean govtCar){
super(vehicleSize, govtCar, 4);
public Sedan(double vehicleSize){
super(vehicleSize);
capacity = 4; //Should make this attr. in vehicle.
}
public boolean isBroken(){ return broken; }
public boolean isInAccident(){ return accident; }
public void _break(Date time) { this.broken = true; } //TODO
public void collide(Breakable car, Date time) { this.accident = true; }//TODO //Maybe add time of accident and other breakable args
@Override
public void collide(Breakable car, Date time) {
}
@Override
public void _break(Date time) {
}
public int getTimeToFix(){ return TIME_TO_FIX; }
public int getCapacity() { return capacity; }
public void fixed() { this.broken = false; this.accident = false; }

29
src/TrafficPoliceCar.java Normal file
View File

@ -0,0 +1,29 @@
public class TrafficPoliceCar extends Vehicle implements CanBeGovtCar {
private final double ADDED_EFFICIENCY = 0.05; // 5%
private int govtID;
/**
* construct instance with random GovtID
* @param vehicleSize Length of vehicle in meters
*/
public TrafficPoliceCar(double vehicleSize){
super(vehicleSize);
//TODO: Set random govtID
}
/**
* Construct instance with given GovtID
* @param vehicleSize Length of vehicle in meters
* @param govtID Provided Govt ID
*/
public TrafficPoliceCar(double vehicleSize, int govtID) {
super(vehicleSize);
this.govtID = govtID;
}
@Override
public int getGovtID() {
return govtID;
}
}

16
src/Vehicle.java Normal file
View File

@ -0,0 +1,16 @@
public abstract class Vehicle {
private double vehicleSize;
public Vehicle(double vehicleSize){
setVehicleSize(vehicleSize);
}
public double getVehicleSize() {
return vehicleSize;
}
public void setVehicleSize(double vehicleSize) {
if (vehicleSize <= 0) throw new IllegalArgumentException("Vehicle can not be negative in length!");
else this.vehicleSize = vehicleSize;
}
}

View File

@ -1,55 +0,0 @@
package ee364.hajj.group;
import ee364.hajj.Priority;
public class Campaign implements PermitedForHaj {
private int UID;
private int workers;
private int numberOfPeople;
private String district;
private String name;
private boolean local;
private Pilgrim[] pilgrims;
public Campaign(int numberOfPeople){
/*
Make an array of pilgrims based on number of people with
a set ration pilgrims:workers
Assume not local
*/
}
public Campaign(Pilgrim[] pilgrims){
/*
Calculate number of workers based on number of pilgrims (pilgrims.length;)
Assume not local
*/
}
@Override
public int hasUID() {
return UID;
}
@Override
public boolean isLocal() {
return local;
}
public int getNumberofCars(){
//Assume each car holds 4 workers
return (int)workers/4;
}
public int getNumberOfBusses(){
int highPriorityPilgrims = 0;
int totalBusses = 0;
for (Pilgrim pilgrim : pilgrims){
if (pilgrim.getPriority() == Priority.HIGH) highPriorityPilgrims++;
}
totalBusses += highPriorityPilgrims/20; //Assume pilgims with physical disability
totalBusses += (pilgrims.length - highPriorityPilgrims)/40; //Remaining pilgrims fill busses
return totalBusses;
}
}

View File

@ -1,7 +0,0 @@
package ee364.hajj.group;
public interface PermitedForHaj {
//public boolean has_UID();
public int hasUID();
public boolean isLocal();
}

View File

@ -1,45 +0,0 @@
package ee364.hajj.group;
import ee364.hajj.Gender;
import ee364.hajj.Priority;
public class Pilgrim {
//keep track of all pilgrim object count.
private static int totalPilgrims;
private String passport;
private boolean local;
private int age;
private Gender gender;
private Priority priority;
public Pilgrim(String passport, int age, Gender gender, Priority priority, boolean local) throws Exception {
setAge(age);
setPassport(passport);
this.gender = gender;
this.priority = priority;
totalPilgrims++; //Added a pilgrim
}
public Priority getPriority() { return priority; }
private void setAge(int age) throws IllegalArgumentException {
if (age < 7 || age > 85) throw new IllegalArgumentException("Age out of permitted range");
else this.age = age;
}
private void setPassport(String passport) throws IllegalArgumentException{
if (passport.length() == 8) //assuming standard passport number lengths
this.passport = passport;
else throw new IllegalArgumentException("Invalid passport format");
//TODO:Make exception classes
}
@Override
protected void finalize() throws Throwable {
super.finalize();
//Decrement the count of total objects when GC cleans unneeded.
totalPilgrims--;
}
}

View File

@ -1,5 +0,0 @@
package ee364.hajj.transport;
public interface CanFixAccident {
//void attendToAccident(ee364.hajj.transport.Accident accident);
}

View File

@ -1,23 +0,0 @@
package ee364.hajj.transport;
public class TrafficPoliceCar extends Vehicle implements CanFixAccident {
public final double ADDED_EFFICIENCY = 0.05; // 5%
//private Street str_location or name
private static int totalTrafficCars;
public TrafficPoliceCar(double vehicleSize, boolean govtCar){
super(vehicleSize, govtCar, 2); //Capacity is irrelevant.
totalTrafficCars++;
}
public static int getTotalTrafficCars() {
return totalTrafficCars;
}
@Override
protected void finalize() throws Throwable {
super.finalize();
totalTrafficCars--;
}
}

View File

@ -1,32 +0,0 @@
package ee364.hajj.transport;
public abstract class Vehicle {
private double vehicleSize;
private boolean govtCar;
private int capacity;
public Vehicle(double vehicleSize, boolean govtCar, int capacity){
this.vehicleSize = vehicleSize;
this.govtCar = govtCar;
setCapacity(capacity);
}
public double getVehicleSize() {
return vehicleSize;
}
public boolean isGovtCar() {
return govtCar;
}
public int getCapacity() {
return capacity;
}
private void setCapacity(int capacity) throws IllegalArgumentException {
if (capacity > 0 && capacity < 50){
this.capacity = capacity;
}
else throw new IllegalArgumentException(String.format("Invalid vehicle capacity %d", capacity));
}
}