package mil.nga.giat.geowave.format.stanag4676.parser.model;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
/**
* Provides parameters related to a track.
* <p>
* Top-level information about the track is expressed in the Track class itself.
*/
public class TrackEvent
{
private Long id;
private String uuid;
private String trackNumber;
private TrackStatus status;
private Security security;
private String comment;
private String missionId;
private TreeMap<Long, TrackPoint> points = new TreeMap<Long, TrackPoint>();
private TreeMap<Long, MotionEventPoint> motionEvents = new TreeMap<Long, MotionEventPoint>();
private List<TrackIdentity> identities = new ArrayList<TrackIdentity>();
private List<TrackClassification> classifications = new ArrayList<TrackClassification>();
private List<TrackManagement> managements = new ArrayList<TrackManagement>();
private List<MotionImagery> motionImages = new ArrayList<MotionImagery>();
// private ESMInfo esm;
private List<LineageRelation> trackRelations = new ArrayList<LineageRelation>();
private ExerciseIndicator exerciseIndicator;
private SimulationIndicator simulationIndicator;
private Track track;
public Long getId() {
return id;
}
public void setId(
final Long id ) {
this.id = id;
}
public Track getTrack() {
return track;
}
public void setTrack(
final Track track ) {
this.track = track;
}
public String getUuid() {
return uuid;
}
public void setUuid(
final String uuid ) {
this.uuid = uuid;
}
public String getTrackNumber() {
return trackNumber;
}
public void setTrackNumber(
final String trackNumber ) {
this.trackNumber = trackNumber;
}
public TrackStatus getStatus() {
return status;
}
public void setStatus(
final TrackStatus status ) {
this.status = status;
}
public Security getSecurity() {
return security;
}
public void setSecurity(
final Security security ) {
this.security = security;
}
public String getComment() {
return comment;
}
public void setComment(
final String comment ) {
this.comment = comment;
}
public String getMissionId() {
return missionId;
}
public void setMissionId(
final String missionId ) {
this.missionId = missionId;
}
/**
* A list of the TrackPoints which comprise this track
*
* @return A list of the TrackPoints which comprise this track
*/
public TreeMap<Long, TrackPoint> getPoints() {
return points;
}
public TreeMap<Long, MotionEventPoint> getMotionPoints() {
return motionEvents;
}
/**
* Sets the list of TrackPoints which comprise this track
*
* @param points
* the list of TrackPoints which comprise this track
*/
public void setPoints(
final TreeMap<Long, TrackPoint> points ) {
this.points = points;
}
/**
* Adds a TrackPoint to the list of TrackPoints comprise this track
*
* @param point
* the TrackPoint to add
*/
public void addPoint(
final TrackPoint point ) {
if (points == null) {
points = new TreeMap<Long, TrackPoint>();
}
points.put(
point.eventTime,
point);
if (track != null) {
track.addPoint(point);
}
}
/**
* Adds a TrackPoint to the list of TrackPoints comprise this track
*
* @param point
* the TrackPoint to add
*/
public void addMotionPoint(
final MotionEventPoint point ) {
if (motionEvents == null) {
motionEvents = new TreeMap<Long, MotionEventPoint>();
}
motionEvents.put(
point.eventTime,
point);
// if(motionEvents != null) {
// track.addPoint(point);
// }
}
/**
* Provides identity information about a track.
* <p>
* values are derived from STANAG 1241.
*
* @return {@link TrackIdentity}
*/
public List<TrackIdentity> getIdentities() {
return identities;
}
public void setIdentities(
final List<TrackIdentity> identities ) {
this.identities = identities;
;
}
/**
* sets the identity information about this track
*
* @param identity
* {@link TrackIdentity}
*/
public void addIdentity(
final TrackIdentity identity ) {
if (identities == null) {
identities = new ArrayList<TrackIdentity>();
}
identities.add(identity);
if (track != null) {
track.addIdentity(identity);
}
}
/**
* Provides classification information about this track
*
* @return {@link TrackClassification}
*/
public List<TrackClassification> getClassifications() {
return classifications;
}
public void setClassifications(
final List<TrackClassification> classifications ) {
this.classifications = classifications;
;
}
/**
* sets the classification information about this track
*
* @param classification
* {@link TrackClassificaion}
*/
public void addClassification(
final TrackClassification classification ) {
if (classifications == null) {
classifications = new ArrayList<TrackClassification>();
}
classifications.add(classification);
if (track != null) {
track.addClassification(classification);
}
}
/**
* Provides management information about this track
*
* @return {@link TrackManagement}
*/
public List<TrackManagement> getManagements() {
return managements;
}
public void setManagements(
final List<TrackManagement> managements ) {
this.managements = managements;
;
}
/**
* sets the management information about this track
*
* @param management
* {@link TrackManagement}
*/
public void addManagement(
final TrackManagement management ) {
if (managements == null) {
managements = new ArrayList<TrackManagement>();
}
managements.add(management);
if (track != null) {
track.addManagement(management);
}
}
/**
* Provides video (motion imagery) information about this track
*
* @return {@link MotionImagery}
*/
public List<MotionImagery> getMotionImages() {
return motionImages;
}
public void setMotionImages(
final List<MotionImagery> motionImages ) {
this.motionImages = motionImages;
;
}
/**
* sets the management information about this track
*
* @param management
* {@link MotionImagery}
*/
public void addMotionImagery(
final MotionImagery image ) {
if (motionImages == null) {
motionImages = new ArrayList<MotionImagery>();
}
motionImages.add(image);
if (track != null) {
track.addMotionImagery(image);
}
}
/**
* Provides a list of related tracks
*
* @return List<{@link LineageRelation}>
*/
public List<LineageRelation> getTrackRelations() {
return trackRelations;
}
public void setTrackRelations(
final List<LineageRelation> trackRelations ) {
this.trackRelations = trackRelations;
;
}
/**
* sets a list of related tracks
*
* @param trackRelations
* List<{@link LineageRelation}>
*/
public void addTrackRelation(
final LineageRelation relation ) {
if (trackRelations == null) {
trackRelations = new ArrayList<LineageRelation>();
}
trackRelations.add(relation);
if (track != null) {
track.addTrackRelation(relation);
}
}
public void setExerciseIndicator(
final ExerciseIndicator exerciseIndicator ) {
this.exerciseIndicator = exerciseIndicator;
}
public ExerciseIndicator getExerciseIndicator() {
return exerciseIndicator;
}
public void setSimulationIndicator(
final SimulationIndicator simulationIndicator ) {
this.simulationIndicator = simulationIndicator;
}
public SimulationIndicator getSimulationIndicator() {
return simulationIndicator;
}
}