HOPS
HOPS class reference
MHO_DirectoryInterface.hh
Go to the documentation of this file.
1 #ifndef MHO_DirectoryInterface_HH__
2 #define MHO_DirectoryInterface_HH__
3 
4 #include <string>
5 #include <vector>
6 
7 #include "MHO_Tokenizer.hh"
8 
9 namespace hops
10 {
11 
24 {
25  public:
27  virtual ~MHO_DirectoryInterface();
28 
36  static std::string GetDirectoryFullPath(const std::string& dirname);
37 
45  static std::string GetDirectoryFullPathPreserveSymlinks(const std::string& dirname);
46 
54  static bool DoesDirectoryExist(const std::string& dirname);
55 
63  static bool IsDirectory(const std::string& name);
64 
72  static bool IsFile(const std::string& name);
73 
81  static std::string GetFileModifcationTime(const std::string& name);
82 
89  bool CreateDirectory(const std::string& dirname) const;
90 
96  void SetCurrentDirectory(const std::string& dirname);
97 
103  std::string GetCurrentDirectory() const;
104 
110  std::string GetCurrentParentDirectory() const;
111 
117  bool ReadCurrentDirectory();
118 
124  void GetFileList(std::vector< std::string >& aFileList) const;
125 
131  void GetSubDirectoryList(std::vector< std::string >& aSubDirList) const;
132 
139  void GetFilesMatchingExtention(std::vector< std::string >& aFileList, const std::string& anExt) const;
140 
147  void GetFilesMatchingExtention(std::vector< std::string >& aFileList, const char* anExt) const;
148 
155  void GetFilesMatchingPrefix(std::vector< std::string >& aFileList, const std::string& aPrefix) const;
156 
163  void GetFilesMatchingPrefix(std::vector< std::string >& aFileList, const char* aPrefix) const;
164 
171  void GetSubDirectoriesMatchingExtention(std::vector< std::string >& aDirList, const std::string& anExt) const;
172  void GetSubDirectoriesMatchingExtention(std::vector< std::string >& aDirList, const char* anExt) const;
173 
174  //utility functions for old mk4 format files
175 
179  void GetRootFile(const std::vector< std::string >& files, std::string& root_file) const;
180 
181 
185  void GetCorelFiles(const std::vector< std::string >& files, std::vector< std::string >& corel_files) const;
186 
190  void GetStationFiles(const std::vector< std::string >& files, std::vector< std::string >& station_files) const;
191 
192 
196  void GetFringeFiles(const std::vector< std::string >& files, std::vector< std::string >& fringe_files,
197  int& max_sequence_num) const;
198 
199 
203  void SplitCorelFileBasename(const std::string& corel_basename, std::string& st_pair, std::string& root_code) const;
204 
208  void SplitStationFileBasename(const std::string& station_basename, std::string& st, std::string& root_code) const;
209 
213  static std::string GetBasename(const std::string& filename);
214 
218  static std::string GetPrefix(const std::string& filename);
219 
223  static std::string StripExtensionFromBasename(const std::string& file_basename);
224 
225  private:
226  //number of chars in a string
227  std::size_t count_number_of_matches(const std::string& aString, char elem) const;
228 
229  std::string fCurrentDirectoryFullPath;
230  std::string fCurrentParentFullPath;
231 
232  bool fDirectoryIsSet;
233  bool fHaveReadDirectory;
234 
235  std::vector< std::string > fCurrentFileList;
236  std::vector< std::string > fCurrentSubDirectoryList;
237 
238  mutable MHO_Tokenizer fTokenizer;
239 };
240 
241 } // namespace hops
242 
243 #endif
Class MHO_DirectoryInterface.
Definition: MHO_DirectoryInterface.hh:24
static bool DoesDirectoryExist(const std::string &dirname)
Checks if a directory exists by attempting to open it.
Definition: MHO_DirectoryInterface.cc:65
MHO_DirectoryInterface()
Definition: MHO_DirectoryInterface.cc:18
void SetCurrentDirectory(const std::string &dirname)
Setter for current directory.
Definition: MHO_DirectoryInterface.cc:140
void SplitCorelFileBasename(const std::string &corel_basename, std::string &st_pair, std::string &root_code) const
splits out baseline and root code from basename of a legacy mk4 corel file
Definition: MHO_DirectoryInterface.cc:516
static std::string GetDirectoryFullPathPreserveSymlinks(const std::string &dirname)
Getter for directory full path preserve symlinks.
Definition: MHO_DirectoryInterface.cc:42
bool CreateDirectory(const std::string &dirname) const
Creates a directory with given name and owner permissions.
Definition: MHO_DirectoryInterface.cc:127
static std::string GetDirectoryFullPath(const std::string &dirname)
Getter for directory full path.
Definition: MHO_DirectoryInterface.cc:25
void SplitStationFileBasename(const std::string &station_basename, std::string &st, std::string &root_code) const
splits out station char and root code from basename of a legacy mk4 station file
Definition: MHO_DirectoryInterface.cc:532
static std::string GetPrefix(const std::string &filename)
gets the directory prefix from a full path to a file
Definition: MHO_DirectoryInterface.cc:260
void GetFilesMatchingExtention(std::vector< std::string > &aFileList, const std::string &anExt) const
Getter for files matching extention.
Definition: MHO_DirectoryInterface.cc:291
std::string GetCurrentDirectory() const
Getter for current directory.
Definition: MHO_DirectoryInterface.cc:365
void GetCorelFiles(const std::vector< std::string > &files, std::vector< std::string > &corel_files) const
extracts legacy mk4 corel files from list of files
Definition: MHO_DirectoryInterface.cc:419
static std::string StripExtensionFromBasename(const std::string &file_basename)
removes the extention (anything after last '.') from a file (base) name
Definition: MHO_DirectoryInterface.cc:275
void GetFileList(std::vector< std::string > &aFileList) const
Getter for file list.
Definition: MHO_DirectoryInterface.cc:149
static bool IsDirectory(const std::string &name)
Checks if a given path is a directory.
Definition: MHO_DirectoryInterface.cc:80
static bool IsFile(const std::string &name)
Checks if a given path is a regular file.
Definition: MHO_DirectoryInterface.cc:93
bool ReadCurrentDirectory()
Checks if current directory exists and reads its files and directories.
Definition: MHO_DirectoryInterface.cc:167
void GetFringeFiles(const std::vector< std::string > &files, std::vector< std::string > &fringe_files, int &max_sequence_num) const
extracts legacy mk4 fringe files from list of files
Definition: MHO_DirectoryInterface.cc:472
void GetSubDirectoriesMatchingExtention(std::vector< std::string > &aDirList, const std::string &anExt) const
Getter for sub directories matching extention.
Definition: MHO_DirectoryInterface.cc:338
std::string GetCurrentParentDirectory() const
Getter for current parent directory.
Definition: MHO_DirectoryInterface.cc:370
static std::string GetFileModifcationTime(const std::string &name)
Getter for file modifcation time.
Definition: MHO_DirectoryInterface.cc:107
void GetStationFiles(const std::vector< std::string > &files, std::vector< std::string > &station_files) const
extracts legacy mk4 station files from list of files
Definition: MHO_DirectoryInterface.cc:444
void GetSubDirectoryList(std::vector< std::string > &aSubDirList) const
Getter for sub directory list.
Definition: MHO_DirectoryInterface.cc:158
virtual ~MHO_DirectoryInterface()
Definition: MHO_DirectoryInterface.cc:23
void GetRootFile(const std::vector< std::string > &files, std::string &root_file) const
extracts legacy mk4 root file from list of files
Definition: MHO_DirectoryInterface.cc:375
static std::string GetBasename(const std::string &filename)
gets the file name from a path to a file
Definition: MHO_DirectoryInterface.cc:245
void GetFilesMatchingPrefix(std::vector< std::string > &aFileList, const std::string &aPrefix) const
Getter for files matching prefix.
Definition: MHO_DirectoryInterface.cc:317
Class MHO_Tokenizer.
Definition: MHO_Tokenizer.hh:24
constexpr const char * file_basename(const char *str)
Returns the base name (file name without path) from a given string.
Definition: MHO_SelfName.hh:54
Definition: MHO_ChannelLabeler.hh:17