]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMMain.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / modelCDMMain.cpp
index e9df13ed38242c21fced54e9a490bdf032ea6ea5..25331dc7c1d1403dda1ee3cddbf04ad81a348438 100644 (file)
 #include <fstream>
 
 #include "CDMUtilities.h"
+#include "modelCDMProject.h"
 
 modelCDMMain::modelCDMMain()
 {
-  //TODO: implement method
+  this->project = NULL;
 }
 
 modelCDMMain::~modelCDMMain()
 {
-  //TODO: implement method
+  if(project != NULL)
+    {
+      delete this->project;
+      this->project = NULL;
+    }
 }
 
-const modelCDMProject* modelCDMMain::GetProject() const
+modelCDMProject* modelCDMMain::GetProject() const
 {
-  //TODO: implement method
   return this->project;
 }
 
@@ -71,8 +75,7 @@ bool modelCDMMain::CreateProject(
   std::string locationFixed = CDMUtilities::fixPath(location);
   std::cout << "Opening path: "<< locationFixed << std::endl;
 
-  //TODO: create Project given the source folder
-
+  //creates project in disk
 #if(_WIN32)
 
   std::string command("creaNewProject.bat ");
@@ -82,58 +85,58 @@ bool modelCDMMain::CreateProject(
   command  += "\"" + locationFixed + "\" \"" + name + "\"";
   command1 += "\"" + locationFixed +"\\"+name+"\\CMakeLists.txt.in\" " + "NameOfTheProject " + name + "> \"" + locationFixed + "\\" + name + "\\CMakeLists.txt\"";
   command2 += "\"" + locationFixed +"\\"+name+"\\CMakeLists.txt.in\"";
-  if ( ! system ( command.c_str() ) )
-    {
-      system ( command1.c_str() );
-      system ( command2.c_str() );
-
-      // Create a Package at the same time.   JPR
-      char *author = author.c_str();
-      std::string nomDirectory = locationFixed + "\\" + name;
-      std::string nomPackageDirectory = nomDirectory + "\\" + "bbtk_" + name + "_PKG";
-      std::string bbCreatePackage("bbCreatePackage ");
-      bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
-      system (bbCreatePackage.c_str());
-      std::string add;
-      add = "echo ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG) >> " + nomDirectory + "/CMakeLists.txt";
-      system(add.c_str());
-    }
-  else
+
+
+  if (system (command.c_str()))
     {
       result = new std::string("An error occured while running '" + command + "'.");
       return false;
     }
 
+  system ( command1.c_str() );
+  system ( command2.c_str() );
+
+  char *author = author.c_str();
+  std::string nomDirectory = locationFixed + "\\" + name;
+  std::string nomPackageDirectory = nomDirectory + "\\" + "bbtk_" + name + "_PKG";
+  std::string bbCreatePackage("bbCreatePackage ");
+  bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+  system (bbCreatePackage.c_str());
+  std::string add;
+  add = "echo ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG) >> " + nomDirectory + "/CMakeLists.txt";
+  system(add.c_str());
+
+  this->project = new modelCDMProject(nomDirectory);
+
 #else
   // ------ LINUX / MacOS
   std::string command("creaNewProject.sh ");
   command += "\"" + locationFixed + "\"" +" " + name;
-  std::cout << "executing " << command << std::endl;
-  if ( ! system ( command.c_str() ) )
-    {
-      std::string nomDirectory = locationFixed + "/" + name;
-      std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + name + "_PKG";
-
-      std::string bbCreatePackage("bbCreatePackage ");
-      bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
-      std::cout << "executing " << bbCreatePackage << std::endl;
-      system (bbCreatePackage.c_str());
-
-      std::string add;
-      add = "echo 'ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG)' >> " + nomDirectory + "/CMakeLists.txt";
-      //std::cout << add << std::endl;
-      std::cout << "executing " << add << std::endl;
-      system(add.c_str());
-    }
-  else
+  //std::cout << "executing " << command << std::endl;
+  if (system ( command.c_str() ) )
     {
       result = new std::string("An error occured while running '" + command + "'.");
       return false;
     }
 
-#endif
+  std::string nomDirectory = locationFixed + "/" + name;
+  std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + name + "_PKG";
+
+  std::string bbCreatePackage("bbCreatePackage ");
+  bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+  //std::cout << "executing " << bbCreatePackage << std::endl;
+  system (bbCreatePackage.c_str());
+
+  std::string add;
+  add = "echo 'ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG)' >> " + nomDirectory + "/CMakeLists.txt";
+
+  //std::cout << "executing " << add << std::endl;
+  system(add.c_str());
+
 
+  this->project = new modelCDMProject(nomDirectory);
 
+#endif
 
   return true;
 }
@@ -143,7 +146,7 @@ bool modelCDMMain::OpenProject(
     std::string*& result
 )
 {
-  std::cout << "Open selection path: "<< path << std::endl;
+  //std::cout << "Open selection path: "<< path << std::endl;
   //get fixed path
   std::string pathFixed = CDMUtilities::fixPath(path);
   std::cout << "Opening path: "<< pathFixed << std::endl;
@@ -172,7 +175,7 @@ bool modelCDMMain::OpenProject(
               readFile.ignore();
               getline(readFile, word, '\n');
               pathBuild = pathFixed;
-              pathFixed = word;
+              pathFixed = CDMUtilities::fixPath(word);
               isBinary = true;
             }
         }
@@ -197,12 +200,14 @@ bool modelCDMMain::OpenProject(
 
       while(!isSource && !readFile.eof())
         {
-          std::getline(readFile,word,'\n');
-          int pos = word.find("PROJECT");
-          if(pos != std::string::npos)
+          std::getline(readFile,word,'(');
+          std::vector<std::string> wordBits;
+          CDMUtilities::splitter::split(wordBits,word," (\n",CDMUtilities::splitter::no_empties);
+
+          if(wordBits[wordBits.size()-1] == "PROJECT")
             {
-              pathSource = pathFixed;
               isSource = true;
+              pathSource = pathFixed;
             }
         }
       readFile.close();
@@ -211,12 +216,16 @@ bool modelCDMMain::OpenProject(
   //if is source folder
   if(isSource)
     {
-      std::cout << "Project sources at: " << pathSource;
+      std::cout << "Project sources at: " << pathSource << std::endl;
       if(isBinary)
         {
-          std::cout << ", and built in: " << pathBuild;
+          std::cout << ", and built in: " << pathBuild << std::endl;
+          this->project = new modelCDMProject(pathSource, pathBuild);
+        }
+      else
+        {
+          this->project = new modelCDMProject(pathSource);
         }
-      std::cout << std::endl;
     }
   else
     {
@@ -224,7 +233,6 @@ bool modelCDMMain::OpenProject(
       return false;
     }
 
-  //TODO: create Project given the source folder
   return true;
 }