Salome HOME
Typo fixes http://www.salome-platform.org/forum/forum_10/433845793
[modules/smesh.git] / src / Tools / padder / meshjob / impl / MeshJobManager_i.cxx
index accf0ccb704294f8f330447acef990e3ca8cff8e..9f951022550af9bbb8ccde20c22220fdde98d656 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2011-2015  EDF R&D
+// Copyright (C) 2011-2016  EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -129,6 +129,7 @@ MeshJobManager_i::~MeshJobManager_i() {
 #include <direct.h>    // to get _mkdir
 #else
 #include <unistd.h>    // to get basename
+#include <libgen.h>    // to get basename - as per posix
 #include <sys/stat.h>  // to get mkdir
 #include <sys/types.h> // to get mkdir options
 #endif
@@ -166,8 +167,9 @@ static std::string REMOTE_WORKDIR("/tmp/spadder.remote.workdir."+USER);
  * <steelBarMeshFile_N>   <steelBarGroupName_N>
  * <outputMedFile>
  */
-const char * MeshJobManager_i::_writeDataFile(std::vector<MESHJOB::MeshJobParameter> listConcreteMesh,
-                                              std::vector<MESHJOB::MeshJobParameter> listSteelBarMesh) {
+const char * MeshJobManager_i::_writeDataFile(std::vector<MESHJOB::MeshJobFile> listConcreteMesh,
+                                              std::vector<MESHJOB::MeshJobFile> listSteelBarMesh,
+                                              const MESHJOB::MeshJobParameterList & meshJobParameterList) {
 #ifdef WIN32
   _mkdir(LOCAL_INPUTDIR.c_str());
 #else
@@ -211,15 +213,23 @@ const char * MeshJobManager_i::_writeDataFile(std::vector<MESHJOB::MeshJobParame
     dataFile << line.c_str() << std::endl;
   }
   
-  // Finally, we conclude with the name of the output file
+  // We conclude the list of files with the name of the output file
   line = OUTPUTFILE;
   dataFile << line.c_str() << std::endl;
+
+  // We put the numerical parameters at the end of the data file
+  for(CORBA::ULong i=0; i<meshJobParameterList.length(); i++) {
+    MESHJOB::MeshJobParameter param = meshJobParameterList[i];
+    line = std::string(param.name) + " " + std::string(param.value);
+    dataFile << line.c_str() << std::endl;
+  }
+
   dataFile.close();
   return dataFilename->c_str();  
 }
 
 /*!
- * This function creates a shell script that runs padder whith the
+ * This function creates a shell script that runs padder with the
  * specified data file, and returns the path of the created script
  * file. The config id is used to retrieve the path to the binary file
  * and other required files.
@@ -242,7 +252,7 @@ const char* MeshJobManager_i::_writeScriptFile(const char * dataFileName, const
         _splitpath( dataFileName, NULL, NULL, fname, NULL );
         const char* bname = &fname[0];
 #else
-        const char* bname = basename(dataFileName);
+        const char* bname = basename(const_cast<char *>(dataFileName));
 #endif
 
 
@@ -280,17 +290,18 @@ bool MeshJobManager_i::configure(const char *configId,
 long MeshJobManager_i::JOBID_UNDEFINED = -1;
 
 /*! Initialize a smesh computation job and return the job identifier */
-CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & meshJobParameterList,
+CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobFileList & meshJobFileList,
+                                         const MESHJOB::MeshJobParameterList & meshJobParameterList,
                                          const char * configId)
 {
   beginService("MeshJobManager_i::initialize");
   //
   // We first analyse the CORBA sequence to store data in C++ vectors
   //
-  std::vector<MESHJOB::MeshJobParameter> listConcreteMesh;
-  std::vector<MESHJOB::MeshJobParameter> listSteelBarMesh;
-  for(CORBA::ULong i=0; i<meshJobParameterList.length(); i++) {
-    MESHJOB::MeshJobParameter currentMesh = meshJobParameterList[i];
+  std::vector<MESHJOB::MeshJobFile> listConcreteMesh;
+  std::vector<MESHJOB::MeshJobFile> listSteelBarMesh;
+  for(CORBA::ULong i=0; i<meshJobFileList.length(); i++) {
+    MESHJOB::MeshJobFile currentMesh = meshJobFileList[i];
     switch ( currentMesh.file_type ) {
     case MESHJOB::MED_CONCRETE:
       listConcreteMesh.push_back(currentMesh);
@@ -339,7 +350,7 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
   // data is a text file containing the list of file names and group
   // names.
   //
-  const char * dataFilename = this->_writeDataFile(listConcreteMesh, listSteelBarMesh);
+  const char * dataFilename = this->_writeDataFile(listConcreteMesh, listSteelBarMesh, meshJobParameterList);
   LOG("dataFilename = " << dataFilename);
   const char * scriptFilename = this->_writeScriptFile(dataFilename, configId);
   LOG("scriptFilename = " << scriptFilename);
@@ -360,7 +371,7 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
   // Specification of the working spaces:
   //
   // - local_directory: can be used to specify where to find the input
-  //   files on the local resource. It's optionnal if you specify the
+  //   files on the local resource. It's optional if you specify the
   //   absolute path name of input files.
   //
   // - result_directory: must be used to specify where to download the
@@ -407,7 +418,7 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
     }
   }
 
-  // Then, we have to specify the existance of an output filename. The
+  // Then, we have to specify the existence of an output filename. The
   // path is supposed to be a path on the remote resource, i.e. where
   // the job is executed.
   jobParameters->out_files.length(1);
@@ -461,14 +472,14 @@ CORBA::Long MeshJobManager_i::initialize(const MESHJOB::MeshJobParameterList & m
   // account not only the data that could be loaded by the batch
   // process but also the linked dynamic library.
   //
-  // A possible problem, for exemple in the case where you use the ssh
+  // A possible problem, for example in the case where you use the ssh
   // emulation of a batch system, is to get an error message as below
   // when libBatch try to run the ssh command:
   //
   // ## /usr/bin/ssh: error while loading shared libraries: libcrypto.so.0.9.8: failed
   // ## to map segment from shared object: Cannot allocate memory
   //
-  // In this exemple, the mem_mb was set to 1MB, value that is not
+  // In this example, the mem_mb was set to 1MB, value that is not
   // sufficient to load the dynamic libraries linked to the ssh
   // executable (libcrypto.so in the error message).
   //