public JobExecutionConfiguration(Node trecNode) throws KettleException { this(); executingLocally = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "exec_local")); executingRemotely = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "exec_remote")); Node remoteHostNode = XMLHandler.getSubNode(trecNode, SlaveServer.XML_TAG); if (remoteHostNode != null) { remoteServer = new SlaveServer(remoteHostNode); } passingExport = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "pass_export")); expandingRemoteJob = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "expand_remote_job")); // Read the variables... // Node varsNode = XMLHandler.getSubNode(trecNode, "variables"); int nrVariables = XMLHandler.countNodes(varsNode, "variable"); for (int i = 0; i < nrVariables; i++) { Node argNode = XMLHandler.getSubNodeByNr(varsNode, "variable", i); String name = XMLHandler.getTagValue(argNode, "name"); String value = XMLHandler.getTagValue(argNode, "value"); if (!Utils.isEmpty(name) && !Utils.isEmpty(value)) { variables.put(name, value); } } // Read the arguments... // Node argsNode = XMLHandler.getSubNode(trecNode, "arguments"); int nrArguments = XMLHandler.countNodes(argsNode, "argument"); for (int i = 0; i < nrArguments; i++) { Node argNode = XMLHandler.getSubNodeByNr(argsNode, "argument", i); String name = XMLHandler.getTagValue(argNode, "name"); String value = XMLHandler.getTagValue(argNode, "value"); if (!Utils.isEmpty(name) && !Utils.isEmpty(value)) { arguments.put(name, value); } } // Read the parameters... // Node parmsNode = XMLHandler.getSubNode(trecNode, "parameters"); int nrParams = XMLHandler.countNodes(parmsNode, "parameter"); for (int i = 0; i < nrParams; i++) { Node parmNode = XMLHandler.getSubNodeByNr(parmsNode, "parameter", i); String name = XMLHandler.getTagValue(parmNode, "name"); String value = XMLHandler.getTagValue(parmNode, "value"); if (!Utils.isEmpty(name)) { params.put(name, value); } } replayDate = XMLHandler.stringToDate(XMLHandler.getTagValue(trecNode, "replay_date")); safeModeEnabled = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "safe_mode")); logLevel = LogLevel.getLogLevelForCode(XMLHandler.getTagValue(trecNode, "log_level")); clearingLog = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "clear_log")); startCopyName = XMLHandler.getTagValue(trecNode, "start_copy_name"); startCopyNr = Const.toInt(XMLHandler.getTagValue(trecNode, "start_copy_nr"), 0); gatheringMetrics = "Y".equalsIgnoreCase(XMLHandler.getTagValue(trecNode, "gather_metrics")); String sPassedBatchId = XMLHandler.getTagValue(trecNode, "passedBatchId"); if (!StringUtils.isEmpty(sPassedBatchId)) { passedBatchId = Long.parseLong(sPassedBatchId); } Node resultNode = XMLHandler.getSubNode(trecNode, Result.XML_TAG); if (resultNode != null) { try { previousResult = new Result(resultNode); } catch (KettleException e) { throw new KettleException("Unable to hydrate previous result", e); } } // Try to get a handle to the repository from here... // Node repNode = XMLHandler.getSubNode(trecNode, "repository"); if (repNode != null) { String repositoryName = XMLHandler.getTagValue(repNode, "name"); String username = XMLHandler.getTagValue(repNode, "login"); String password = Encr.decryptPassword(XMLHandler.getTagValue(repNode, "password")); connectRepository(repositoryName, username, password); } }