Add Transmission Control Protocol file handling and update PCL serialization
- Introduced FileRead and Record classes for handling file reading in the Transmission Control Protocol. - Enhanced Description, Detail, and other related classes with JSON serialization attributes for improved data handling. - Implemented methods for reading and processing files, including network stream management. - Updated unit tests to cover new functionality and ensure robust testing. - Added new PDSF file handling classes and integrated them into the project structure. - Refactored existing code to utilize source generation for JSON serialization, improving performance and maintainability.
This commit is contained in:
		| @ -108,7 +108,7 @@ public class FileRead : Shared.FileRead, IFileRead | ||||
|         return results; | ||||
|     } | ||||
|  | ||||
|     private void DirectoryMove(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions) | ||||
|     private void DirectoryMove(string reportFullPath, DateTime dateTime, JsonElement[] jsonElements, List<pcl.Description> descriptions) | ||||
|     { | ||||
|         if (dateTime == DateTime.MinValue) | ||||
|             throw new ArgumentNullException(nameof(dateTime)); | ||||
| @ -122,7 +122,7 @@ public class FileRead : Shared.FileRead, IFileRead | ||||
|             throw new Exception("Didn't find directory by logistics sequence"); | ||||
|         if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime) | ||||
|             File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime); | ||||
|         OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions); | ||||
|         OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions); | ||||
|         JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true }; | ||||
|         string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions); | ||||
|         string directoryName = $"{Path.GetFileName(matchDirectories[0]).Split(new string[] { logisticsSequence }, StringSplitOptions.None)[0]}{_Logistics.DateTimeFromSequence:yyyy-MM-dd_hh;mm_tt_}{DateTime.Now.Ticks - _Logistics.Sequence}"; | ||||
| @ -166,23 +166,24 @@ public class FileRead : Shared.FileRead, IFileRead | ||||
|     private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) | ||||
|     { | ||||
|         Tuple<string, Test[], JsonElement[], List<FileInfo>> results; | ||||
|         ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath); | ||||
|         string[] lines = File.ReadAllLines(reportFullPath); | ||||
|         ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines); | ||||
|         _Logistics = new Logistics(reportFullPath, processDataStandardFormat); | ||||
|         SetFileParameterLotIDToLogisticsMID(); | ||||
|         JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat); | ||||
|         JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat); | ||||
|         List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements); | ||||
|         Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); | ||||
|         results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>()); | ||||
|         if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) | ||||
|             DirectoryMove(reportFullPath, dateTime, descriptions); | ||||
|             DirectoryMove(reportFullPath, dateTime, jsonElements, descriptions); | ||||
|         else if (!_IsEAFHosted) | ||||
|         { | ||||
|             OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions); | ||||
|             OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions); | ||||
|             JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true }; | ||||
|             string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions); | ||||
|             string check = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions); | ||||
|             string jsonFileName = Path.ChangeExtension(reportFullPath, ".json"); | ||||
|             string historicalText = File.ReadAllText(jsonFileName); | ||||
|             if (json != historicalText) | ||||
|             if (check != historicalText) | ||||
|                 throw new Exception("File doesn't match historical!"); | ||||
|         } | ||||
|         return results; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user