Public Member Functions | Protected Attributes

Dedupe::FileSearch::SearchFiles Class Reference

#include <searchfiles.h>

Inheritance diagram for Dedupe::FileSearch::SearchFiles:
Dedupe::FileSearch::FileBrowser

Public Member Functions

virtual Dedupe::FileStream const & GetFiles () const
Dedupe::FileStream const & GetNotUsableFiles () const
unsigned long const & GetDirectoryCounter () const
unsigned long const & GetFileCounter () const
bool Search (Dedupe::FileInfo &FileObject)
bool SearchRecursive (Dedupe::FileInfo &FileObject)

Protected Attributes

Dedupe::FileStream AllFiles
Dedupe::FileStream NotUsableFiles
Dedupe::FileStream Directories
unsigned long DirectoryCounter
unsigned long FileCounter

Detailed Description

SearchBase defines a class for all searching operations

Definition at line 24 of file searchfiles.h.


Member Function Documentation

unsigned long const& Dedupe::FileSearch::SearchFiles::GetDirectoryCounter (  )  const [inline]

Get the number of all founded directorys ( Not usable ones will not be counted! )

Returns:
a unsigned long

Definition at line 57 of file searchfiles.h.

      {
        return DirectoryCounter;
      }

unsigned long const& Dedupe::FileSearch::SearchFiles::GetFileCounter (  )  const [inline]

Get the number of all founded files ( Not usable ones will not be counted! )

Returns:
a unsigned long

Definition at line 67 of file searchfiles.h.

      {
        return FileCounter;
      }

virtual Dedupe::FileStream const& Dedupe::FileSearch::SearchFiles::GetFiles (  )  const [inline, virtual]

This function is used to get the result of the Search

Returns:
a Dedupe::FileStream with all founded files as FileInfo Objects inside

Definition at line 37 of file searchfiles.h.

      {
        return AllFiles;
      }

Dedupe::FileStream const& Dedupe::FileSearch::SearchFiles::GetNotUsableFiles (  )  const [inline]

All files that could not be open or used in the module staying here

Returns:
a Dedupe::FileStream with all trashfiles inside

Definition at line 47 of file searchfiles.h.

      {
        return NotUsableFiles;
      }

bool SearchFiles::Search ( Dedupe::FileInfo FileObject  ) 

Searchs for all files behind the given directory. The given FileInfo must be a directory. Get the founded files with a call of GetFiles()

Definition at line 18 of file searchfiles.cpp.

References Dedupe::FileInfo::GetPath(), Dedupe::FileInfo::GetStatus(), and Dedupe::FileInfo::GetType().

Referenced by SearchRecursive().

{
  if( FileObject.GetStatus() == Dedupe::FileInfo::IgnoreFile ) return false;
  if( FileObject.GetType() != Dedupe::FileInfo::TDirectory ) return false;


  Dedupe::FileInfo *currentEntry;

  //Set up a boost error_code to use a iterator without exceptions
  boost::system::error_code DirError;

  //TODO manage DirErrors, or instead make sure FileInfo filters before

  //run actual directory
  for( boost::filesystem::directory_iterator
          entry( FileObject.GetPath(), DirError );
          entry != boost::filesystem::directory_iterator(); entry++ )
  {




    currentEntry = new Dedupe::FileInfo( *entry );

    //Sort all entrys to right vector
    if( currentEntry->GetType() == Dedupe::FileInfo::TFile )
    {
      AllFiles.push_back( *currentEntry );
      FileCounter++;
    }
    else if( currentEntry->GetType() == Dedupe::FileInfo::TDirectory )
    {
      Directories.push_back( *currentEntry );
      DirectoryCounter++;
    }
    else
    {
      NotUsableFiles.push_back( *currentEntry );
    }
    delete( currentEntry );

  }
  return true;
}

bool SearchFiles::SearchRecursive ( Dedupe::FileInfo FileObject  ) 

Searchs for all files and directories behind the given directory. The given FileInfo must be a directory. Get the founded files with a call of GetFiles()

Definition at line 65 of file searchfiles.cpp.

References Dedupe::FileInfo::GetStatus(), and Search().

{
  if( FileObject.GetStatus() == Dedupe::FileInfo::IgnoreFile )
  {
    return false;
  }

  if( !Search( FileObject ) ) return false;

  Dedupe::FileInfo *Info;
  do
  {
    if( Directories.size() == 0 ) continue;
    Info = new Dedupe::FileInfo( Directories.back() );
    Directories.pop_back();
    Search( *Info );

    if( Directories.size() == 0 ) break;

  }while( Directories.size() != 0 );

 return true;
}


The documentation for this class was generated from the following files: