X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FSourceInfo.java;fp=tim%2Fprune%2Fdata%2FSourceInfo.java;h=bbe8baa3d9cfb269eb9efcbd268b4a48976a2d8f;hb=1ee49ae3c8ef3aa2e63eadd458531e5f8bd4f92c;hp=0000000000000000000000000000000000000000;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/data/SourceInfo.java b/tim/prune/data/SourceInfo.java new file mode 100644 index 0000000..bbe8baa --- /dev/null +++ b/tim/prune/data/SourceInfo.java @@ -0,0 +1,111 @@ +package tim.prune.data; + +import java.io.File; + +/** + * Class to hold the source of the point data, + * including original file and file type, and + * also file offsets for source copying + */ +public class SourceInfo +{ + /** File type of source file */ + public enum FILE_TYPE {TEXT, GPX, KML, NMEA, GPSBABEL, GPSIES}; + + /** Source file */ + private File _sourceFile = null; + /** Name of source */ + private String _sourceName = null; + /** File type */ + private FILE_TYPE _fileType = null; + + /** Array of datapoints */ + private DataPoint[] _points = null; + + + /** + * Constructor + * @param inFile source file + * @param inType type of file + */ + public SourceInfo(File inFile, FILE_TYPE inType) + { + _sourceFile = inFile; + _sourceName = inFile.getName(); + _fileType = inType; + } + + /** + * Constructor + * @param inName name of source (without file) + * @param inType type of file + */ + public SourceInfo(String inName, FILE_TYPE inType) + { + _sourceFile = null; + _sourceName = inName; + _fileType = inType; + } + + /** + * @return source file + */ + public File getFile() + { + return _sourceFile; + } + + /** + * @return source name + */ + public String getName() + { + return _sourceName; + } + + /** + * @return file type of source + */ + public FILE_TYPE getFileType() + { + return _fileType; + } + + /** + * @return number of points from this source + */ + public int getNumPoints() + { + return _points.length; + } + + /** + * Take the points from the given track and store + * @param inTrack track object containing points + * @param inNumPoints number of points loaded + */ + public void populatePointObjects(Track inTrack, int inNumPoints) + { + if (inNumPoints > 0) + { + _points = new DataPoint[inNumPoints]; + int trackLen = inTrack.getNumPoints(); + System.arraycopy(inTrack.cloneContents(), trackLen-inNumPoints, _points, 0, inNumPoints); + // Note data copied twice here but still more efficient than looping + } + } + + /** + * Look for the given point in the array + * @param inPoint point to look for + * @return index, or -1 if not found + */ + public int getIndex(DataPoint inPoint) + { + int idx = -1; + for (int i=0; i<_points.length && (idx < 0); i++) { + if (_points[i] == inPoint) {idx = i;} + } + return idx; + } +}