Ejemplo n.º 1
0
        private void ProcessData()
        {
            foreach (var execMethodDto in _queryData)
            {
                string parsedPath = null;
                try
                {
                    parsedPath = JobConversionHelper.ParsePath(execMethodDto.ConfigFile, execMethodDto.Category);
                    var content = File.ReadAllText($@"C:\Users\RoniAxelrad\Desktop\Woodforest\XMLs\{parsedPath}");
                    execMethodDto.ConfigContent = Regex.Replace(content, @"\t|\n|\r", "");
                }
                catch (FileNotFoundException)
                {
                    execMethodDto.ConfigContent = $"Config File Is Missing! {parsedPath}";
                }
                catch (DirectoryNotFoundException)
                {
                    execMethodDto.ConfigContent = $"Config Folder Is Missing! {parsedPath}";
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                ValidateData(execMethodDto);
            }
        }
Ejemplo n.º 2
0
        public override void Convert()
        {
            // ServiceModuleDictionary = CreateServiceModuleDto();
            PopulateJobConditionsDictionary();

            var convertedJobs = new Dictionary <string, List <MVPSI.JAMS.Job> >();

            foreach (var job in Source)
            {
                try
                {
                    Log.Logger.Information($"Converting {job.JobName}");

                    var newJob = GetInstance();

                    ConvertJobDetails(job, newJob);
                    ConvertJobConditions(job, newJob);
                    AddJobSteps(job, newJob);

                    if (JobConversionHelper.GenerateExceptions(newJob, convertedJobs, job.JobUID))
                    {
                        continue;
                    }

                    var jobCategoryName = JobConversionHelper.JobFolderName[job.JobUID]?.CategoryName;

                    if (convertedJobs.TryGetValue(jobCategoryName ?? "", out var jobForFolder))
                    {
                        jobForFolder.Add(newJob);
                    }
                    else
                    {
                        convertedJobs.Add(jobCategoryName ?? "", new List <MVPSI.JAMS.Job> {
                            newJob
                        });
                    }
                }
                catch (Exception ex)
                {
                    Log.Logger.Error(ex, ex.Message);
                    throw;
                }
            }

            SerializerHelper.Serialize(_connectionStoreDictionary.Values, "ConnectionStores");

            foreach (var convertedJob in convertedJobs)
            {
                JobConversionHelper.CreateDummyJobExportXml(convertedJob);

                JAMSXmlSerializer.WriteXml(convertedJob.Value,
                                           $@"{ConversionBaseHelper.XmlOutputLocation}\Jobs\{convertedJob.Key}\2_run_second-{convertedJob.Key}.xml");
            }
        }
Ejemplo n.º 3
0
        private void ConvertJobDetails(Data.Job sourceJob, MVPSI.JAMS.Job targetJob)
        {
            sourceJob.JobName = JobConversionHelper.FixJobName(sourceJob.JobName);

            targetJob.JobName     = sourceJob.JobName;
            targetJob.Description = sourceJob.Note;
            targetJob.MethodName  = "Sequence";

            // Set the job to be Disabled
            targetJob.Properties.SetValue("Enabled", false);
        }
Ejemplo n.º 4
0
        private void AddJobSteps(Data.Job sourceJob, MVPSI.JAMS.Job targetJob)
        {
            var sequenceTask = new SequenceTask();

            sequenceTask.Properties.SetValue("ParentTaskID", Guid.Empty);

            var archonSteps = Container.GetInstance <IJobStepRepository>().GetAllLive()
                              .Where(js => js.JobUID == sourceJob.JobUID)
                              .OrderBy(js => js.DisplayID)
                              .Select(js => new ArchonStepDto
            {
                ArchonStepName      = js.StepName,
                ArchonConfiguration = js.ConfigurationFile,
                ParentTaskID        = sequenceTask.ElementUid,
                DisplayTitle        = js.StepName,
                ExecutionModule     = Container.GetInstance <IExecutionModuleRepository>().GetAll()
                                      .FirstOrDefault(em => em.ModuleUID == js.ModuleUID)
            }).ToList();

            if (!archonSteps.Any())
            {
                return;
            }

            targetJob.SourceElements.Add(sequenceTask);

            //SelectAgent(archonSteps, targetJob);

            foreach (var archonStep in archonSteps)
            {
                if (!archonStep.ExecutionModule.ModuleObject.Equals("Archon.Modules.CommandEvent") &&
                    !archonStep.ExecutionModule.ModuleObject.Equals("Archon.Modules.SqlProcessEvent"))
                {
                    var task = new Element
                    {
                        ElementTypeName = "ArchonStep"
                    };
                    task.Properties.SetValue("ParentTaskID", archonStep.ParentTaskID);
                    task.Properties.SetValue("DisplayTitle", archonStep.DisplayTitle);
                    task.Properties.SetValue("ArchonStepName", archonStep.ArchonStepName);
                    task.Properties.SetValue("ArchonModuleName", archonStep.ExecutionModule.ModuleName);
                    task.Properties.SetValue("ArchonConfiguration", archonStep.ArchonConfiguration);
                    task.Properties.SetValue("ArchonModuleAssembly", ModuleAssemblyConverter.FromString(archonStep.ExecutionModule.ModuleAssembly));
                    task.Properties.SetValue("ArchonModuleObject", ModuleObjectConverter.FromString(archonStep.ExecutionModule.ModuleObject));
                    task.Properties.SetValue("ArchonCategoryName", CategoryConverter.FromGUID(sourceJob.Category));
                    targetJob.SourceElements.Add(task);
                }
                else
                {
                    string parsedPath = null;

                    try
                    {
                        parsedPath = JobConversionHelper.ParsePath(archonStep.ArchonConfiguration, sourceJob.Category);
                        var content     = File.ReadAllText($@"C:\Users\RoniAxelrad\Desktop\Woodforest\XMLs\{parsedPath}");
                        var xmlDocument = JobConversionHelper.ToXml(content);

                        if (archonStep.ExecutionModule.ModuleObject.Equals("Archon.Modules.CommandEvent"))
                        {
                            var task = new Element
                            {
                                ElementTypeName = "PowerShellScriptTask"
                            };
                            task.Properties.SetValue("ParentTaskID", archonStep.ParentTaskID);
                            task.Properties.SetValue("DisplayTitle", archonStep.DisplayTitle);

                            var command      = JobConversionHelper.ParseToCommand(xmlDocument);
                            var fixedCommand = JobConversionHelper.TranslateKeywords(command, sourceJob.Category.Value);
                            if (fixedCommand.Contains("YesterdayDate"))
                            {
                                var yesterdayParam = new Param("YesterdayDate")
                                {
                                    DataType = DataType.Date,
                                    Length   = 8,
                                };
                                yesterdayParam.Properties.SetValue("DefaultValue", "YESTERDAY");
                                targetJob.Parameters.Add(yesterdayParam);
                            }

                            task.Properties.SetValue("PSScript", fixedCommand);
                            targetJob.SourceElements.Add(task);
                        }

                        if (archonStep.ExecutionModule.ModuleObject.Equals("Archon.Modules.SqlProcessEvent"))
                        {
                            var elemList = xmlDocument.GetElementsByTagName("event");

                            foreach (XmlElement sqlActivity in elemList)
                            {
                                var task = new Element
                                {
                                    ElementTypeName = "SqlQueryTask"
                                };
                                task.Properties.SetValue("ParentTaskID", archonStep.ParentTaskID);
                                task.Properties.SetValue("DisplayTitle", archonStep.DisplayTitle);

                                var server   = JobConversionHelper.TranslateKeywords(sqlActivity.Attributes["server"].Value, sourceJob.Category.Value);
                                var database = JobConversionHelper.TranslateKeywords(sqlActivity.Attributes["database"].Value, sourceJob.Category.Value);

                                if (!_connectionStoreDictionary.TryGetValue(server, out var connectionStore))
                                {
                                    connectionStore = JobConversionHelper.CreateConnectionStore(sqlActivity, sourceJob.Category.Value);
                                    _connectionStoreDictionary.Add(connectionStore.AgentName, connectionStore);
                                }

                                var sqlCommand = JobConversionHelper.TranslateKeywords(
                                    GetInnerTexts(sqlActivity.GetElementsByTagName("executesql")),
                                    sourceJob.Category.Value
                                    );
                                task.Properties.SetValue("SqlQueryText", sqlCommand);
                                task.Properties.SetValue("DatabaseName", database);
                                task.Properties.SetValue("SqlAgent", new AgentReference(connectionStore));

                                targetJob.SourceElements.Add(task);
                            }
                        }

                        string GetInnerTexts(XmlNodeList nodeList)
                        {
                            var sb = new StringBuilder();

                            foreach (XmlNode node in nodeList)
                            {
                                sb.AppendLine($"{node.InnerText.Trim()};");
                            }

                            return(sb.ToString());
                        }
                    }
                    catch (FileNotFoundException)
                    {
                        Log.Logger.Error(
                            $"Config File Is Missing! {parsedPath} --> StepName: {archonStep.ArchonStepName}, Module: {archonStep.ExecutionModule.ModuleObject}");
                        return;
                    }
                    catch (DirectoryNotFoundException)
                    {
                        Log.Logger.Error(
                            $"Config Folder Is Missing! {parsedPath} --> StepName: {archonStep.ArchonStepName}, Module: {archonStep.ExecutionModule.ModuleObject}");
                        return;
                    }
                    catch (Exception ex)
                    {
                        Log.Logger.Error(ex, ex.Message);
                        return;
                    }
                }
            }
        }