1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 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;
}
}
|