You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.3 KiB
155 lines
3.3 KiB
package shared.dataInput;
|
|
|
|
import network.Messages.Enums.RaceTypeEnum;
|
|
import shared.model.CompoundMark;
|
|
import shared.model.Corner;
|
|
import shared.model.GPSCoordinate;
|
|
import shared.model.Leg;
|
|
import shared.xml.Race.XMLCorner;
|
|
|
|
import java.time.ZonedDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* An empty {@link RaceDataSource}. Can be used to initialise a race with no data.
|
|
*/
|
|
public class EmptyRaceDataSource implements RaceDataSource {
|
|
|
|
|
|
/**
|
|
* The GPS coordinate of the top left of the race boundary.
|
|
*/
|
|
private GPSCoordinate mapTopLeft = new GPSCoordinate(0, 0);
|
|
|
|
/**
|
|
* The GPS coordinate of the bottom right of the race boundary.
|
|
*/
|
|
private GPSCoordinate mapBottomRight = new GPSCoordinate(0, 0);
|
|
|
|
|
|
/**
|
|
* A list of GPS coordinates that make up the boundary of the race.
|
|
*/
|
|
private final List<GPSCoordinate> boundary = new ArrayList<>();
|
|
|
|
/**
|
|
* A map between compoundMarkID and a CompoundMark for all CompoundMarks in a race.
|
|
*/
|
|
private final Map<Integer, CompoundMark> compoundMarkMap = new HashMap<>();
|
|
|
|
/**
|
|
* A list of boat sourceIDs participating in the race.
|
|
*/
|
|
private final List<Integer> participants = new ArrayList<>();
|
|
|
|
/**
|
|
* A list of legs in the race.
|
|
*/
|
|
private final List<Leg> legs = new ArrayList<>();
|
|
|
|
/**
|
|
* Corners in race.
|
|
*/
|
|
private final List<Corner> corners = new ArrayList<>();
|
|
|
|
|
|
|
|
/**
|
|
* The time that the race.xml file was created.
|
|
*/
|
|
private ZonedDateTime creationTimeDate = ZonedDateTime.now();
|
|
|
|
/**
|
|
* The time that the race should start at, if it hasn't been postponed.
|
|
*/
|
|
private ZonedDateTime raceStartTime = ZonedDateTime.now().plusMinutes(5);
|
|
|
|
/**
|
|
* Whether or not the race has been postponed.
|
|
*/
|
|
private boolean postpone = false;
|
|
|
|
|
|
/**
|
|
* The ID number of the race.
|
|
*/
|
|
private int raceID = 0;
|
|
|
|
/**
|
|
* The type of the race.
|
|
*/
|
|
private RaceTypeEnum raceType = RaceTypeEnum.NOT_A_RACE_TYPE;
|
|
|
|
|
|
private int sequenceNumber = 0;
|
|
|
|
|
|
public EmptyRaceDataSource() {
|
|
}
|
|
|
|
|
|
|
|
public List<GPSCoordinate> getBoundary() {
|
|
return boundary;
|
|
}
|
|
|
|
public GPSCoordinate getMapTopLeft() {
|
|
return mapTopLeft;
|
|
}
|
|
|
|
public GPSCoordinate getMapBottomRight() {
|
|
return mapBottomRight;
|
|
}
|
|
|
|
public List<Leg> getLegs() {
|
|
return legs;
|
|
}
|
|
|
|
@Override
|
|
public List<Corner> getCorners() {
|
|
return corners;
|
|
}
|
|
|
|
public List<CompoundMark> getCompoundMarks() {
|
|
return new ArrayList<>(compoundMarkMap.values());
|
|
}
|
|
|
|
|
|
public ZonedDateTime getCreationDateTime() {
|
|
return creationTimeDate;
|
|
}
|
|
|
|
public ZonedDateTime getStartDateTime() {
|
|
return raceStartTime;
|
|
}
|
|
|
|
public int getRaceId() {
|
|
return raceID;
|
|
}
|
|
|
|
public RaceTypeEnum getRaceType() {
|
|
return raceType;
|
|
}
|
|
|
|
public boolean getPostponed() {
|
|
return postpone;
|
|
}
|
|
|
|
public List<Integer> getParticipants() {
|
|
return participants;
|
|
}
|
|
|
|
@Override
|
|
public int getSequenceNumber() {
|
|
return sequenceNumber;
|
|
}
|
|
|
|
@Override
|
|
public void incrementSequenceNumber() {
|
|
sequenceNumber++;
|
|
}
|
|
}
|