34 void TAlienJDL::SetExecutable(
const char *value,
const char *description)
37 SetValue(
"Executable", AddQuotes(value));
39 SetDescription(
"Executable", description);
45 void TAlienJDL::SetArguments(
const char *value,
const char *description)
48 SetValue(
"Arguments", AddQuotes(value));
50 SetDescription(
"Arguments", description);
56 void TAlienJDL::SetEMail(
const char *value,
const char *description)
59 SetValue(
"Email", AddQuotes(value));
61 SetDescription(
"Email", description);
67 void TAlienJDL::SetOutputDirectory(
const char *value,
const char *description)
70 SetValue (
"OutputDir", AddQuotes(value));
72 SetDescription(
"OutputDir", description);
78 void TAlienJDL::SetMergedOutputDirectory (
const char * value,
const char* description)
81 SetValue (
"MergeOutputDir", AddQuotes(value));
83 SetDescription(
"MergeOutputDir", description);
89 void TAlienJDL:: SetPrice(UInt_t price,
const char* description)
91 TString pricestring(Form(
"%d",price));
92 SetValue(
"Price", AddQuotes(pricestring.Data()));
95 SetDescription(
"Price", description);
101 void TAlienJDL:: SetTTL(UInt_t ttl,
const char *description)
105 SetValue(
"TTL", ttlstring.Data());
108 SetDescription(
"TTL", description);
114 void TAlienJDL::SetJobTag(
const char* value,
const char* description)
117 SetValue(
"JobTag", AddQuotes(value));
119 SetDescription(
"JobTag", description);
125 void TAlienJDL::SetInputDataListFormat(
const char* value,
const char* description)
128 SetValue(
"InputDataListFormat", AddQuotes(value));
130 SetDescription(
"InputDataListFormat", description);
136 void TAlienJDL::SetInputDataList(
const char* value,
const char* description)
139 SetValue(
"InputDataList", AddQuotes(value));
141 SetDescription(
"InputDataList", description);
148 void TAlienJDL::SetSplitMode(
const char *value, UInt_t maxnumberofinputfiles,
149 UInt_t maxinputfilesize,
const char *d1,
const char *d2,
152 if (value && !strcasecmp(value,
"SE")) {
154 SetSplitArguments(value,d1);
155 if (maxnumberofinputfiles) {
156 SetSplitModeMaxNumOfFiles(maxnumberofinputfiles,d2);
158 if (maxinputfilesize) {
159 SetSplitModeMaxInputFileSize(maxinputfilesize,d3);
163 SetSplitArguments(value,d1);
170 void TAlienJDL::SetSplitModeMaxNumOfFiles(UInt_t maxnumberofinputfiles,
const char *description)
173 val += maxnumberofinputfiles;
174 SetValue (
"SplitMaxInputFileNumber", AddQuotes ( val.Data() ) );
177 SetDescription(
"SplitMaxInputFileNumber", description);
183 void TAlienJDL::SetSplitModeMaxInputFileSize(UInt_t maxinputfilesize,
const char *description)
186 val += maxinputfilesize;
187 SetValue (
"SplitMaxInputFileSize", AddQuotes ( val.Data() ) );
189 SetDescription(
"SplitMaxInputFileSize", description);
195 void TAlienJDL::SetSplitArguments(
const char *splitarguments,
const char *description)
198 SetValue(
"Split", AddQuotes(splitarguments));
200 SetDescription(
"Split", description);
206 void TAlienJDL::SetValidationCommand(
const char *value,
const char *description)
208 SetValue(
"Validationcommand", AddQuotes(value));
210 SetDescription(
"Validationcommand", description);
216 void TAlienJDL::SetMaxInitFailed(Int_t maxInitFailed,
const char *description)
219 str += maxInitFailed;
220 SetValue(
"MaxInitFailed", AddQuotes(str.Data()));
222 SetDescription(
"MaxInitFailed", description);
228 void TAlienJDL::SetOwnCommand(
const char *command,
const char *value,
const char *description)
230 if ((command) && (value))
231 SetValue(command, AddQuotes(value));
232 if ((command) && (description))
233 SetDescription(command, description);
239 void TAlienJDL::AddToRequirements(
const char *value,
const char *description)
242 AddToReqSet(
"Requirements", value);
244 AddToSetDescription(
"Requirements", description);
250 void TAlienJDL::AddToInputSandbox(
const char *value,
const char *description)
253 AddToSet(
"InputFile", value);
255 AddToSetDescription(
"InputFile", description);
261 void TAlienJDL::AddToOutputSandbox(
const char *value,
const char *description)
264 AddToSet(
"OutputFile", value);
266 AddToSetDescription(
"OutputFile", description);
272 void TAlienJDL::AddToInputData(
const char *value,
const char *description)
275 AddToSet(
"InputData", value);
277 AddToSetDescription(
"InputData", description);
283 void TAlienJDL::AddToInputDataCollection(
const char *value,
const char *description)
286 AddToSet(
"InputDataCollection", value);
288 AddToSetDescription(
"InputDataCollection", description);
294 void TAlienJDL::AddToPackages(
const char *name,
const char *version,
295 const char *type,
const char *description)
298 TString packagename = type;
302 packagename += version;
304 AddToSet(
"Packages", packagename.Data());
308 AddToSetDescription(
"Packages", description);
314 void TAlienJDL::AddToPackages(
const char *name,
const char *description)
316 AddToSet(
"Packages", name);
318 AddToSetDescription(
"Packages", description);
324 void TAlienJDL::AddToOutputArchive(
const char* value,
const char* description)
327 AddToSet(
"OutputArchive", value);
329 AddToSetDescription(
"OutputArchive", description);
336 void TAlienJDL::AddToReqSet(
const char *key,
const char *value)
338 const char *oldValue = GetValue(key);
341 newString = oldValue;
342 if (newString.IsNull()) {
345 newString.Remove(newString.Length()-1);
352 SetValue(key, newString);
358 void TAlienJDL::AddToMerge(
const char *filenameToMerge,
const char *jdlToSubmit,
359 const char *mergedFile,
const char *description )
361 TString mergename ( filenameToMerge );
363 mergename += jdlToSubmit;
365 mergename += mergedFile;
366 AddToSet (
"Merge", mergename.Data() );
368 AddToSetDescription(
"Merge", description);
374 void TAlienJDL::AddToMerge(
const char *merge,
const char *description)
376 AddToSet(
"Merge", merge);
378 AddToSetDescription(
"Merge", description);
384 Bool_t TAlienJDL::SubmitTest()
386 Info(
"SubmitTest",
"submitting test job /bin/date");
389 Error(
"SubmitTest",
"you must have a proper GRID environment initialized");
394 SetExecutable(
"/bin/date");
396 TGridJob* job = gGrid->Submit(Generate());
397 printf(
"Sending:\n%s\n",Generate().Data());
399 Error(
"SubmitTest",
"submitting failed");
409 void TAlienJDL::SetValueByCmd(TString cmd, TString value)
411 if ( !cmd.CompareTo (
"Executable" ) ) SetExecutable ( value.Data() );
412 else if ( !cmd.CompareTo (
"Arguments" ) ) SetArguments ( value.Data() );
413 else if ( !cmd.CompareTo (
"Email" ) ) SetEMail ( value.Data() );
414 else if ( !cmd.CompareTo (
"OutputDir" ) ) SetOutputDirectory ( value.Data() );
415 else if ( !cmd.CompareTo (
"Merge" ) ) AddToMerge ( value.Data() );
416 else if ( !cmd.CompareTo (
"MergeOutputDir" ) ) SetMergedOutputDirectory ( value.Data() );
417 else if ( !cmd.CompareTo (
"Price" ) ) SetPrice ( value.Atoi() );
418 else if ( !cmd.CompareTo (
"TTL" ) ) SetTTL ( value.Atoi() );
419 else if ( !cmd.CompareTo (
"JobTag" ) ) SetJobTag ( value.Data() );
420 else if ( !cmd.CompareTo (
"InputDataListFormat" ) ) SetInputDataListFormat ( value.Data() );
421 else if ( !cmd.CompareTo (
"InputDataList" ) ) SetInputDataList ( value.Data() );
422 else if ( !cmd.CompareTo (
"Split" ) ) SetSplitMode ( value.Data() );
423 else if ( !cmd.CompareTo (
"SplitMaxInputFileNumber" ) ) SetSplitModeMaxNumOfFiles ( value.Atoi() );
424 else if ( !cmd.CompareTo (
"SplitMaxInputFileSize" ) ) SetSplitModeMaxInputFileSize ( value.Atoi() );
425 else if ( !cmd.CompareTo (
"SplitArguments" ) ) SetSplitArguments ( value.Data() );
426 else if ( !cmd.CompareTo (
"Validationcommand" ) ) SetValidationCommand ( value.Data() );
427 else if ( !cmd.CompareTo (
"MaxInitFailed" ) ) SetMaxInitFailed ( value.Atoi() );
428 else if ( !cmd.CompareTo (
"InputSandbox" ) ) AddToInputSandbox ( value.Data() );
429 else if ( !cmd.CompareTo (
"OutputSandbox" ) ) AddToOutputSandbox ( value.Data() );
430 else if ( !cmd.CompareTo (
"InputData" ) ) AddToInputData ( value.Data() );
431 else if ( !cmd.CompareTo (
"InputDataCollection" ) ) AddToInputDataCollection ( value.Data() );
432 else if ( !cmd.CompareTo (
"Requirements" ) ) AddToRequirements ( value.Data() );
433 else if ( !cmd.CompareTo (
"InputFile" ) ) AddToInputSandbox ( value.Data() );
434 else if ( !cmd.CompareTo (
"OutputFile" ) ) AddToOutputSandbox ( value.Data() );
435 else if ( !cmd.CompareTo (
"Packages" ) ) AddToPackages ( value.Data() );
436 else if ( !cmd.CompareTo (
"OutputArchive" ) ) AddToOutputArchive ( value.Data() );
438 Error (
"SetValueByCmd()",
"Cmd Value not supported.." );
444 void TAlienJDL::Parse(
const char *filename)
447 file.open ( filename );
448 if ( !file.is_open() ) {
449 Error(
"Parse",
"error opening file %s", filename);
455 while ( file.good() ) {
456 file.getline ( line,1024 );
458 lineString.ReplaceAll (
" ",
"" );
459 if ( !lineString.IsNull() ) {
460 if (lineString.Index(
'#') == 0)
continue;
461 TObjArray *strCmdOrValue = lineString.Tokenize (
"=" );
462 TObjString*strObjCmd = ( TObjString* ) strCmdOrValue->At ( 0 );
463 TObjString*strObjValue = ( TObjString* ) strCmdOrValue->At ( 1 );
464 TString cmdString ( strObjCmd->GetString() );
465 TString valueString ( strObjValue->GetString() );
466 cmdString.ReplaceAll (
" ",
"" );
467 valueString.ReplaceAll (
" ",
"" );
468 valueString.ReplaceAll (
"\",\"",
"`" );
470 TObjArray *strValues = valueString.Tokenize (
"`" );
471 for ( Int_t i=0;i<strValues->GetEntries();i++ ) {
472 TObjString *strObjValue2 = ( TObjString* ) strValues->At ( i );
473 TString valueString2 ( strObjValue2->GetString() );
474 valueString2.ReplaceAll (
"\"",
"" );
475 valueString2.ReplaceAll (
"{",
"" );
476 valueString2.ReplaceAll (
"}",
"" );
477 valueString2.ReplaceAll (
";",
"" );
478 SetValueByCmd ( cmdString,valueString2 );
489 void TAlienJDL::Simulate()