public boolean generateActualJobs( Vector<ComputeJob> computeJobs, String backend, Hashtable<String, String> config) { int generationCount = -1; // read templates String templatesDir = config.get(JobGenerator.TEMPLATE_DIR); if (backend.equalsIgnoreCase(JobGenerator.GRID)) { readTemplatesGrid(templatesDir); gridHandler = new CommandLineImputationGridHandler(); gridHandler.setWorksheet(worksheet); generationCount = gridHandler.getNextJobID(); // adding dag dependencies if (workflowHasDependencies) { dagScript += "nodes = [\n"; } } else if (backend.equalsIgnoreCase(JobGenerator.CLUSTER)) readTemplatesCluster(templatesDir); for (ComputeJob computeJob : computeJobs) { System.out.println(">>> generation job: " + computeJob.getName()); // generate files for selected back-end if (backend.equalsIgnoreCase(JobGenerator.GRID)) generateActualJobGrid(computeJob, config, generationCount); else if (backend.equalsIgnoreCase(JobGenerator.CLUSTER)) generateActualJobCluster(computeJob, config); generationCount++; } // write cluster submit script if (backend.equalsIgnoreCase(JobGenerator.CLUSTER)) writeToFile( config.get(JobGenerator.OUTPUT_DIR) + System.getProperty("file.separator") + "submit_" + config.get(JobGenerator.GENERATION_ID) + ".sh", submitScript); else if (backend.equalsIgnoreCase(JobGenerator.GRID) && workflowHasDependencies) { // produce targetsListFile gridHandler.writeJobsLogsToFile(config); // finilize dag dagScript += "\n];"; // cut last coma and new line dagDependencies = dagDependencies.substring(0, dagDependencies.length() - 2); dagDependencies = "\ndependencies = {\n" + dagDependencies + "\n}"; dagScript += dagDependencies; // write dag file writeToFile( config.get(JobGenerator.OUTPUT_DIR) + System.getProperty("file.separator") + "dag_" + config.get(JobGenerator.GENERATION_ID) + ".jdl", dagScript); } return true; }