/// <summary> /// Use to process post translate actions /// </summary> private void TranslateComplete() { //US & CA are both in the same path countryConfig = new CountryConfig("0"); //Get a complete list of temp folders. DirectoryInfo tmpInfo = new DirectoryInfo(base.TranslatedFileLocation + "\\" + countryConfig.SaveDirectoryLocation); List <DirectoryInfo> tmpdirs = new List <DirectoryInfo>(); if (Directory.Exists(tmpInfo.FullName)) { tmpdirs = tmpInfo.GetDirectories("*.TMP", SearchOption.TopDirectoryOnly).ToList(); } //Consignment countryConfig = new CountryConfig("2"); //Get a complete list of temp folders. tmpInfo = new DirectoryInfo(base.TranslatedFileLocation + "\\" + countryConfig.SaveDirectoryLocation); if (Directory.Exists(tmpInfo.FullName)) { tmpdirs.AddRange(tmpInfo.GetDirectories("*.TMP", SearchOption.TopDirectoryOnly).ToList()); } foreach (DirectoryInfo dirInfo in tmpdirs) { //If a directory exists that wasn't created on this run of the translate store it to keep files from not being fed into auditworks. if (!OutputDirectoriesCreated.Contains(dirInfo.FullName)) { OutputDirectoriesCreated.Add(dirInfo.FullName); } } foreach (string dir in OutputDirectoriesCreated) { if (!Directory.Exists(dir)) { continue; } //Rename the temp file to the extension required by auditworks string NewDir = dir.Replace(".TMP", ".IP"); //Create the Done file requred by auditworks try { LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "CreatingDoneFile"), dir)); using (File.Create(String.Format("{0}\\{1}", dir, "DONE.DONE"))) { } } catch (Exception ex) { LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "DoneFileError"), ex.Message)); continue; } try { LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "RenameDir"), dir, NewDir)); System.IO.Directory.Move(dir, NewDir); } catch (Exception ex) { LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "RenameDirError"), ex.Message)); } } System.Threading.Thread.Sleep(3000); LogMessage(ResourceHelper.Instance.GetString(ResFile, "AppDone")); System.Threading.Thread.Sleep(2000); }
/// <summary> /// This method does the validation and is the entry point for the translating. /// </summary> /// <param name="file">The file to be translated and validated</param> private void TranslateFile(FileInfo file) { ConvertedTLogDoc = null; this._SourceFile = file.FullName; if (ExcludeHelper == null) { ExcludeHelper = new ExcludeFileHelper(PluginConfig.GetValue("TranslateExludeFile"), PluginConfig.GetValue("TranslateExludePath"), PluginConfig.GetValue("TranslateExludeType_BeforeTrans").Split(',')); } if (_SourceDocument == null) { _SourceDocument = new XmlDocument(); using (XmlReader SourceReader = SourceDocument) { SourceReader.MoveToContent(); _SourceDocument.LoadXml(SourceReader.ReadOuterXml()); } } bool isvalid = true; Validate TranslateValidator = null; bool validate = (PluginConfig.GetValue("ValidateTLog") == "") ? false : Convert.ToBoolean(PluginConfig.GetValue("ValidateTLog")); if (validate) { try { TranslateValidator = new SpencerGifts.TlogCommon.Validate(); //Before we can process the file we need to check to make sure its a valid tlog\ LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "ValidateFile"), file.Name)); //isvalid = TranslateValidator.isValidTLog(_SourceDocument, _SourceFile); isvalid = TranslateValidator.isValidTLog(_SourceDocument, file.FullName); } catch (Exception ex) { LogMessage("Validator Exception " + ex.Message + " " + ex.StackTrace); //Defaulting to true since the validator blew up and we don't necessarly want to prevent tlogs from getting held up isvalid = true; } } if (!isvalid) { string BadTlogLocation = PluginConfig.GetValue("BadTlogLocation"); if (TranslateValidator != null) { Console.WriteLine(TranslateValidator.ErrorMessage); LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "InvalidFile"), file.Name)); LogMessage("\r\n------------------------------------------\r\n" + TranslateValidator.ErrorMessage + "------------------------------------------"); //Logging.LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "MovingBadTLog"), BadTlogLocation)); } File.Move(_SourceFile, BadTlogLocation + "\\" + file.Name); } else { //We need to check the exclude file first before we translate. If the store is in the exclude file and //has a type that specifies not to translate the file then move it to the appropriate non translating directory. if (!ExcludeHelper.ShouldTranslate(file.Name.Substring(4, 5))) { MoveFile(file, ExcludeHelper.NonTranslateSavePath); return; } LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "FileIsValid"), file.Name)); LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "TranslatingFile"), file.Name)); try { StoreCountryCode = _SourceDocument.SelectSingleNode("//L10/@country").Value; if (isConsignmentStore(file.Name)) { countryConfig = new CountryConfig(PluginConfig.GetValue("ConsignmentCountryCode")); } else { countryConfig = new CountryConfig(StoreCountryCode); } base.Process(); //now we need to check the exclude file again to verify we can move the translated file to the backup location if (ExcludeHelper.OkToBackup(file.Name.Substring(4, 5))) { BackupFile(file); } else { MoveFile(file, ExcludeHelper.NonTranslateSavePath); } } catch (RuleConditionException ex) { PropertyInfo[] info = ex.GetType().GetProperties(); LogException(info, ex); throw ex; } catch (RuleActionException ex) { PropertyInfo[] info = ex.GetType().GetProperties(); LogException(info, ex); throw ex; } catch (RuleMappingException ex) { PropertyInfo[] info = ex.GetType().GetProperties(); LogException(info, ex); throw ex; } catch (Exception ex) { LogMessage(String.Format(ResourceHelper.Instance.GetString(ResFile, "UnHandledException"), file.Name, ex.ToString())); throw ex; } finally { _SourceDocument = null; _SourceDocumentMS = null; } } }