//using Adaptation.Helpers; //using Adaptation.Shared; //using Adaptation.Shared.Metrology; //using log4net; //using System; //using System.Collections.Generic; //using System.Globalization; //using System.IO; //using System.Linq; //using System.Text.Json; //using System.Text.RegularExpressions; //namespace Adaptation.FileHandlers //{ // public partial class FileRead : ILogic // { // private ConfigData _ConfigData; // public FileRead() // { // Logistics = new Logistics(); // _Log = LogManager.GetLogger(typeof(FileRead)); // } // public ILogic ShallowCopy() // { // return (ILogic)MemberwiseClone(); // } // public void WaitForThread() // { // WaitForThread(thread: null, threadExceptions: null); // } // public Tuple GetOpenInsightTuple() // { // Tuple restuls = new Tuple(_ConfigData.OpenInsightSiViewer, _ConfigData); // return restuls; // } // public Tuple> GetExtractResult(string reportFullPath, string eventName) // { // Tuple> results; // _FileParameter.Clear(); // DateTime dateTime = DateTime.Now; // if (_ConfigData.IsEvent && _ConfigData.Duplicator is null) // results = GetExtractResult(reportFullPath); // else if (_ConfigData.Duplicator.HasValue) // results = GetDuplicatorExtractResult(reportFullPath, dateTime); // else // throw new Exception(); // if (results.Item2 is null) // results = new Tuple>(results.Item1, JsonSerializer.Deserialize("[]"), results.Item3); // int count = results.Item2.Value.GetArrayLength(); // if (count > 0 && _ConfigData.EafHosted) // WritePDSF(results.Item2.Value); // UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks); // return results; // } // private Tuple> GetExtractResult(string reportFullPath) // { // Tuple> results = new Tuple>(string.Empty, null, new List()); // FileInfo fileInfo = new FileInfo(reportFullPath); // Logistics = new Logistics(ConfigData.NullData, _ConfigData.CellNames, _ConfigData.MesEntities, fileInfo, useSplitForMID: false); // SetFileParameterLotID(Logistics.MID); // if (fileInfo.Length < ConfigData.MinFileLength) // results.Item3.Add(fileInfo); // else // { // ProcessData processData = new ProcessData(this, _ConfigData, results.Item3); // if (!(processData.Header is null)) // { // string mid = string.Concat(processData.Header.Reactor, "-", processData.Header.RDS, "-", processData.Header.PSN); // mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0]; // Logistics.MID = mid; // SetFileParameterLotID(mid); // Logistics.ProcessJobID = processData.Header.Reactor; // } // if (processData.Header is null || !processData.Details.Any()) // throw new Exception(); // results = processData.GetResults(this, _ConfigData, results.Item3); // } // return results; // } // private Tuple> GetDuplicatorExtractResult(string reportFullPath, DateTime dateTime) // { // Tuple> results; // Tuple pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath); // Logistics = new Logistics(reportFullPath, pdsf.Item1); // SetFileParameterLotIDToLogisticsMID(); // JsonElement pdsdBodyValues = ProcessDataStandardFormat.GetArray(pdsf); // results = new Tuple>(pdsf.Item1, pdsdBodyValues, new List()); // List processDataDescriptions = _ConfigData.GetProcessDataDescriptions(pdsdBodyValues); // Dictionary> keyValuePairs = ProcessData.GetKeyValuePairs(_ConfigData, pdsdBodyValues, processDataDescriptions, extra: false); // bool isNotUsedInsightMetrologyViewerAttachments = (!(_Configuration.FileScanningIntervalInSeconds > 0) && _ConfigData.Duplicator.Value == ConfigData.Level.IsXToOpenInsightMetrologyViewerAttachments); // bool isDummyRun = (ConfigData.DummyRuns.Any() && ConfigData.DummyRuns.ContainsKey(Logistics.JobID) && ConfigData.DummyRuns[Logistics.JobID].Any() && (from l in ConfigData.DummyRuns[Logistics.JobID] where l == Logistics.Sequence select 1).Any()); // if (isDummyRun) // { // try { File.SetLastWriteTime(reportFullPath, dateTime); } catch (Exception) { } // } // string duplicateDirectory; // string[] segments = Path.GetFileNameWithoutExtension(reportFullPath).Split('_'); // if (_ConfigData.Duplicator.Value != ConfigData.Level.IsXToOpenInsight) // duplicateDirectory = string.Concat(_Configuration.TargetFileLocation, @"\", segments[0]); // else // duplicateDirectory = string.Concat(Path.GetDirectoryName(Path.GetDirectoryName(_Configuration.TargetFileLocation)), @"\Data"); // if (segments.Length > 2) // duplicateDirectory = string.Concat(duplicateDirectory, @"-", segments[2]); // if (!Directory.Exists(duplicateDirectory)) // Directory.CreateDirectory(duplicateDirectory); // if ((isDummyRun || isNotUsedInsightMetrologyViewerAttachments || _Configuration.FileScanningIntervalInSeconds > 0) && _ConfigData.Duplicator.Value != ConfigData.Level.IsXToArchive && _ConfigData.Duplicator.Value != ConfigData.Level.IsArchive) // { // string successDirectory; // if (_ConfigData.Duplicator.Value != ConfigData.Level.IsXToAPC) // successDirectory = string.Empty; // else // { // successDirectory = string.Concat(Path.GetDirectoryName(_Configuration.TargetFileLocation), @"\ViewerPath"); // if (!Directory.Exists(successDirectory)) // Directory.CreateDirectory(successDirectory); // } // CultureInfo cultureInfo = new CultureInfo("en-US"); // Calendar calendar = cultureInfo.Calendar; // List> tuples = new List>(); // string duplicateFile = string.Concat(duplicateDirectory, @"\", Path.GetFileName(reportFullPath)); // string weekOfYear = calendar.GetWeekOfYear(Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); // string weekDirectory = string.Concat(Logistics.DateTimeFromSequence.ToString("yyyy"), "_Week_", weekOfYear, @"\", Logistics.DateTimeFromSequence.ToString("yyyy-MM-dd")); // string logisticsSequenceMemoryDirectory = string.Concat(_ConfigData.MemoryPath, @"\", _ConfigData.GetEquipmentType(), @"\Source\", weekDirectory, @"\", Logistics.Sequence); // if (!Directory.Exists(logisticsSequenceMemoryDirectory)) // Directory.CreateDirectory(logisticsSequenceMemoryDirectory); // if (_ConfigData.Duplicator.Value == ConfigData.Level.IsXToAPC) // { // if (!isDummyRun && _ConfigData.EafHosted) // File.Copy(reportFullPath, duplicateFile, overwrite: true); // } // else // { // if (_ConfigData.Duplicator.Value == ConfigData.Level.IsXToOpenInsightMetrologyViewer) // { // List fileReadDescriptions = ProcessData.GetProcessDataFileReadDescriptions(_ConfigData, pdsdBodyValues); // ProcessData.WSRequest wsRequest = new ProcessData.WSRequest(this, fileReadDescriptions); // if (!isDummyRun && _ConfigData.EafHosted) // { // Tuple wsResults = WS.SendData(_ConfigData.OpenInsightMetrologyViewerAPI, wsRequest); // if (!wsResults.Item2.Success) // throw new Exception(wsResults.ToString()); // _Log.Debug(wsResults.Item2.HeaderID); // File.WriteAllText(string.Concat(logisticsSequenceMemoryDirectory, @"\", nameof(WS.Results), ".json"), wsResults.Item1); // } // } // else // { // Test test; // string lines; // IScopeInfo scopeInfo; // foreach (KeyValuePair> keyValuePair in keyValuePairs) // { // test = keyValuePair.Key; // //scopeInfo = new ScopeInfo(this, _ConfigData, test); // if (_ConfigData.Duplicator.Value != ConfigData.Level.IsXToOpenInsight) // scopeInfo = new ScopeInfo(this, _ConfigData, test, _ConfigData.IqsFile, _ConfigData.IqsQueryFilter); // else // scopeInfo = new ScopeInfo(this, _ConfigData, test, _ConfigData.OpenInsightFilePattern, _ConfigData.IqsQueryFilter); // //lines = ProcessDataStandardFormat.GetLines(Logistics, scopeInfo, names, values, dateFormat: "M/d/yyyy hh:mm:ss tt", timeFormat: string.Empty, pairedColumns: ExtractResultPairedColumns); // List fileReadDescriptions = ProcessData.GetProcessDataFileReadDescriptions(_ConfigData, pdsdBodyValues); // lines = ProcessData.GetLines(this, fileReadDescriptions); // tuples.Add(new Tuple(scopeInfo, lines)); // } // } // if (_ConfigData.Duplicator.Value == ConfigData.Level.IsXToOpenInsightMetrologyViewerAttachments) // { // string[] matchDirectories = Shared1567(reportFullPath, tuples); // if (!isDummyRun && _ConfigData.EafHosted && !isNotUsedInsightMetrologyViewerAttachments) // { // List fileReadDescriptions = ProcessData.GetProcessDataFileReadDescriptions(_ConfigData, pdsdBodyValues); // ProcessData.PostOpenInsightMetrologyViewerAttachments(_Log, _ConfigData, Logistics, dateTime, logisticsSequenceMemoryDirectory, fileReadDescriptions, matchDirectories[0]); // } // } // } // if (_ConfigData.Duplicator.Value != ConfigData.Level.IsXToOpenInsightMetrologyViewer && _ConfigData.Duplicator.Value != ConfigData.Level.IsXToOpenInsightMetrologyViewerAttachments) // Shared0413(dateTime, isDummyRun, successDirectory, duplicateDirectory, tuples, duplicateFile); // } // if (_ConfigData.Duplicator.Value == ConfigData.Level.IsXToOpenInsightMetrologyViewerAttachments) // { // string destinationDirectory; // //string destinationDirectory = WriteScopeInfo(_ConfigData.ProgressPath, Logistics, dateTime, duplicateDirectory, tuples); // FileInfo fileInfo = new FileInfo(reportFullPath); // string logisticsSequence = Logistics.Sequence.ToString(); // if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime) // File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime); // string jobIdDirectory = string.Concat(Path.GetDirectoryName(Path.GetDirectoryName(_ConfigData.FileConnectorConfiguration.TargetFileLocation)), @"\", Logistics.JobID); // if (!Directory.Exists(jobIdDirectory)) // Directory.CreateDirectory(jobIdDirectory); // string[] matchDirectories; // if (!_ConfigData.EafHosted) // matchDirectories = new string[] { Path.GetDirectoryName(Path.GetDirectoryName(reportFullPath)) }; // else // matchDirectories = Directory.GetDirectories(jobIdDirectory, string.Concat(Logistics.MID, '*', logisticsSequence, '*'), SearchOption.TopDirectoryOnly); // if ((matchDirectories is null) || matchDirectories.Length != 1) // throw new Exception("Didn't find directory by logistics sequence"); // destinationDirectory = matchDirectories[0]; // if (isDummyRun) // Shared0607(reportFullPath, duplicateDirectory, logisticsSequence, destinationDirectory); // else // { // List fileReadDescriptions = ProcessData.GetProcessDataFileReadDescriptions(_ConfigData, pdsdBodyValues); // ProcessData.WSRequest wsRequest = new ProcessData.WSRequest(this, fileReadDescriptions); // JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions { WriteIndented = true }; // string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions); // if (_ConfigData.EafHosted) // Shared1277(reportFullPath, destinationDirectory, logisticsSequence, jobIdDirectory, json); // else // { // string jsonFileName = Path.ChangeExtension(reportFullPath, ".json"); // string historicalText = File.ReadAllText(jsonFileName); // if (json != historicalText) // throw new Exception("File doesn't match historical!"); // } // } // } // return results; // } // private void MoveArchive() // { // CultureInfo cultureInfo = new CultureInfo("en-US"); // Calendar calendar = cultureInfo.Calendar; // string logisticsSequence = Logistics.Sequence.ToString(); // string weekOfYear = calendar.GetWeekOfYear(Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); // string weekDirectory = string.Concat(Logistics.DateTimeFromSequence.ToString("yyyy"), "_Week_", weekOfYear, @"\", Logistics.DateTimeFromSequence.ToString("yyyy-MM-dd")); // string jobIdDirectory = string.Concat(_ConfigData.FileConnectorConfiguration.TargetFileLocation, @"\", Logistics.JobID); // if (!Directory.Exists(jobIdDirectory)) // Directory.CreateDirectory(jobIdDirectory); // //string destinationArchiveDirectory = string.Concat(jobIdDirectory, @"\!Archive\", weekDirectory); // string destinationArchiveDirectory = string.Concat(Path.GetDirectoryName(_ConfigData.FileConnectorConfiguration.TargetFileLocation), @"\Archive\", Logistics.JobID, @"\", weekDirectory); // if (!Directory.Exists(destinationArchiveDirectory)) // Directory.CreateDirectory(destinationArchiveDirectory); // string[] matchDirectories = new string[] { GetDirectoriesRecursively(jobIdDirectory, logisticsSequence).FirstOrDefault() }; // if ((matchDirectories is null) || matchDirectories.Length != 1) // throw new Exception("Didn't find directory by logistics sequence"); // string sourceDirectory = Path.GetDirectoryName(matchDirectories[0]); // destinationArchiveDirectory = string.Concat(destinationArchiveDirectory, @"\", Path.GetFileName(sourceDirectory)); // Directory.Move(sourceDirectory, destinationArchiveDirectory); // } // public void Move(string reportFullPath, Tuple> extractResults, Exception exception = null) // { // Shared1872(reportFullPath, exception); // bool isErrorFile = !(exception is null); // if (!isErrorFile && _ConfigData.Duplicator.HasValue) // { // if (_ConfigData.Duplicator.Value == ConfigData.Level.IsXToArchive) // Shared0192(reportFullPath); // else if (_ConfigData.EafHosted && _ConfigData.Duplicator.Value == ConfigData.Level.IsArchive) // MoveArchive(); // if (_ConfigData.EafHosted && !string.IsNullOrEmpty(_ConfigData.ProgressPath)) // CreateProgressDirectory(_ConfigData.ProgressPath, Logistics, (int?)_ConfigData.Duplicator, exceptionLines: null); // } // if (!isErrorFile && _ConfigData.Duplicator is null) // WriteIO(reportFullPath); // if (!_ConfigData.EafHosted) // { // object @object = GetFilePathGeneratorInfo(reportFullPath, isErrorFile: false); // if (!(@object is null) && @object is string to) // { // if (to.Contains("%")) // _Log.Debug("Can't debug without EAF Hosting"); // else // Shared1124(reportFullPath, extractResults, to, _Configuration.SourceFileLocation, resolvedFileLocation: string.Empty, exception: null); // } // } // } // } //}