Chaste
Release::2017.1
|
#include <FileFinder.hpp>
Public Member Functions | |
FileFinder () | |
FileFinder (const std::string &rPath, RelativeTo::Value relativeTo) | |
FileFinder (const std::string &rLeafName, const FileFinder &rParentOrSibling) | |
FileFinder (const fs::path &rPath) | |
virtual | ~FileFinder () |
virtual void | SetPath (const std::string &rPath, RelativeTo::Value relativeTo) |
virtual void | SetPath (const std::string &rLeafName, const FileFinder &rParentOrSibling) |
bool | IsPathSet () const |
bool | Exists () const |
bool | IsFile () const |
bool | IsDir () const |
bool | IsEmpty () const |
std::string | GetAbsolutePath () const |
bool | IsNewerThan (const FileFinder &rOtherEntity) const |
std::string | GetLeafName () const |
std::string | GetLeafNameNoExtension () const |
std::string | GetExtension () const |
FileFinder | GetParent () const |
std::string | GetRelativePath (const FileFinder &rBasePath) const |
FileFinder | CopyTo (const FileFinder &rDest) const |
void | Remove () const |
void | DangerousRemove () const |
std::vector< FileFinder > | FindMatches (const std::string &rPattern) const |
Static Public Member Functions | |
static bool | IsAbsolutePath (const std::string &rPath) |
static void | ReplaceSpacesWithUnderscores (std::string &rPath) |
static void | ReplaceUnderscoresWithSpaces (std::string &rPath) |
static void | FakePath (RelativeTo::Value fakeWhat, const std::string &rFakePath) |
static void | StopFaking () |
Private Member Functions | |
void | PrivateRemove (bool dangerous=false) const |
Private Attributes | |
std::string | mAbsPath |
Static Private Attributes | |
static bool | msFaking = false |
static RelativeTo::Value | msFakeWhat = RelativeTo::Absolute |
static std::string | msFakePath = "" |
A helper class for finding files or directories, given paths which can be relative to various locations (e.g. the Chaste source tree root, the current directory, the Chaste test output directory, or an absolute path).
Definition at line 69 of file FileFinder.hpp.
FileFinder::FileFinder | ( | ) |
Default constructor for subclasses to use. They should call SetPath() in their constructor.
This also allows classes to store a FileFinder instance that hasn't been properly set up yet, and assign to it later using operator=.
Definition at line 75 of file FileFinder.cpp.
Referenced by CopyTo(), FindMatches(), GetParent(), and PrivateRemove().
FileFinder::FileFinder | ( | const std::string & | rPath, |
RelativeTo::Value | relativeTo | ||
) |
Main constructor.
rPath | the path to the file/dir to find |
relativeTo | how to interpret this path |
Definition at line 80 of file FileFinder.cpp.
References SetPath().
FileFinder::FileFinder | ( | const std::string & | rLeafName, |
const FileFinder & | rParentOrSibling | ||
) |
Find a file (or folder) relative to some file or directory. If the second argument is a directory, we look for the given leaf name within it. If the second argument is a file, then we look for a sibling. An exception is raised if rParentOrSibling does not exist.
rLeafName | the leaf name of the file/dir to find |
rParentOrSibling | where to look for it |
Definition at line 85 of file FileFinder.cpp.
References SetPath().
FileFinder::FileFinder | ( | const fs::path & | rPath | ) |
Conversion constructor from a Boost Filesystem path object. Note that since fs::path has a conversion constructor from std::string, this allows us to be initialised with a string or character constant, too. The path will be interpreted as relative to the current working directory, unless it is an absolute path.
rPath | the path to the file/dir to find |
Definition at line 90 of file FileFinder.cpp.
References RelativeTo::Absolute, and SetPath().
|
virtual |
Needed because we have virtual methods.
Definition at line 95 of file FileFinder.cpp.
FileFinder FileFinder::CopyTo | ( | const FileFinder & | rDest | ) | const |
Copy this file or folder (recursively in the latter case) to the given destination. If the destination is a folder that exists, the source will be copied with the same name inside that folder. Otherwise the source will be copied with the given destination name.
If the source is a file and the destination is a file that exists it will be removed prior to copying. If the source is a folder and the destination is a file that exists then an error is thrown.
rDest | where to copy to |
Definition at line 308 of file FileFinder.cpp.
References EXCEPTION, Exists(), FileFinder(), IsDir(), IsFile(), and mAbsPath.
Referenced by CellMLToSharedLibraryConverter::ConvertCellmlToSo(), HeartConfig::CopySchema(), CardiacSimulation::CreateAndRun(), AbstractCardiacTissue< SPACE_DIM >::save(), and AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().
void FileFinder::DangerousRemove | ( | ) | const |
This method will allow you to remove any file from under either * CHASTE_TEST_OUTPUT or * the source tree (but not elsewhere).
For this reason it is a very dangerous operation and should not be used if Remove could be instead.
BEWARE: if you have managed to set CHASTE_TEST_OUTPUT to "/" this could wipe your system!
Definition at line 426 of file FileFinder.cpp.
References PrivateRemove().
Referenced by CellMLToSharedLibraryConverter::ConvertCellmlToSo().
bool FileFinder::Exists | ( | ) | const |
Definition at line 180 of file FileFinder.cpp.
References mAbsPath.
Referenced by ColumnDataReader::ColumnDataReader(), Hdf5DataReader::CommonConstructor(), OutputFileHandler::CommonConstructor(), CellMLToSharedLibraryConverter::Convert(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), HeartConfig::CopySchema(), CopyTo(), BidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors(), ExtendedBidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors(), AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::CreateIntracellularConductivityTensor(), ExtendedBidomainTissue< SPACE_DIM >::CreateIntracellularConductivityTensorSecondCell(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseWriter(), IsNewerThan(), CellMLLoader::LoadCellMLFile(), CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate(), Hdf5DataWriter::OpenFile(), PrivateRemove(), AbstractPurkinjeCellFactory< ELEMENT_DIM, SPACE_DIM >::ReadJunctionsFile(), AbstractCardiacTissue< SPACE_DIM >::save(), EllipticGrowingDomainPdeModifier< DIM >::serialize(), ParabolicGrowingDomainPdeModifier< DIM >::serialize(), ParabolicBoxDomainPdeModifier< DIM >::serialize(), EllipticBoxDomainPdeModifier< DIM >::serialize(), and SetPath().
|
static |
For testing purposes, fake the value of one of the normally fixed paths, e.g. ChasteSourceRoot.
fakeWhat | which path to fake |
rFakePath | its fake value |
Definition at line 553 of file FileFinder.cpp.
References msFakePath, msFakeWhat, and msFaking.
std::vector< FileFinder > FileFinder::FindMatches | ( | const std::string & | rPattern | ) | const |
rPattern | the pattern to match names against |
Definition at line 432 of file FileFinder.cpp.
References EXCEPTION, FileFinder(), IsDir(), mAbsPath, and PATH_LEAF_NAME.
Referenced by CellMLToSharedLibraryConverter::ConvertCellmlToSo(), and AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().
std::string FileFinder::GetAbsolutePath | ( | ) | const |
If this is a directory that exists (at the instant of this call), the absolute path is guaranteed to end in a '/'. Otherwise, the path is guaranteed not to end in a '/'.
Definition at line 221 of file FileFinder.cpp.
References IsDir(), and mAbsPath.
Referenced by ColumnDataReader::ColumnDataReader(), Hdf5DataReader::CommonConstructor(), AbstractConvergenceTester< CELL, CARDIAC_PROBLEM, DIM, PROBLEM_DIM >::Converge(), CellMLToSharedLibraryConverter::Convert(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), OutputFileHandler::CopyFileTo(), FibreReader< DIM >::FibreReader(), AbstractHdf5Converter< ELEMENT_DIM, SPACE_DIM >::GenerateListOfDatasets(), OutputFileHandler::GetChasteTestOutputDirectory(), ElectroMechanicsProblemDefinition< DIM >::GetFibreSheetDirectionsFile(), DynamicModelLoaderRegistry::GetLoader(), GetRelativePath(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::InitialiseWriter(), CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate(), Hdf5DataWriter::OpenFile(), OutputFileHandler::OutputFileHandler(), PrivateRemove(), AbstractPurkinjeCellFactory< ELEMENT_DIM, SPACE_DIM >::ReadJunctionsFile(), ArchiveLocationInfo::SetArchiveDirectory(), SetPath(), AbstractCardiacMechanicsSolver< ELASTICITY_SOLVER, DIM >::SetVariableFibreSheetDirections(), and AbstractTetrahedralMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteNclFile().
std::string FileFinder::GetExtension | ( | ) | const |
Definition at line 247 of file FileFinder.cpp.
References mAbsPath.
Referenced by AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().
std::string FileFinder::GetLeafName | ( | ) | const |
i.e. the individual file or directory name and none of the preceding folders on its path.
Definition at line 237 of file FileFinder.cpp.
References mAbsPath, and PATH_LEAF_NAME.
Referenced by CellMLLoader::LoadCellMLFile().
std::string FileFinder::GetLeafNameNoExtension | ( | ) | const |
i.e. the individual file or directory name and none of the preceding folders on its path.
Definition at line 242 of file FileFinder.cpp.
References mAbsPath.
Referenced by FibreConverter::Convert(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), CellMLLoader::LoadCellMLFile(), and AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save().
FileFinder FileFinder::GetParent | ( | ) | const |
Definition at line 252 of file FileFinder.cpp.
References RelativeTo::Absolute, EXCEPT_IF_NOT, FileFinder(), and mAbsPath.
Referenced by FibreConverter::Convert(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM >::save(), and SetPath().
std::string FileFinder::GetRelativePath | ( | const FileFinder & | rBasePath | ) | const |
rBasePath | where the returned path should be relative to |
Definition at line 261 of file FileFinder.cpp.
References EXCEPT_IF_NOT, EXCEPTION, and GetAbsolutePath().
Referenced by OutputFileHandler::GetRelativePath(), Hdf5ToMeshalyzerConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToMeshalyzerConverter(), Hdf5ToVtkConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToVtkConverter(), OutputFileHandler::OutputFileHandler(), and PostProcessingWriter< ELEMENT_DIM, SPACE_DIM >::WriteOutputDataToHdf5().
|
static |
rPath | the path to test |
Definition at line 526 of file FileFinder.cpp.
Referenced by ExtendedBidomainProblem< DIM >::load(), AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, 2 >::load(), ArchiveLocationInfo::SetMeshPathname(), ExecutableSupport::SetOutputDirectory(), and SetPath().
bool FileFinder::IsDir | ( | ) | const |
Definition at line 190 of file FileFinder.cpp.
References mAbsPath.
Referenced by ColumnDataReader::ColumnDataReader(), Hdf5DataReader::CommonConstructor(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), CopyTo(), FindMatches(), GetAbsolutePath(), IsEmpty(), CardiacSimulationArchiver< PROBLEM_CLASS >::Migrate(), and SetPath().
bool FileFinder::IsEmpty | ( | ) | const |
Definition at line 195 of file FileFinder.cpp.
References EXCEPTION, IsDir(), IsFile(), mAbsPath, and PATH_LEAF_NAME.
bool FileFinder::IsFile | ( | ) | const |
Definition at line 185 of file FileFinder.cpp.
References mAbsPath.
Referenced by OutputFileHandler::CopyFileTo(), CopyTo(), Hdf5ToMeshalyzerConverter< ELEMENT_DIM, SPACE_DIM >::Hdf5ToMeshalyzerConverter(), IsEmpty(), and PrivateRemove().
bool FileFinder::IsNewerThan | ( | const FileFinder & | rOtherEntity | ) | const |
rOtherEntity | the entity to test against. |
Definition at line 230 of file FileFinder.cpp.
References Exists(), and mAbsPath.
Referenced by CellMLToSharedLibraryConverter::Convert().
bool FileFinder::IsPathSet | ( | ) | const |
Definition at line 175 of file FileFinder.cpp.
References mAbsPath.
Referenced by CellMLToSharedLibraryConverter::ConvertCellmlToSo(), ExecutableSupport::InitializePetsc(), ExecutableSupport::PrintError(), ExecutableSupport::WriteMachineInfoFile(), and ExecutableSupport::WriteProvenanceInfoFile().
|
private |
This is code common to Remove() and DangerousRemove(). Should remain private and not to be called from elsewhere. Remove() is only allowed to delete things with a .chaste_deletable_folder in the testoutput directory.
DangerousRemove() is allowed to delete anything in the source or testoutput directories.
dangerous | whether we are doing a dangerous remove. |
Definition at line 357 of file FileFinder.cpp.
References RelativeTo::ChasteBuildRoot, RelativeTo::ChasteSourceRoot, EXCEPTION, Exists(), FileFinder(), GetAbsolutePath(), OutputFileHandler::GetChasteTestOutputDirectory(), IsFile(), mAbsPath, OutputFileHandler::SIG_FILE_NAME, and ChastePosixPathFixer::ToPosix().
Referenced by DangerousRemove(), and Remove().
void FileFinder::Remove | ( | ) | const |
Recursively remove this file or folder. Since this is a potentially very dangerous operation, only locations under the Chaste test output folder may be removed.
Only folders created by an OutputFileHandler, or the contents of such a folder, may be deleted (folders that have .chaste_deletable_folder present).
If you need to delete a file or folder without .chaste_deletable_folder, then you have to use DangerousRemove().
Definition at line 421 of file FileFinder.cpp.
References PrivateRemove().
|
static |
Replace any spaces in a path or filename with underscores.
rPath | a path or file name |
Definition at line 531 of file FileFinder.cpp.
|
static |
Replace any underscores in a path or filename with spaces (for making titles etc.).
rPath | a path or file name |
Definition at line 542 of file FileFinder.cpp.
|
virtual |
Change this FileFinder to point at a new location.
rPath | the path to the file/dir to find |
relativeTo | how to interpret this path |
Definition at line 99 of file FileFinder.cpp.
References RelativeTo::Absolute, RelativeTo::AbsoluteOrCwd, RelativeTo::ChasteBuildRoot, ChasteBuildRootDir(), RelativeTo::ChasteSourceRoot, ChasteSourceRootDir(), RelativeTo::ChasteTestOutput, RelativeTo::CWD, OutputFileHandler::GetChasteTestOutputDirectory(), IsAbsolutePath(), mAbsPath, msFakePath, msFakeWhat, msFaking, and NEVER_REACHED.
Referenced by AbstractHdf5Access::AbstractHdf5Access(), CellMLToSharedLibraryConverter::Convert(), CellMLToSharedLibraryConverter::ConvertCellmlToSo(), HeartConfig::CopySchema(), FileFinder(), OutputFileHandler::GetChasteTestOutputDirectory(), HeartFileFinder::HeartFileFinder(), ExecutableSupport::InitializePetsc(), HeartConfig::LoadFromCheckpoint(), ExecutableSupport::PrintError(), ExecutableSupport::SetOutputDirectory(), HeartConfig::SetParametersFile(), SetPath(), ExecutableSupport::WriteMachineInfoFile(), and ExecutableSupport::WriteProvenanceInfoFile().
|
virtual |
Change this FileFinder to point at a new location, relative to some file or directory.
rLeafName | the leaf name of the file/dir to find |
rParentOrSibling | where to look for it |
Definition at line 159 of file FileFinder.cpp.
References RelativeTo::Absolute, EXCEPTION, Exists(), GetAbsolutePath(), GetParent(), IsDir(), and SetPath().
|
static |
Stop faking one of the fixed paths.
Definition at line 560 of file FileFinder.cpp.
References msFaking.
|
private |
The absolute path to our file.
Definition at line 297 of file FileFinder.hpp.
Referenced by CopyTo(), Exists(), FindMatches(), GetAbsolutePath(), GetExtension(), GetLeafName(), GetLeafNameNoExtension(), GetParent(), IsDir(), IsEmpty(), IsFile(), IsNewerThan(), IsPathSet(), PrivateRemove(), and SetPath().
|
staticprivate |
The fake value of the faked path.
Definition at line 306 of file FileFinder.hpp.
Referenced by FakePath(), and SetPath().
|
staticprivate |
Which path to fake.
Definition at line 303 of file FileFinder.hpp.
Referenced by FakePath(), and SetPath().
|
staticprivate |
Whether to fake one of the fixed paths, e.g. ChasteSourceRoot.
Definition at line 300 of file FileFinder.hpp.
Referenced by FakePath(), SetPath(), and StopFaking().