Hajj-simulation/src/Campaign.java

127 lines
3.4 KiB
Java

import java.util.ArrayList;
import java.util.Date;
public class Campaign {
private String UID;
private int numberOfAriivedBuses;
//private int housingNumber;
//private String name;
private District hotelDistrict;
private Route route;
private ArrayList<Vehicle> vehicles = new ArrayList<>();
private ArrayList<Vehicle> arrivedVehicles = new ArrayList<>();
private Date timeToLeaveToDest;
private Date timeToLeaveToHousing;
private static int numeberOfCampains;
public Campaign(District hotelDistrict, int numberofBusses) {
this.hotelDistrict = hotelDistrict;
generateBusses(numberofBusses);
generateUID();
}
public Campaign(District hotelDistrict, ArrayList<Vehicle> vehicles) {
this.hotelDistrict = hotelDistrict;
setVehicles(vehicles);
generateUID();
}
public void busArived(Bus bus) {
if(numberOfAriivedBuses < vehicles.size())
arrivedVehicles.add(bus);
numberOfAriivedBuses++;
}
public boolean isDone() {
return numberOfAriivedBuses == vehicles.size();
}
public Route getRoute() {
return route;
}
public void setRoute(Route route) {
this.route = route;
for (Vehicle vehicle : vehicles) {
vehicle.setRoute(route);
}
//since a route is set, reset buses and clear arrivedBussesList
this.arrivedVehicles.clear();
this.numberOfAriivedBuses = 0;
}
public District getHotelDistrict(){ return this.hotelDistrict; }
public Date getTimeToLeaveToDest() {
return timeToLeaveToDest;
}
public void setTimeToLeaveToDest(Date timeToLeaveToDest) throws OutOfSimulationTimeException {
if(PDate.isWithInTimeline(timeToLeaveToDest, MakkahCity.getTimeMan()))
this.timeToLeaveToDest = timeToLeaveToDest;
else throw new OutOfSimulationTimeException();
}
public Date getTimeToLeaveToHousing() {
return timeToLeaveToHousing;
}
public void setTimeToLeaveToHousing(Date timeToLeaveToHousing) throws OutOfSimulationTimeException {
if(PDate.isWithInTimeline(timeToLeaveToHousing, MakkahCity.getTimeMan()))
this.timeToLeaveToHousing = timeToLeaveToHousing;
else throw new OutOfSimulationTimeException();
}
public int getNumberOfBusses() {
int busses = 0;
for (Vehicle vehicle : vehicles){
if (vehicle instanceof Bus) busses++;
}
return busses;
}
public int getNumberOfArrivedBuses() {
return getArrivedVehicles().size();
}
//Use this in Makkah to optimize later
public ArrayList<Vehicle> getArrivedVehicles() {
return arrivedVehicles;
}
public ArrayList<Vehicle> getVehicles() {
return vehicles;
}
public void setVehicles(ArrayList<Vehicle> vehicles) {
if (vehicles != null)
this.vehicles = vehicles;
}
private void generateBusses(int number){
for (int i = 1; i <= number; i++) {
Bus bus = new Bus();
vehicles.add(bus);
bus.setCampaign(this);
}
}
private void generateUID() {
numeberOfCampains++;
this.UID = String.format("CAMP%04d", numeberOfCampains);
}
public String getUID(){
return this.UID;
}
public int getPercentArrived() {
return ((numberOfAriivedBuses/vehicles.size()) *100);
}
}