예제 #1
0
        public void PrepareForExecution()
        {
            FailedExperimentalUnits = new List <ExperimentalUnit>();
            // tasks, inputs and outputs
            foreach (ExperimentalUnit experiment in ExperimentalUnits)
            {
                HerdTask task = new HerdTask();
                // We are assuming the same exe file is used in all the experiments!!!
                // IMPORTANT

                //Because the experiment file might well be outside the RLSimion folder structure
                //we need make all paths to experiment files relative and let the herd agent
                //know that they must be renamed

                task.Name                = experiment.Name;
                task.Exe                 = experiment.SelectedVersion.ExeFile;
                task.Arguments           = experiment.RelativeExperimentFileName + " -pipe=" + experiment.Name;
                task.Pipe                = experiment.Name;
                task.AuthenticationToken = "";// HerdAgent.AuthenticationCode; //TODO: Add Settings?

                Tasks.Add(task);

                //////App Version requirements
                //Exe file
                AddInputFile(task.Exe);

                //Rename rules
                AddRenameRules(experiment.SelectedVersion.Requirements.RenameRules);

                //Input files
                AddInputFiles(experiment.SelectedVersion.Requirements.InputFiles);
                AddInputFile(experiment.ExperimentFileName);
                //No output files come from the app version requirements in principle

                //////Run-time requirements
                //Input files
                AddInputFiles(experiment.RunTimeReqs.InputFiles);
                AddOutputFiles(experiment.RunTimeReqs.OutputFiles);


                /////Fix relative paths outside RLSimion's folder structure
                //we add rename rules:
                //  -for the experiment file itself
                if (experiment.ExperimentFileName != experiment.RelativeExperimentFileName && !RenameRules.Keys.Contains(experiment.ExperimentFileName))
                {
                    RenameRules.Add(experiment.ExperimentFileName, experiment.RelativeExperimentFileName);
                }
                //  -for the output files
                foreach (string outputFile in OutputFiles)
                {
                    string renamedFile = Folders.experimentRelativeDir + "/"
                                         + Herd.Utils.RemoveDirectories(outputFile, 2);
                    if (outputFile != renamedFile && !RenameRules.Keys.Contains(outputFile))
                    {
                        RenameRules.Add(outputFile, renamedFile);
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 数据库字段重新命名
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public string CleanName(string name)
        {
            string rename;

            if (RenameRules.TryGetValue(name, out rename))
            {
                return(rename);
            }

            if (CleanExpressions.Count == 0)
            {
                return(name);
            }

            foreach (var regex in CleanExpressions.Where(r => !string.IsNullOrEmpty(r)))
            {
                if (Regex.IsMatch(name, regex))
                {
                    return(Regex.Replace(name, regex, ""));
                }
            }

            return(name);
        }