/// <returns> /// 0 - successfully /// -1 - error /// </returns> public int LoadScript(string strScriptFileName) { int iRet = 0; try { XmlDocument scriptDoc = new XmlDocument(); scriptDoc.Load(strScriptFileName); XmlElement rootElement = scriptDoc.DocumentElement; XmlNode newJobsNode = rootElement.SelectSingleNode("NewJobs"); XmlNode updateJobsNode = rootElement.SelectSingleNode("UpdateJobs"); // Load new jobs if (newJobsNode != null) { XmlNodeList newJobNodeList = newJobsNode.SelectNodes("NewJob"); foreach (XmlNode newJobNode in newJobNodeList) { GalaxyNewJob newJob = new GalaxyNewJob(); XmlNode autoReportStatusNode = newJobNode.SelectSingleNode("AutoReportStatus"); newJob.AutoReportStatus = bool.Parse(autoReportStatusNode.InnerText.Trim()); XmlNode allowLongIdleTimeNode = newJobNode.SelectSingleNode("AllowLongIdleTime"); newJob.AllowLongIdleTime = bool.Parse(allowLongIdleTimeNode.InnerText.Trim()); XmlNode jobShortNameNode = newJobNode.SelectSingleNode("JobShortName"); newJob.JobShortName = jobShortNameNode.InnerText.Trim(); XmlNode runExeNode = newJobNode.SelectSingleNode("RunExe"); newJob.RunExeName = runExeNode.InnerText.Trim(); XmlNode argumentsNode = newJobNode.SelectSingleNode("Arguments"); newJob.Arguments = argumentsNode.InnerText.Trim(); // Get pn instance name list XmlNode pnInstanceNamesNode = newJobNode.SelectSingleNode("PNInstanceNames"); XmlNodeList pnInstanceNameNodeList = pnInstanceNamesNode.SelectNodes("PNInstanceName"); foreach (XmlNode pnInstanceNameNode in pnInstanceNameNodeList) { newJob.PNInstanceNames.Add(pnInstanceNameNode.InnerText.Trim()); } // Get resource files XmlNode resourceFilesNode = newJobNode.SelectSingleNode("ResourceFiles"); XmlNodeList importNodeList = resourceFilesNode.SelectNodes("Import"); if (importNodeList != null) { foreach (XmlNode importNode in importNodeList) { string strDirName = importNode.Attributes["dir"].Value; List <string> fileList = GMFileInfo.GetFilesUnderDir(strDirName, true); foreach (string strSrcFileName in fileList) { string strDstFileName = strSrcFileName.Substring(strDirName.Length + 1); if (strDirName[strDirName.Length - 1] == '\\') { strDstFileName = strSrcFileName.Substring(strDirName.Length); } ResourceFilePair resourceFile = new ResourceFilePair(strSrcFileName, strDstFileName); newJob.ResourceFiles.Add(resourceFile); } } } XmlNodeList resourceFileNodeList = resourceFilesNode.SelectNodes("ResourceFile"); if (resourceFileNodeList != null) { foreach (XmlNode resourceFileNode in resourceFileNodeList) { XmlNode srcFileNode = resourceFileNode.SelectSingleNode("SrcFile"); string strSrcFileName = srcFileNode.InnerText.Trim(); XmlNode dstFileNode = resourceFileNode.SelectSingleNode("DstFile"); string strDstFileName = dstFileNode.InnerText.Trim(); ResourceFilePair resourceFile = new ResourceFilePair(strSrcFileName, strDstFileName); newJob.ResourceFiles.Add(resourceFile); } } m_newJobs.Add(newJob); } } // Load update jobs if (updateJobsNode != null) { XmlNodeList updateJobNodeList = updateJobsNode.SelectNodes("UpdateJob"); foreach (XmlNode updateJobNode in updateJobNodeList) { GalaxyUpdateJob updateJob = new GalaxyUpdateJob(); XmlNode jobNameNode = updateJobNode.SelectSingleNode("JobName"); updateJob.JobName = jobNameNode.InnerText.Trim(); // Get resource files XmlNode resourceFilesNode = updateJobNode.SelectSingleNode("ResourceFiles"); XmlNodeList importNodeList = resourceFilesNode.SelectNodes("Import"); foreach (XmlNode importNode in importNodeList) { string strDirName = importNode.Attributes["dir"].Value; List <string> fileList = GMFileInfo.GetFilesUnderDir(strDirName, true); foreach (string strSrcFileName in fileList) { string strDstFileName = strSrcFileName.Substring(strDirName.Length + 1); if (strDirName[strDirName.Length - 1] == '\\') { strDstFileName = strSrcFileName.Substring(strDirName.Length); } ResourceFilePair resourceFile = new ResourceFilePair(strSrcFileName, strDstFileName); updateJob.ResourceFiles.Add(resourceFile); } } XmlNodeList resourceFileNodeList = resourceFilesNode.SelectNodes("ResourceFile"); foreach (XmlNode resourceFileNode in resourceFileNodeList) { XmlNode srcFileNode = resourceFileNode.SelectSingleNode("SrcFile"); string strSrcFileName = srcFileNode.InnerText.Trim(); XmlNode dstFileNode = resourceFileNode.SelectSingleNode("DstFile"); string strDstFileName = dstFileNode.InnerText.Trim(); ResourceFilePair resourceFile = new ResourceFilePair(strSrcFileName, strDstFileName); updateJob.ResourceFiles.Add(resourceFile); } m_updateJobs.Add(updateJob); } } } catch (Exception) { iRet = -1; } return(iRet); }
/// <returns> /// 0 - successfully /// -1 - failed /// </returns> public int LoadFromFile(string strJobFileName) { int iRet = 0; try { XmlDocument jobDoc = new XmlDocument(); jobDoc.Load(strJobFileName); XmlElement root = jobDoc.DocumentElement; XmlNodeList jobNodeList = root.SelectNodes("GalaxyJob"); foreach (XmlNode jobNode in jobNodeList) { XmlNode jobNameNode = jobNode.SelectSingleNode("JobName"); string strJobName = jobNameNode.InnerText.Trim(); XmlNode jobInstanceNameNode = jobNode.SelectSingleNode("PNInstanceName"); string strPNInstanceName = jobInstanceNameNode.InnerText.Trim(); XmlNode jobIdNode = jobNode.SelectSingleNode("JobId"); Guid jobId = new Guid(jobIdNode.InnerText.Trim()); XmlNode jobStatusNode = jobNode.SelectSingleNode("JobStatus"); GalaxyJobStatus jobStatus = GalaxyJob.String2JobStatus(jobStatusNode.InnerText.Trim()); XmlNode exeNameNode = jobNode.SelectSingleNode("ExeFileName"); string strExeFileName = exeNameNode.InnerText.Trim(); XmlNode relPathNode = jobNode.SelectSingleNode("RelativePath"); string strRelativePath = relPathNode.InnerText.Trim(); XmlNode argsNode = jobNode.SelectSingleNode("Arguments"); string strArgs = argsNode.InnerText.Trim(); XmlNode dataRootDirNode = jobNode.SelectSingleNode("DataRootDir"); string strProjectDataRootDir = dataRootDirNode.InnerText.Trim(); XmlNode userNameNode = jobNode.SelectSingleNode("UserName"); string strUserName = userNameNode.InnerText.Trim(); XmlNode autoReportStatusNode = jobNode.SelectSingleNode("AutoReportStatus"); bool fAutoReportStatus = bool.Parse(autoReportStatusNode.InnerText.Trim()); XmlNode allowLongIdleTimeNode = jobNode.SelectSingleNode("AllowLongIdleTime"); bool fAllowLongIdleTime = bool.Parse(allowLongIdleTimeNode.InnerText.Trim()); XmlNode outputDirNode = jobNode.SelectSingleNode("OutputBaseDir"); string strOutputBaseDir = outputDirNode.InnerText.Trim(); // Get resource file list XmlNode resourceFilesNode = jobNode.SelectSingleNode("ResourceFiles"); XmlNodeList resourceFileNodeList = resourceFilesNode.SelectNodes("ResourceFile"); List <ResourceFilePair> resourceFileList = new List <ResourceFilePair>(); foreach (XmlNode resourceFileNode in resourceFileNodeList) { XmlNode srcFileNode = resourceFileNode.SelectSingleNode("SrcFileName"); XmlNode dstRelFileNode = resourceFileNode.SelectSingleNode("DstRelativeFileName"); ResourceFilePair resourceFile = new ResourceFilePair(srcFileNode.InnerText.Trim(), dstRelFileNode.InnerText.Trim()); resourceFileList.Add(resourceFile); } // Get dependent jobs XmlNode dependentJobsNode = jobNode.SelectSingleNode("DependentJobs"); XmlNodeList dependentJobNodeList = dependentJobsNode.SelectNodes("DependentJob"); List <string> dependentJobs = new List <string>(); foreach (XmlNode dependentJobNode in dependentJobNodeList) { string strDependentJobName = dependentJobNode.InnerText.Trim(); dependentJobs.Add(strDependentJobName); } if (m_jobDictRefByJobName.ContainsKey(strJobName)) { return(-1); } else { GalaxyJob job = new GalaxyJob(); job.AllowLongIdleTime = fAllowLongIdleTime; job.Arguments = strArgs; job.AutoReportStatus = fAutoReportStatus; job.DependentJobs = dependentJobs; job.ExeFileName = strExeFileName; job.JobId = jobId; job.JobStatus = jobStatus; job.OutputBaseDir = strOutputBaseDir; job.PNInstanceName = strPNInstanceName; job.RelativePath = strRelativePath; job.ResourceFileList = resourceFileList; job.JobName = strJobName; job.UserName = strUserName; job.ProjectDataRootDir = strProjectDataRootDir; AddJob(job); } } } catch (Exception) { iRet = -1; } return(iRet); }