Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }