X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fdata%2FFileInfo.java;fp=src%2Ftim%2Fprune%2Fdata%2FFileInfo.java;h=41900cb8736df60d668238306079256bf2dca175;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/data/FileInfo.java b/src/tim/prune/data/FileInfo.java new file mode 100644 index 0000000..41900cb --- /dev/null +++ b/src/tim/prune/data/FileInfo.java @@ -0,0 +1,149 @@ +package tim.prune.data; + +import java.util.ArrayList; + +/** + * Class to hold the information about the file(s) + * from which the data was loaded from / saved to + */ +public class FileInfo +{ + /** List of sources */ + private ArrayList _sources = new ArrayList(); + + + /** + * Empty constructor + */ + public FileInfo() + {} + + /** + * Private constructor for creating clone + * @param inList list of sources + */ + private FileInfo(ArrayList inList) + { + _sources = inList; + } + + /** + * Add a data source to the list + * @param inInfo info object to add + */ + public void addSource(SourceInfo inInfo) + { + _sources.add(inInfo); + } + + /** + * Replace the list of data sources with the given source + * @param inInfo new source + */ + public void replaceSource(SourceInfo inInfo) + { + _sources.clear(); + addSource(inInfo); + } + + /** + * remove the last source added + */ + public void removeSource() + { + _sources.remove(_sources.size()-1); + } + + /** + * @return the number of files loaded + */ + public int getNumFiles() + { + return _sources.size(); + } + + + /** + * @return The source name, if a single file + */ + public String getFilename() + { + if (getNumFiles() == 1) { + return _sources.get(0).getName(); + } + return ""; + } + + /** + * @param inIndex index number, starting from zero + * @return source info object + */ + public SourceInfo getSource(int inIndex) + { + return _sources.get(inIndex); + } + + /** + * Get the SourceInfo object (if any) for the given point + * @param inPoint point object + * @return SourceInfo object if there is one, otherwise null + */ + public SourceInfo getSourceForPoint(DataPoint inPoint) + { + for (SourceInfo source : _sources) + { + if (source.getIndex(inPoint) >= 0) { + return source; + } + } + return null; + } + + /** + * @return the info about the last file loaded, if any + */ + public SourceInfo getLastFileInfo() + { + if (getNumFiles() == 0) + { + return null; + } + return getSource(getNumFiles()-1); + } + + /** + * @return the most recent file title loaded, if any + */ + public String getLastFileTitle() + { + final int numFiles = getNumFiles(); + if (numFiles == 0) + { + return null; + } + for (int i=(numFiles-1); i>=0; i--) + { + SourceInfo info = getSource(i); + if (info != null) + { + String title = info.getFileTitle(); + if (title != null && !title.equals("")) + { + return title; + } + } + } + return null; + } + + /** + * Clone contents of file info + */ + @SuppressWarnings("unchecked") + public FileInfo clone() + { + // copy source list + ArrayList copy = (ArrayList) _sources.clone(); + return new FileInfo(copy); + } +}