00001 #ifndef ExecutionSpecs_HPP 00002 #define ExecutionSpecs_HPP 00003 00004 #include <string> 00005 #include <vector> 00006 00007 #include "utils/c++/StringTokenizer.hpp" 00008 00009 00010 using namespace std; 00011 00018 class ExecutionSpecs{ 00019 00020 private: 00021 00022 string requestingAsctIor_; 00023 string requestId_; 00024 string grmIor_; 00025 string deniedExecution_; 00026 string appId_; 00029 string appArgs_; 00030 string appConstraints_; 00031 string appPreferences_; 00032 vector<string> inputFiles_; 00033 vector<string> outputFiles_; 00036 public: 00037 00038 00039 //Named parameter idiom--------------------------------------------------- 00040 00041 ExecutionSpecs & requestingAsctIor(const string & aRequestingAsctIor){ 00042 requestingAsctIor_= aRequestingAsctIor; 00043 return (*this); 00044 } 00045 00046 ExecutionSpecs & requestId(const string & aRequestId){ 00047 requestId_= aRequestId; 00048 return (*this); 00049 } 00050 00051 ExecutionSpecs & grmIor(const string & aGrmIor){ 00052 grmIor_= aGrmIor; 00053 return (*this); 00054 } 00055 00056 ExecutionSpecs & deniedExecution(const string & aDeniedExecution){ 00057 deniedExecution_= aDeniedExecution; 00058 return (*this); 00059 } 00060 00061 ExecutionSpecs & appId(const string & aAppId){ 00062 appId_= aAppId; 00063 return (*this); 00064 } 00065 00066 ExecutionSpecs & appArgs(const string & aAppArgs){ 00067 appArgs_= aAppArgs; 00068 return (*this); 00069 } 00070 00071 ExecutionSpecs & appConstraints(const string & aAppConstraints){ 00072 appConstraints_= aAppConstraints; 00073 return (*this); 00074 } 00075 00076 ExecutionSpecs & appPreferences(const string & aAppPreferences){ 00077 appPreferences_= aAppPreferences; 00078 return (*this); 00079 } 00080 00081 //This method assumes that filenames are separated by whitespace. 00082 ExecutionSpecs & inputFiles(const string & aInputFiles){ 00083 StringTokenizer st(aInputFiles); 00084 while(st.hasMoreTokens()) 00085 inputFiles_.push_back(st.nextToken()); 00086 return (*this); 00087 } 00088 00089 ExecutionSpecs & inputFiles(vector<string> aInputFiles){ 00090 inputFiles_ = aInputFiles; 00091 return (*this); 00092 } 00093 00094 ExecutionSpecs & outputFiles(vector<string> aOutputFiles){ 00095 outputFiles_ = aOutputFiles; 00096 return (*this); 00097 } 00098 00099 00100 //getters------------------------------------------------------------- 00101 const string & requestingAsctIor() const{return requestingAsctIor_;} 00102 const string & requestId() const{return requestId_;} 00103 const string & grmIor() const{return grmIor_;} 00104 const string & deniedExecution() const{return deniedExecution_;} 00105 const string & appId() const{return appId_;} 00106 const string & appArgs() const{return appArgs_;} 00107 const string & appConstraints() const{return appConstraints_;} 00108 const string & appPreferences() const{return appPreferences_;} 00109 const vector<string> & inputFiles() const{return inputFiles_;} 00110 const vector<string> & outputFiles() const{return outputFiles_;} 00111 00112 //Other--------------------------------------------------------------- 00113 void addRequestFile(const string & filename){ inputFiles_.push_back(filename); } 00114 void addReturnFile(const string & filename){ outputFiles_.push_back(filename); } 00115 00116 }; 00117 00118 00119 #endif//ExecutionSpecs_HPP 00120