Revert "Remove mysql and oracle resources for anna-ericsson project"
[anna.git] / example / dbos / workdir / filesystem / Abstract.cpp
diff --git a/example/dbos/workdir/filesystem/Abstract.cpp b/example/dbos/workdir/filesystem/Abstract.cpp
new file mode 100644 (file)
index 0000000..f304470
--- /dev/null
@@ -0,0 +1,52 @@
+// ANNA - Anna is Not Nothingness Anymore                                                         //
+//                                                                                                //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
+//                                                                                                //
+// See project site at http://redmine.teslayout.com/projects/anna-suite                           //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
+
+
+#include "Abstract.hpp"
+
+using namespace std;
+using namespace anna;
+using namespace workdir;
+
+filesystem::Abstract::Abstract (const Abstract::ClassType::_v classType, const std::string& name) :
+   a_classType (classType),
+   a_name (name), a_parent (NULL) 
+{
+   a_path = name;
+}
+
+filesystem::Abstract::Abstract (const Abstract::ClassType::_v classType, filesystem::Abstract* parent, const std::string& name) : 
+   a_classType (classType),
+   a_name (name), 
+   a_parent (parent) 
+{ 
+   a_parent->a_children.push_back (this);
+   a_path = calculePath (parent, name);
+}
+
+/*virtual*/
+filesystem::Abstract::~Abstract ()
+{
+   for (child_iterator ii = child_begin (), maxii = child_end (); ii != maxii; ii ++)
+      delete child (ii);
+   
+   a_children.clear ();
+}
+
+/* static */
+string filesystem::Abstract::calculePath (const filesystem::Abstract* parent, const std::string& shortPath) 
+   throw ()
+{
+   string result;
+   
+   if (parent!= NULL) {
+      result = parent->a_path;
+      result += '/';
+   }
+   
+   return result += shortPath;
+}