package tim.prune.data;
import java.io.File;
/**
* Simple class to represent an entry in the recently-used files list
*/
public class RecentFile
{
private boolean _regularLoad = true; // false for load via gpsbabel
private File _file = null;
/**
* Constructor
* @param inFile file
* @param inRegular true for regular load, false for gpsbabel load
*/
public RecentFile(File inFile, boolean inRegular)
{
_file = inFile;
_regularLoad = inRegular;
}
/**
* Constructor
* @param inDesc String from config
*/
public RecentFile(String inDesc)
{
if (inDesc != null && inDesc.length() > 3)
{
_regularLoad = (inDesc.charAt(0) != 'g');
_file = new File(inDesc.substring(1));
}
}
/**
* @return file object
*/
public File getFile() {
return _file;
}
/**
* @return true for regular load, false for gpsbabel load
*/
public boolean isRegularLoad() {
return _regularLoad;
}
/**
* @return true if file (still) exists
*/
public boolean isValid() {
return _file != null && _file.exists() && _file.isFile();
}
/**
* @return string to save in config
*/
public String getConfigString()
{
if (!isValid()) return "";
return (_regularLoad?"r":"g") + _file.getAbsolutePath();
}
/**
* Check for equality
* @param inOther other RecentFile object
* @return true if they both refer to the same file
*/
public boolean isSameFile(RecentFile inOther)
{
return inOther != null && isValid() && inOther.isValid()
&& (_file.equals(inOther._file) || _file.getAbsolutePath().equals(inOther._file.getAbsolutePath()));
// Note that the file.equals should be sufficient but sometimes it returns false even if the absolute paths are identical
}
}