/** * Copyright (C) 2013 - 2015 the enviroCar community * * This file is part of the enviroCar app. * * The enviroCar app is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The enviroCar app is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along * with the enviroCar app. If not, see http://www.gnu.org/licenses/. */ package org.envirocar.core.entity; import org.envirocar.core.exception.NoMeasurementsException; import org.envirocar.core.util.TrackMetadata; import java.util.List; /** * TODO JavaDoc * * @author dewall */ public interface Track extends BaseEntity<Track>, Comparable<Track> { String KEY_TRACK_TYPE = "type"; String KEY_TRACK_PROPERTIES = "properties"; String KEY_TRACK_PROPERTIES_ID = "id"; String KEY_TRACK_PROPERTIES_NAME = "name"; String KEY_TRACK_PROPERTIES_DESCRIPTION = "description"; String KEY_TRACK_PROPERTIES_CREATED = "created"; String KEY_TRACK_PROPERTIES_MODIFIED = "modified"; String KEY_TRACK_PROPERTIES_SENSOR = "sensor"; String KEY_TRACK_PROPERTIES_LENGTH = "length"; String KEY_TRACK_FEATURES = "features"; String KEY_TRACK_FEATURES_GEOMETRY = "geometry"; String KEY_TRACK_FEATURES_GEOMETRY_COORDINATES = "coordinates"; String KEY_TRACK_FEATURES_PROPERTIES = "properties"; String KEY_TRACK_FEATURES_PROPERTIES_ID = "id"; String KEY_TRACK_FEATURES_PROPERTIES_TIME = "time"; String KEY_TRACK_FEATURES_PROPERTIES_PHENOMENONS = "phenomenons"; String KEY_TRACK_FEATURES_PROPERTIES_PHENOMENONS_VALUE = "value"; String KEY_TRACK_FEATURES_PROPERTIES_PHENOMENONS_UNIT = "unit"; enum TrackStatus { ONGOING { @Override public String toString() { return "ONGOING"; } }, FINISHED { @Override public String toString() { return "FINISHED"; } } } enum DownloadState { REMOTE, DOWNLOADING, DOWNLOADED, } TrackId getTrackID(); void setTrackID(TrackId trackId); String getName(); void setName(String name); String getDescription(); void setDescription(String description); Car getCar(); void setCar(Car car); boolean isLocalTrack(); boolean isRemoteTrack(); Long getLastModified(); void setLastModified(long lastModified); Long getStartTime() throws NoMeasurementsException; void setStartTime(Long startTime); Long getEndTime() throws NoMeasurementsException; void setEndTime(Long endTime); long getDuration() throws NoMeasurementsException; TrackStatus getTrackStatus(); void setTrackStatus(TrackStatus trackStatus); boolean isFinished(); TrackMetadata getMetadata(); void setMetadata(TrackMetadata metadata); TrackMetadata updateMetadata(TrackMetadata metadata); Measurement getFirstMeasurement() throws NoMeasurementsException; Measurement getLastMeasurement() throws NoMeasurementsException; List<Measurement> getMeasurements(); void setMeasurements(List<Measurement> measurements); boolean hasProperty(Measurement.PropertyKey propertyKey); List<Measurement.PropertyKey> getSupportedProperties(); String getRemoteID(); void setRemoteID(String remoteID); boolean isLazyLoadingMeasurements(); void setLazyMeasurements(boolean lazyLoadingMeasurements); Track carbonCopy(); boolean isDownloaded(); boolean isDownloading(); DownloadState getDownloadState(); void setDownloadState(DownloadState downloadState); /** * TODO JavaDoc */ class TrackId { private long id; public TrackId(long i) { this.id = i; } public long getId() { return id; } @Override public String toString() { return Long.toString(id); } @Override public boolean equals(Object o) { if (o == null) { return false; } if (o instanceof TrackId) { return (this.getId() == ((TrackId) o).getId()); } return false; } @Override public int hashCode() { return (int) this.id; } } }