/// <summary> /// Invoke executable file, insert GUID and EXE information into Transaction table. /// </summary> /// <param name="exePath">Executable file path</param> /// <param name="systemGuid">System GUIID</param> /// <param name="triggerFilePath">Trigger file path</param> public void InvokeExeAndDatabaseInsertion(string exePath, string systemGuid, string triggerFilePath) { TriggerFileReader objTriggerFileReader = new TriggerFileReader(); objTriggerFileReader.TriggerFileLocaton = triggerFilePath; var triggerFileDetail = objTriggerFileReader.GetTriggerFileDetail(); #region Make an entry in table that EXE is running now Transaction newTransaction = new Transaction(systemGuid); newTransaction.ExeName = Path.GetFileName(exePath); newTransaction.Application = triggerFileDetail.ApplicationName != null ? triggerFileDetail.ApplicationName : "NA"; newTransaction.StartedAt = DateTime.Now; newTransaction.Enabled = true; var IsNewCreated = newTransaction.Save(true); #endregion #region Call EXE using trigger file SingletonLogger.Instance.Debug("Service start executing the " + exePath); TriggerBasedInvoke triggerInvoker = new TriggerBasedInvoke(exePath, triggerFilePath, systemGuid); System.Diagnostics.Process proc = triggerInvoker.Invoke(); SingletonLogger.Instance.Debug("Service successfully executed the " + exePath); if (IsNewCreated) { newTransaction.ProcessId = proc.Id; newTransaction.Save(); Licence.UpdateLastRunStartTime(exePath, proc.StartTime); SingletonLogger.Instance.Debug("Service successfully inserted information in Transaction table."); } #endregion }
public string ReadExcutableFileLocationFromTriigerFile() { TriggerFileReader triggerFileReaderObj = new TriggerFileReader(); triggerFileReaderObj.TriggerFileLocaton = TriggerFilePath; var triggerFileInfo = triggerFileReaderObj.GetTriggerFileDetail(); if (String.IsNullOrEmpty(triggerFileInfo.ComponentExe)) { throw new Exception("Executable file location not found in trigger file. Trigger file name is " + Path.GetFileName(TriggerFilePath)); } return(triggerFileInfo.ComponentExe); }
public TriggerFileReader ProcessTriggerFile() { #region Move trigger file to Component trigger location //Here we are moving file from invoke location to component trigger location //so that invoker doesn't pick it again & again if (Directory.Exists(ConfigurationManager.AppSettings["TriggerFileDirectory"])) { Directory.CreateDirectory(ConfigurationManager.AppSettings["TriggerFileDirectory"]); } if (invokerTriggerFile == null) { throw new ArgumentNullException("Invoker trigger file is null or empty."); } if (!File.Exists(invokerTriggerFile)) { SingletonLogger.Instance.Debug("Trigger file not found at " + invokerTriggerFile + " "); return(null); } //component trigger file location triggerFile = Path.Combine(ConfigurationManager.AppSettings["TriggerFileDirectory"], Path.GetFileName(invokerTriggerFile)); #if DEBUG File.Delete(triggerFile); File.Copy(invokerTriggerFile, triggerFile); #else File.Move(invokerTriggerFile, triggerFile); #endif SingletonLogger.Instance.Debug(string.Format("Trigger file successfully copied at {0} location.", triggerFile)); #endregion #region Read Trigger file objXmlHelper = new XmlHelper(); SingletonLogger.Instance.Debug("Process start reading Trigger XML file " + triggerFile); var objTriggerFileReader = new TriggerFileReader { TriggerFileLocaton = triggerFile }; triggerFileDetail = objTriggerFileReader.GetTriggerFileDetail(); if (triggerFileDetail == null) { throw new ArgumentNullException("No trigger File Detail"); } #endregion return(triggerFileDetail); }
static void Main(string[] args) { LogInitializer.InitializeLogger("ZipExtractor"); SingletonLogger.Instance.Debug("Extractor component has been started."); var systemGuid = string.Empty; var triggerFile = string.Empty; #region Validate Command Arguments // Start Processing if (args.Length != 2) { SingletonLogger.Instance.Debug("Number of passed arguments are Invalid."); return; } else { triggerFile = args[0]; systemGuid = args[1]; } if (!File.Exists(triggerFile)) { SingletonLogger.Instance.Error("Trigger file does not exist at = " + triggerFile); return; } else { SingletonLogger.Instance.Debug("Trigger file = " + triggerFile); } if (String.IsNullOrEmpty(systemGuid)) { SingletonLogger.Instance.Error("Trigger file does not exist at = " + triggerFile); return; } else { SingletonLogger.Instance.Debug("System generated GUID = " + systemGuid); } #endregion #region Move trigger file from Invoker trigger location to Component trigger location // We are moving trigger file from invoker location to avoid reprocessing of same file TriggerFileLocation = AppConfig.GetValueByKey("TriggerFileDirectory"); if (!Directory.Exists(TriggerFileLocation)) { Directory.CreateDirectory(TriggerFileLocation); } TriggerFileLocation = Path.Combine(TriggerFileLocation, Path.GetFileName(triggerFile)); //Move to intermediate directory File.Move(triggerFile, TriggerFileLocation); SingletonLogger.Instance.Debug("Trigger has been moved at " + TriggerFileLocation); #endregion XmlHelper objXmlHelper = new XmlHelper(); var componentStartDate = DateTime.Now.ToString(); SingletonLogger.Instance.Debug("Process start reading Trigger XML file " + TriggerFileLocation); TriggerFileReader objTriggerFileReader = new TriggerFileReader(); objTriggerFileReader.TriggerFileLocaton = TriggerFileLocation; var triggerFileDetail = objTriggerFileReader.GetTriggerFileDetail(); SingletonLogger.Instance.Debug("Process successfully read trigger XML file."); try { mapper = new PatternMatchingMapper(); mapper.SetCurrentDateFormat(); mapper.SetClientAndAppDetails(triggerFileDetail.RunNumber); var inputLocation = triggerFileDetail.InputDetails.FirstOrDefault(); var outputLocation = triggerFileDetail.OutputDetails.FirstOrDefault(); if (inputLocation == null) { throw new Exception(""); } string inputLoc = mapper.EvaluateString(inputLocation.DirectoryLocation); string outputLoc = mapper.EvaluateString(outputLocation.DirectoryLocation); if (String.IsNullOrEmpty(inputLoc)) { throw new Exception("Input loction is never be null or empty"); } if (!Directory.Exists(inputLoc)) { throw new Exception("Input loction not exists" + inputLoc); } var availableFiles = Directory.GetFiles(inputLoc, inputLocation.FileMask); if (String.IsNullOrEmpty(outputLoc)) { throw new Exception("Output loction is never be null or empty"); } if (!Directory.Exists(outputLoc)) { Directory.CreateDirectory(outputLoc); } foreach (var zipfile in availableFiles) { // Start Extracting SingletonLogger.Instance.Debug("Start processing " + Path.GetFileName(TriggerFileLocation) + " file."); ExtractOperations.ExtractFile(zipfile, outputLoc); if (AppConfig.FileOperation) { File.Delete(zipfile); } } objXmlHelper.WriteComponentStatusInTriggerFile(TriggerFileLocation, componentStartDate, DateTime.Now.ToString()); File.Move(TriggerFileLocation, triggerFileDetail.ComponentStatusDirectory + "\\status_" + Path.GetFileName(TriggerFileLocation)); } catch (Exception ex) { objXmlHelper.WriteComponentStatusInTriggerFile(TriggerFileLocation, componentStartDate, DateTime.Now.ToString(), "Error", ex.GetBaseException().ToString()); File.Move(TriggerFileLocation, triggerFileDetail.ComponentStatusDirectory + "\\status_" + Path.GetFileName(TriggerFileLocation)); SingletonLogger.Instance.Error("Error in ZipExtractor. Error message : " + ex.Message + ". Error Detail : " + ex.StackTrace); } finally { #region Deleting Entry from Transaction Table try { // SQLITE Database Initialization Transaction trans = Transaction.Get(systemGuid); if (Transaction.Delete(systemGuid)) { if (trans != null) { Licence.UpdateLastRunEndTime(trans.ExeName, DateTime.Now); } SingletonLogger.Instance.Debug("Successfully removed column. GUID = " + systemGuid); } else { SingletonLogger.Instance.Debug("Error while removing column. GUID = " + systemGuid); } } catch (Exception ex2) { SingletonLogger.Instance.Debug("Error while removing column. GUID = " + ex2.ToString()); } #endregion } }
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); } }