Wittyshare  0.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
WsTreeTraversal.cpp
Go to the documentation of this file.
1 
14 #include "WsTreeTraversal.h"
15 
17 {
18  m_root = node;
19 }
20 
22 {
23  /* If the root is a directory traverse otherwise it's a file and call traverse file */
24  if (m_root.get()->isDirectory())
25  return this->traverse(m_root);
26  else return this->traverseFile(m_root);
27 }
28 
30 {
31  if (n.get() == 0) {
32  LOG(ERROR) << "TreeTraversal::traverse() : Could not traverse : Node is NULL" << endl;
33  return ErrorCode::Failure;
34  }
35  /* Start to traverse the directory */
37  /* Traverse sub folders */
38  int r1 = traverseDirNodes(n.get()->getDirectories());
39  if (r1 == ErrorCode::Failure) return ErrorCode::Failure;
40  /* Traverse sub files */
41  int r2 = traverseFileNodes(n.get()->getFiles());
42  if (r2 == ErrorCode::Failure) return ErrorCode::Failure;
43  /* End traverse of the dir */
44  return endTraverseDir(n);
45  }
46  return ErrorCode::Success;
47 }
48 
49 int WsTreeTraversal::traverseDirNodes(vector<NodePtr> l)
50 {
51  /* Iterate on all the nodes and call traverse */
52  for (vector<NodePtr>::iterator it = l.begin(); it != l.end(); it++) {
53  int r = traverse(*it);
54  if (r == ErrorCode::Failure)
55  return ErrorCode::Failure;
56  }
57  return ErrorCode::Success;
58 }
59 
60 int WsTreeTraversal::traverseFileNodes(vector<NodePtr> l)
61 {
62  /* Iterate on all the nodes and call traverseFile */
63  /* A proper action to traverse file is implemented in the derived class */
64  for (vector<NodePtr>::iterator it = l.begin(); it != l.end(); it++) {
65  int r = traverseFile(*it);
66  if (r == ErrorCode::Failure)
67  return ErrorCode::Failure;
68  }
69  return ErrorCode::Success;
70 }
71 
boost::shared_ptr< WsAbstractNode > NodePtr
WsTreeTraversal(NodePtr root)
constructor
int traverseFileNodes(std::vector< NodePtr > l)
Traverse a file and calls WsTreeTraversal::traverseFile() method.
const int Failure
virtual int traverseFile(NodePtr n)=0
Called when traversing a fileNode.
Traverses the fileSystemTree.
#define LOG
Definition: WsLogger.h:22
int start()
start traversing the Tree.
int traverse(NodePtr n)
Traverses a Node. Calls the WsTreeTraversal::traverseDirNode() or WsTreeTraversal::traverseFileNode()...
virtual int endTraverseDir(NodePtr n)=0
Called when a directory has been completely traversed. ie all subnodes(recursively all sub nodes of s...
virtual int beginTraverseDir(NodePtr n)=0
Called when a directory is being traversed.
int traverseDirNodes(std::vector< NodePtr > l)
Traverses WsDirNodes recusively.
const int Success
#define ERROR
Definition: WsLogger.h:42