X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMAppli.cpp;h=be0852a35a7ea5a13ee43e360cc85dcec9aa28e5;hb=327c33758d25e6ff1f90f9ab74ea219eaed934a9;hp=586c550dcf01e0e1263297853403956d31839671;hpb=2fb5dd9262993efaf56bfc731f4297fdb96bf63e;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMAppli.cpp b/lib/creaDevManagerLib/modelCDMAppli.cpp index 586c550..be0852a 100644 --- a/lib/creaDevManagerLib/modelCDMAppli.cpp +++ b/lib/creaDevManagerLib/modelCDMAppli.cpp @@ -121,12 +121,29 @@ const std::vector& modelCDMAppli::GetApplications() const } modelCDMApplication* modelCDMAppli::CreateApplication( - const std::string& name, + const std::string& namein, std::string*& result ) { + std::vector words; + CDMUtilities::splitter::split(words,namein," '/\\*\"%",CDMUtilities::splitter::no_empties); + std::string name; + for (int i = 0; i < (int)(words.size()); i++) + { + name += words[i]; + } + if (name == "") + { + result = new std::string("The given name is not valid: '/\\*\"% are forbidden."); + return NULL; + } //copy template application folder with new name +#ifdef _WIN32 + std::string copyCommand = "xcopy \"" + this->path + CDMUtilities::SLASH + "template_appli\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "\" /Y"; +#else std::string copyCommand = "cp -r \"" + this->path + CDMUtilities::SLASH + "template_appli\" \"" + this->path + CDMUtilities::SLASH + name + "\""; +#endif + if(system(copyCommand.c_str())) { result = new std::string("An error occurred while running '" + copyCommand + "'."); @@ -150,7 +167,12 @@ modelCDMApplication* modelCDMAppli::CreateApplication( in.close(); out.close(); //delete old file and rename new file +#ifdef _WIN32 + std::string renameCommand = "move /Y \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\""; +#else std::string renameCommand = "mv \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt.tmp\" \"" + this->path + CDMUtilities::SLASH + name + CDMUtilities::SLASH + "CMakeLists.txt\""; +#endif + if(system(renameCommand.c_str())) { result = new std::string("An error occurred while running '" + renameCommand + "'."); @@ -191,7 +213,7 @@ const bool modelCDMAppli::Refresh(std::string*& result) std::string applicationName = stdfileName; //check if application already exist bool found = false; - for (int i = 0; !found && i < this->applications.size(); i++) + for (int i = 0; !found && i < (int)(this->applications.size()); i++) { if (this->applications[i]->GetName() == applicationName) { @@ -214,7 +236,7 @@ const bool modelCDMAppli::Refresh(std::string*& result) { //check if folder already exist bool found = false; - for (int i = 0; !found && i < this->children.size(); i++) + for (int i = 0; !found && i < (int)(this->children.size()); i++) { if (this->children[i]->GetName() == stdfileName) { @@ -259,7 +281,7 @@ const bool modelCDMAppli::Refresh(std::string*& result) else { bool found = false; - for (int i = 0; !found && i < this->children.size(); i++) + for (int i = 0; !found && i < (int)(this->children.size()); i++) { if (this->children[i]->GetName() == stdfileName) { @@ -281,7 +303,7 @@ const bool modelCDMAppli::Refresh(std::string*& result) } } - for (int i = 0; i < checkedApplications.size(); i++) + for (int i = 0; i < (int)(checkedApplications.size()); i++) { if(!checkedApplications[i]) { @@ -290,7 +312,7 @@ const bool modelCDMAppli::Refresh(std::string*& result) i--; } } - for (int i = 0; i < checked.size(); i++) + for (int i = 0; i < (int)(checked.size()); i++) { if(!checked[i]) { @@ -311,7 +333,7 @@ void modelCDMAppli::CheckStructure(std::map& properties) if(this->CMakeLists != NULL) { //set properties parameters based on model - for (int i = 0; i < this->applications.size(); i++) + for (int i = 0; i < (int)(this->applications.size()); i++) properties["appli add " + this->applications[i]->GetName()] = false; //open cmakelists @@ -333,7 +355,7 @@ void modelCDMAppli::CheckStructure(std::map& properties) { word = words[0]; CDMUtilities::splitter::split(words, word, " ", CDMUtilities::splitter::empties_ok); - for (int i = 0; i < words.size(); i++) + for (int i = 0; i < (int)(words.size()); i++) { if(words[i].substr(0,2) == "//") break; @@ -371,7 +393,7 @@ void modelCDMAppli::CheckStructure(std::map& properties) } //check libraries' structure - for (int i = 0; i < this->applications.size(); i++) + for (int i = 0; i < (int)(this->applications.size()); i++) { properties["application " + this->applications[i]->GetName()] = true; this->applications[i]->CheckStructure(properties);