Exemple #1
0
        public void Run()
        {
            try
            {
                #region Trigger file details

                SingletonLogger.Instance.Debug("Process start reading Trigger XML file from " + TriggerPath);
                TriggerFileReader objTriggerFileReader = new TriggerFileReader();
                objTriggerFileReader.TriggerFileLocaton = TriggerPath;
                var triggerFileDetail = objTriggerFileReader.GetTriggerFileDetail();
                StatusDirectory = triggerFileDetail.ComponentStatusDirectory + "\\status_" + Path.GetFileName(TriggerPath);
                SingletonLogger.Instance.Debug("Process successfully read trigger XML file.");

                #endregion

                #region Mapper Setting

                mapper = new PatternMatchingMapper();
                mapper.SetCurrentDateFormat();
                mapper.SetClientAndAppDetails(triggerFileDetail.RunNumber);
                mapper.SetClientAndAppDetails(triggerFileDetail.ClientName, triggerFileDetail.ApplicationName);

                #endregion

                #region Run Process
                var application             = test.Find(1);
                var runItem                 = _runComponentStatusRepository.Find(triggerFileDetail.RunComponentStatusId).RunNumberId;
                var allCompeletedComponents = _runComponentStatusRepository.FindAll().Where(x => x.RunNumberId == runItem && x.ComponentStatusId == (byte)ComponentStatusType.Completed).Select(x => x.ComponentId).ToList();
                var applicationId           = _runDetailRepository.GetApplicationIdByRunNumber(triggerFileDetail.RunNumber);
                SingletonLogger.Instance.Debug(allCompeletedComponents.Count() + " component has been completed.");
                foreach (var item in allCompeletedComponents)
                {
                    var recordList = _uploadFileRepository.FindAllByAppNComponentId(applicationId, item);
                    foreach (var recordItem in recordList)
                    {
                        List <string> fileList  = new List <string>();
                        var           inputPath = mapper.EvaluateString(recordItem.FileInputPath);
                        foreach (var mask in recordItem.InputFileMask.Split('|').ToList())
                        {
                            Regex reg = new Regex(mask.Trim());
                            fileList.AddRange(Directory.GetFiles(inputPath).Where(path => reg.IsMatch(path)).ToList());
                        }
                        if (fileList.Count > 0)
                        {
                            SingletonLogger.Instance.Debug(fileList.Count + " files found for move from " + inputPath);
                            if (recordItem.IsArchiveOutputRequired)
                            {
                                var archiveName         = mapper.EvaluateString(recordItem.ArchiveFileExpression);
                                var fileTransferSetting = _fileTransferSettingRepository.Find(recordItem.ArchiveFileTransferSettingId);
                                var outputPath          = mapper.EvaluateString(recordItem.ArchiveOutputPath);
                                Manager = new TransferManager(SetAdaptorSetting(fileTransferSetting, outputPath));
                                Manager.Processing(fileList);
                                SingletonLogger.Instance.Debug(fileList.Count + " files has been archived successfully.");
                            }
                            if (recordItem.IsMoveFileRequired)
                            {
                                var moveName            = mapper.EvaluateString(recordItem.MoveFileExpression);
                                var fileTransferSetting = _fileTransferSettingRepository.Find(recordItem.MoveFileTransferSettingId);
                                var outputPath          = mapper.EvaluateString(recordItem.MoveFilePath);
                                Manager = new TransferManager(SetAdaptorSetting(fileTransferSetting, outputPath));
                                Manager.Processing(fileList);
                                SingletonLogger.Instance.Debug(fileList.Count + " files has been moved successfully.");
                            }
                        }
                    }
                }

                SingletonLogger.Instance.Debug("Files has been uploaded successfully.");

                #endregion

                #region Move trigger file with status

                objXmlHelper.WriteComponentStatusInTriggerFile(TriggerPath, componentStartDate, DateTime.Now.ToString());
                File.Move(TriggerPath, StatusDirectory);

                #endregion
            }
            catch (Exception ex)
            {
                TriggerStatus(ex);
            }
        }