Hajj-simulation/src/PDate.java
HeshamTB 1efd3e2dec Added new output and fixed street overflow
Signed-off-by: HeshamTB <hishaminv@gmail.com>
2020-11-21 00:05:55 +03:00

127 lines
2.7 KiB
Java

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* Class to manage and track timeline of Hajj-Simulation
*/
public class PDate extends Calendar {
/*
Rewrite this class to use it's own members. Extending calendar is pointless like this.
- H.B.
*/
public final Calendar startCalendar;
public final Calendar endCalendar;
private final Calendar currentCalendar;
private boolean ended;
public PDate(GregorianCalendar start, GregorianCalendar end) {
this.startCalendar = start;
this.endCalendar = end;
this.currentCalendar = (GregorianCalendar)start.clone();
}
public Calendar getStartCalendar() {
return startCalendar;
}
public Calendar getEndCalendar() {
return endCalendar;
}
public Calendar getCurrentCalendar() {
return currentCalendar;
}
public Date getStartTime() {
return startCalendar.getTime();
}
public Date getEndTime(){
return endCalendar.getTime();
}
public Date getCurrentTime() {
return currentCalendar.getTime();
}
public void step(int key, int value){
ended = false;
Calendar dummy = (GregorianCalendar)currentCalendar.clone();
dummy.add(key, value);
if (dummy.before(endCalendar)){
currentCalendar.add(key, value);
}
else ended = true;
}
public boolean isEnded(){
return ended;
}
/**
Check if time/date provided falls within the simulation timeline
*/
public boolean isWithInTimeline(Date time) {
if (time.after(this.endCalendar.getTime()) ||
time.before(this.startCalendar.getTime()))
return false;
else
return true;
}
/**
Check if time/date provided falls within the simulation timeline
with reference to a PDate instance.
*/
public static boolean isWithInTimeline(Date time, PDate timeManeger) {
return time.after(timeManeger.getStartTime()) &&
time.before(timeManeger.getEndTime());
}
@Override
protected void computeTime() {
}
@Override
protected void computeFields() {
}
@Override
public void add(int i, int i1) {
}
@Override
public void roll(int i, boolean b) {
}
@Override
public int getMinimum(int i) {
return 0;
}
@Override
public int getMaximum(int i) {
return 0;
}
@Override
public int getGreatestMinimum(int i) {
return 0;
}
@Override
public int getLeastMaximum(int i) {
return 0;
}
}
class OutOfSimulationTimeException extends Exception {
}