Compare commits
	
		
			2 Commits
		
	
	
		
			0ed6d17774
			...
			552f0137df
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 552f0137df | |||
| 538bd194ae | 
@ -22,17 +22,21 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
    internal class PreWith
 | 
					    internal class PreWith
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        internal string MatchingFile { get; private set; }
 | 
					 | 
				
			||||||
        internal string CheckFile { get; private set; }
 | 
					 | 
				
			||||||
        internal string ErrFile { get; private set; }
 | 
					        internal string ErrFile { get; private set; }
 | 
				
			||||||
 | 
					        internal string CheckFile { get; private set; }
 | 
				
			||||||
 | 
					        internal string MatchingFile { get; private set; }
 | 
				
			||||||
        internal string CheckDirectory { get; private set; }
 | 
					        internal string CheckDirectory { get; private set; }
 | 
				
			||||||
        internal string NoWaitDirectory { get; private set; }
 | 
					        internal string NoWaitDirectory { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        internal PreWith(string matchingFile, string checkFile, string errFile, string checkDirectory, string noWaitDirectory)
 | 
					        internal PreWith(string checkDirectory,
 | 
				
			||||||
 | 
					                         string checkFile,
 | 
				
			||||||
 | 
					                         string errFile,
 | 
				
			||||||
 | 
					                         string matchingFile,
 | 
				
			||||||
 | 
					                         string noWaitDirectory)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            MatchingFile = matchingFile;
 | 
					 | 
				
			||||||
            CheckFile = checkFile;
 | 
					 | 
				
			||||||
            ErrFile = errFile;
 | 
					            ErrFile = errFile;
 | 
				
			||||||
 | 
					            CheckFile = checkFile;
 | 
				
			||||||
 | 
					            MatchingFile = matchingFile;
 | 
				
			||||||
            CheckDirectory = checkDirectory;
 | 
					            CheckDirectory = checkDirectory;
 | 
				
			||||||
            NoWaitDirectory = noWaitDirectory;
 | 
					            NoWaitDirectory = noWaitDirectory;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -221,7 +225,11 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
            if (!Directory.Exists(checkDirectory))
 | 
					            if (!Directory.Exists(checkDirectory))
 | 
				
			||||||
                _ = Directory.CreateDirectory(checkDirectory);
 | 
					                _ = Directory.CreateDirectory(checkDirectory);
 | 
				
			||||||
            noWaitDirectory = Path.Combine(checkDirectory, "NoWaitDirectory");
 | 
					            noWaitDirectory = Path.Combine(checkDirectory, "NoWaitDirectory");
 | 
				
			||||||
            preWith = new(pre.MatchingFile, pre.CheckFile, errFile, checkDirectory, noWaitDirectory);
 | 
					            preWith = new(checkDirectory: checkDirectory,
 | 
				
			||||||
 | 
					                          checkFile: pre.CheckFile,
 | 
				
			||||||
 | 
					                          errFile: errFile,
 | 
				
			||||||
 | 
					                          matchingFile: pre.MatchingFile,
 | 
				
			||||||
 | 
					                          noWaitDirectory: noWaitDirectory);
 | 
				
			||||||
            results.Add(preWith);
 | 
					            results.Add(preWith);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return results.AsReadOnly();
 | 
					        return results.AsReadOnly();
 | 
				
			||||||
@ -260,7 +268,7 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static ReadOnlyCollection<Pre> GetPreCollection(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles)
 | 
					    private static ReadOnlyCollection<Pre> GetPreCollection(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles, bool _)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        List<Pre> results = new();
 | 
					        List<Pre> results = new();
 | 
				
			||||||
        Pre pre;
 | 
					        Pre pre;
 | 
				
			||||||
@ -275,7 +283,7 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
        return results.AsReadOnly();
 | 
					        return results.AsReadOnly();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void MoveCollection(DateTime dateTime, ProcessDataStandardFormat? processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
 | 
					    private void MoveCollection(DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ReadOnlyCollection<Post> postCollection = GetPostCollection(dateTime, processDataStandardFormat, preWithCollection);
 | 
					        ReadOnlyCollection<Post> postCollection = GetPostCollection(dateTime, processDataStandardFormat, preWithCollection);
 | 
				
			||||||
        if (postCollection.Count != 0)
 | 
					        if (postCollection.Count != 0)
 | 
				
			||||||
@ -294,7 +302,7 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private ReadOnlyCollection<Post> GetPostCollection(DateTime dateTime, ProcessDataStandardFormat? processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
 | 
					    private ReadOnlyCollection<Post> GetPostCollection(DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        List<Post> results = new();
 | 
					        List<Post> results = new();
 | 
				
			||||||
        Post post;
 | 
					        Post post;
 | 
				
			||||||
@ -303,15 +311,10 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!_IsEAFHosted)
 | 
					            if (!_IsEAFHosted)
 | 
				
			||||||
                continue;
 | 
					                continue;
 | 
				
			||||||
            if (processDataStandardFormat is null)
 | 
					            if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
 | 
				
			||||||
                File.Move(preWith.MatchingFile, preWith.CheckFile);
 | 
					                wsResults = null;
 | 
				
			||||||
            else
 | 
					            ProcessDataStandardFormat.Write(preWith.CheckFile, processDataStandardFormat, wsResults);
 | 
				
			||||||
            {
 | 
					            File.Delete(preWith.MatchingFile);
 | 
				
			||||||
                if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
 | 
					 | 
				
			||||||
                    wsResults = null;
 | 
					 | 
				
			||||||
                ProcessDataStandardFormat.Write(preWith.CheckFile, processDataStandardFormat, wsResults);
 | 
					 | 
				
			||||||
                File.Delete(preWith.MatchingFile);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (Directory.Exists(preWith.NoWaitDirectory))
 | 
					            if (Directory.Exists(preWith.NoWaitDirectory))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                post = new(preWith.CheckFile, preWith.ErrFile);
 | 
					                post = new(preWith.CheckFile, preWith.ErrFile);
 | 
				
			||||||
@ -345,17 +348,10 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
    private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
 | 
					    private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, Array.Empty<Test>(), Array.Empty<JsonElement>(), new List<FileInfo>());
 | 
					        Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, Array.Empty<Test>(), Array.Empty<JsonElement>(), new List<FileInfo>());
 | 
				
			||||||
        ProcessDataStandardFormat? processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, _ProcessDataStandardFormatMapping);
 | 
					        ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, _ProcessDataStandardFormatMapping);
 | 
				
			||||||
        if (processDataStandardFormat is not null)
 | 
					        _Logistics = new Logistics(reportFullPath, processDataStandardFormat);
 | 
				
			||||||
            _Logistics = new Logistics(reportFullPath, processDataStandardFormat);
 | 
					        if (!_IsEAFHosted)
 | 
				
			||||||
        else
 | 
					            ProcessDataStandardFormat.Write("../../.pdsf", processDataStandardFormat, wsResults: null);
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
 | 
					 | 
				
			||||||
            _Logistics = new Logistics(reportFullPath, processDataStandardFormat);
 | 
					 | 
				
			||||||
            processDataStandardFormat = null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (!_IsEAFHosted && processDataStandardFormat is not null)
 | 
					 | 
				
			||||||
            ProcessDataStandardFormat.Write(".pdsf", processDataStandardFormat, wsResults: null);
 | 
					 | 
				
			||||||
        SetFileParameterLotIDToLogisticsMID();
 | 
					        SetFileParameterLotIDToLogisticsMID();
 | 
				
			||||||
        int numberLength = 2;
 | 
					        int numberLength = 2;
 | 
				
			||||||
        long ticks = dateTime.Ticks;
 | 
					        long ticks = dateTime.Ticks;
 | 
				
			||||||
@ -364,10 +360,16 @@ public class FileRead : Shared.FileRead, IFileRead
 | 
				
			|||||||
        ReadOnlyCollection<string> matchingFiles = GetMatchingFiles(ticks, reportFullPath, searchDirectories);
 | 
					        ReadOnlyCollection<string> matchingFiles = GetMatchingFiles(ticks, reportFullPath, searchDirectories);
 | 
				
			||||||
        if (matchingFiles.Count != searchDirectories.Count)
 | 
					        if (matchingFiles.Count != searchDirectories.Count)
 | 
				
			||||||
            throw new Exception($"Didn't find all files after {_BreakAfterSeconds} second(s)!");
 | 
					            throw new Exception($"Didn't find all files after {_BreakAfterSeconds} second(s)!");
 | 
				
			||||||
        try
 | 
					        if (_IsEAFHosted)
 | 
				
			||||||
        { CreatePointerFile(numberLength, parentParentDirectory, matchingFiles); }
 | 
					        {
 | 
				
			||||||
        catch (Exception) { }
 | 
					            try
 | 
				
			||||||
        ReadOnlyCollection<Pre> preCollection = GetPreCollection(numberLength, parentParentDirectory, matchingFiles);
 | 
					            { CreatePointerFile(numberLength, parentParentDirectory, matchingFiles); }
 | 
				
			||||||
 | 
					            catch (Exception) { }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
 | 
				
			||||||
 | 
					        List<txt.Description> descriptions = txt.ProcessData.GetDescriptions(jsonElements);
 | 
				
			||||||
 | 
					        bool mesEntityMatchesProcess = descriptions.Count > 0 && descriptions[0].MesEntity == descriptions[0].Reactor;
 | 
				
			||||||
 | 
					        ReadOnlyCollection<Pre> preCollection = GetPreCollection(numberLength, parentParentDirectory, matchingFiles, mesEntityMatchesProcess);
 | 
				
			||||||
        ReadOnlyCollection<PreWith> preWithCollection = GetPreWithCollection(preCollection);
 | 
					        ReadOnlyCollection<PreWith> preWithCollection = GetPreWithCollection(preCollection);
 | 
				
			||||||
        MoveCollection(dateTime, processDataStandardFormat, preWithCollection);
 | 
					        MoveCollection(dateTime, processDataStandardFormat, preWithCollection);
 | 
				
			||||||
        return results;
 | 
					        return results;
 | 
				
			||||||
 | 
				
			|||||||
@ -61,8 +61,8 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
    internal static string Archive(bool addSpaces = true, char separator = ' ') =>
 | 
					    internal static string Archive(bool addSpaces = true, char separator = ' ') =>
 | 
				
			||||||
        GetString(SearchFor.Archive, addSpaces, separator);
 | 
					        GetString(SearchFor.Archive, addSpaces, separator);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    internal static ProcessDataStandardFormat GetEmpty() =>
 | 
					    internal static ProcessDataStandardFormat GetEmpty(Logistics logistics) =>
 | 
				
			||||||
        new(new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), null, new(new string[] { "LOGISTICS_1" }), null);
 | 
					        new(new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), new(Array.Empty<string>()), null, new(logistics.Logistics1), null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    internal static List<string> PDSFToFixedWidth(string reportFullPath)
 | 
					    internal static List<string> PDSFToFixedWidth(string reportFullPath)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -214,25 +214,26 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
        return results.AsReadOnly();
 | 
					        return results.AsReadOnly();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    internal static ProcessDataStandardFormat? GetProcessDataStandardFormat(string reportFullPath, ProcessDataStandardFormatMapping pdsfMapping)
 | 
					    internal static ProcessDataStandardFormat GetProcessDataStandardFormat(string reportFullPath, ProcessDataStandardFormatMapping pdsfMapping)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ProcessDataStandardFormat? result;
 | 
					        ProcessDataStandardFormat result;
 | 
				
			||||||
        const int columnsLine = 6;
 | 
					        const int columnsLine = 6;
 | 
				
			||||||
        FileInfo fileInfo = new(reportFullPath);
 | 
					        FileInfo fileInfo = new(reportFullPath);
 | 
				
			||||||
        ProcessDataStandardFormat processDataStandardFormat = GetProcessDataStandardFormat(fileInfo.LastWriteTime, pdsfMapping.NewColumnNames.Count, columnsLine, fileInfo.FullName, lines: null);
 | 
					        ProcessDataStandardFormat processDataStandardFormat = GetProcessDataStandardFormat(fileInfo.LastWriteTime, columnsLine, fileInfo.FullName, lines: null);
 | 
				
			||||||
        JsonElement[]? jsonElements = GetArray(pdsfMapping.NewColumnNames.Count, processDataStandardFormat, lookForNumbers: false);
 | 
					        JsonElement[]? jsonElements = pdsfMapping.OldColumnNames.Count != pdsfMapping.ColumnIndices.Count ? null : GetFullArray(processDataStandardFormat);
 | 
				
			||||||
        if (jsonElements is null || jsonElements.Length == 0 || pdsfMapping.OldColumnNames.Count != pdsfMapping.ColumnIndices.Count)
 | 
					        JsonProperty[]? jsonProperties = jsonElements is null || jsonElements.Length == 0 ? null : jsonElements[0].EnumerateObject().ToArray();
 | 
				
			||||||
            result = null;
 | 
					        if (jsonElements is null || jsonProperties is null || jsonProperties.Length != pdsfMapping.NewColumnNames.Count)
 | 
				
			||||||
 | 
					            result = processDataStandardFormat;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            result = GetProcessDataStandardFormat(pdsfMapping, jsonElements, processDataStandardFormat);
 | 
					            result = GetProcessDataStandardFormat(pdsfMapping, jsonElements, processDataStandardFormat);
 | 
				
			||||||
            if (result.Sequence is null || result.Columns.Count == 0 || result.Body.Count == 0 || result.Logistics.Count == 0)
 | 
					            if (result.Sequence is null || result.Columns.Count == 0 || result.Body.Count == 0 || result.Logistics.Count == 0)
 | 
				
			||||||
                result = null;
 | 
					                result = processDataStandardFormat;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static ProcessDataStandardFormat GetProcessDataStandardFormat(DateTime lastWriteTime, int expectedColumns, int columnsLine, string path, string[]? lines)
 | 
					    private static ProcessDataStandardFormat GetProcessDataStandardFormat(DateTime lastWriteTime, int columnsLine, string path, string[]? lines)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        ProcessDataStandardFormat result;
 | 
					        ProcessDataStandardFormat result;
 | 
				
			||||||
        long sequence;
 | 
					        long sequence;
 | 
				
			||||||
@ -248,8 +249,6 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
        else
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            segments = lines[columnsLine].Split('\t');
 | 
					            segments = lines[columnsLine].Split('\t');
 | 
				
			||||||
            if (segments.Length != expectedColumns)
 | 
					 | 
				
			||||||
                segments = Array.Empty<string>();
 | 
					 | 
				
			||||||
            for (int i = 0; i < columnsLine; i++)
 | 
					            for (int i = 0; i < columnsLine; i++)
 | 
				
			||||||
                header.Add(lines[i]);
 | 
					                header.Add(lines[i]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -285,7 +284,7 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static JsonElement[]? GetArray(int expectedColumns, ProcessDataStandardFormat processDataStandardFormat, bool lookForNumbers)
 | 
					    private static JsonElement[]? GetFullArray(ProcessDataStandardFormat processDataStandardFormat)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        JsonElement[]? results;
 | 
					        JsonElement[]? results;
 | 
				
			||||||
        if (processDataStandardFormat.Body.Count == 0 || !processDataStandardFormat.Body[0].Contains('\t'))
 | 
					        if (processDataStandardFormat.Body.Count == 0 || !processDataStandardFormat.Body[0].Contains('\t'))
 | 
				
			||||||
@ -293,36 +292,18 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
        else
 | 
					        else
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            string value;
 | 
					            string value;
 | 
				
			||||||
            string[] segments;
 | 
					            List<string> segments;
 | 
				
			||||||
            List<string> lines = new();
 | 
					            List<string> lines = new();
 | 
				
			||||||
            StringBuilder stringBuilder = new();
 | 
					            StringBuilder stringBuilder = new();
 | 
				
			||||||
            foreach (string bodyLine in processDataStandardFormat.Body)
 | 
					            foreach (string bodyLine in processDataStandardFormat.Body)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _ = stringBuilder.Clear();
 | 
					                _ = stringBuilder.Clear();
 | 
				
			||||||
                _ = stringBuilder.Append('{');
 | 
					                _ = stringBuilder.Append('{');
 | 
				
			||||||
                segments = bodyLine.Split('\t');
 | 
					                segments = bodyLine.Split('\t').ToList();
 | 
				
			||||||
                if (segments.Length != expectedColumns)
 | 
					                for (int c = 0; c < segments.Count; c++)
 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
                if (!lookForNumbers)
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    for (int c = 0; c < segments.Length; c++)
 | 
					                    value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\");
 | 
				
			||||||
                    {
 | 
					                    _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\",");
 | 
				
			||||||
                        value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\");
 | 
					 | 
				
			||||||
                        _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\",");
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    for (int c = 0; c < segments.Length; c++)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\");
 | 
					 | 
				
			||||||
                        if (string.IsNullOrEmpty(value))
 | 
					 | 
				
			||||||
                            _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":").Append(value).Append("null,");
 | 
					 | 
				
			||||||
                        else if (value.All(char.IsDigit))
 | 
					 | 
				
			||||||
                            _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":").Append(value).Append(',');
 | 
					 | 
				
			||||||
                        else
 | 
					 | 
				
			||||||
                            _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\",");
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                _ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
 | 
					                _ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
 | 
				
			||||||
                _ = stringBuilder.AppendLine("}");
 | 
					                _ = stringBuilder.AppendLine("}");
 | 
				
			||||||
@ -379,6 +360,63 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static string GetJson(ProcessDataStandardFormat processDataStandardFormat)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (processDataStandardFormat.InputPDSF is null)
 | 
				
			||||||
 | 
					            throw new NullReferenceException(nameof(processDataStandardFormat.InputPDSF));
 | 
				
			||||||
 | 
					#pragma warning disable CA1845, IDE0057
 | 
				
			||||||
 | 
					        string result;
 | 
				
			||||||
 | 
					        string line;
 | 
				
			||||||
 | 
					        string value;
 | 
				
			||||||
 | 
					        string[] segments;
 | 
				
			||||||
 | 
					        List<string> lines = new();
 | 
				
			||||||
 | 
					        for (int i = 0; i < processDataStandardFormat.InputPDSF.Body.Count; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            line = "{";
 | 
				
			||||||
 | 
					            segments = processDataStandardFormat.InputPDSF.Body[i].Trim().Split('\t');
 | 
				
			||||||
 | 
					            if (segments.Length != processDataStandardFormat.InputPDSF.Columns.Count)
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            for (int c = 0; c < segments.Length; c++)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\");
 | 
				
			||||||
 | 
					                line += string.Concat('"', processDataStandardFormat.InputPDSF.Columns[c].Trim('"'), '"', ':', '"', value, '"', ',');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            line = string.Concat(line.Substring(0, line.Length - 1), '}');
 | 
				
			||||||
 | 
					            lines.Add(line);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        result = string.Concat(
 | 
				
			||||||
 | 
					            '{',
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            "Count",
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            ": ",            
 | 
				
			||||||
 | 
					            processDataStandardFormat.Body.Count,
 | 
				
			||||||
 | 
					            ',',
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            "Records",
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            ": ",
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            '[',
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            string.Join($",{Environment.NewLine}", lines),
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            ']',
 | 
				
			||||||
 | 
					            ',',
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            "Sequence",
 | 
				
			||||||
 | 
					            '"',
 | 
				
			||||||
 | 
					            ": ",            
 | 
				
			||||||
 | 
					            processDataStandardFormat.Sequence,
 | 
				
			||||||
 | 
					            Environment.NewLine,
 | 
				
			||||||
 | 
					            '}');
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					#pragma warning restore CA1845, IDE0057
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    internal static void Write(string path, ProcessDataStandardFormat processDataStandardFormat, List<Metrology.WS.Results>? wsResults)
 | 
					    internal static void Write(string path, ProcessDataStandardFormat processDataStandardFormat, List<Metrology.WS.Results>? wsResults)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        List<string> results = new();
 | 
					        List<string> results = new();
 | 
				
			||||||
@ -418,12 +456,12 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
                    results.Add($"{segments[0]}\t{segments[1][0]}_HeaderId={wsResults[0].HeaderId};{segments[1][0]}_SubgroupId={wsResults[0].SubgroupId};{segments[1]}");
 | 
					                    results.Add($"{segments[0]}\t{segments[1][0]}_HeaderId={wsResults[0].HeaderId};{segments[1][0]}_SubgroupId={wsResults[0].SubgroupId};{segments[1]}");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        results.Add("EOF");
 | 
					        results.Add("END_HEADER");
 | 
				
			||||||
        if (processDataStandardFormat.InputPDSF is not null)
 | 
					        if (processDataStandardFormat.InputPDSF is not null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            results.Add(string.Empty);
 | 
				
			||||||
            List<char> hyphens = new();
 | 
					            List<char> hyphens = new();
 | 
				
			||||||
            results.AddRange(processDataStandardFormat.InputPDSF.Header.Select(l => l.Replace('\t', '|')));
 | 
					            results.AddRange(processDataStandardFormat.InputPDSF.Header.Select(l => l.Replace('\t', '|')));
 | 
				
			||||||
            results.Add(string.Empty);
 | 
					 | 
				
			||||||
            results.Add($"|{string.Join("|", processDataStandardFormat.InputPDSF.Columns)}|");
 | 
					            results.Add($"|{string.Join("|", processDataStandardFormat.InputPDSF.Columns)}|");
 | 
				
			||||||
            for (int i = 0; i < processDataStandardFormat.InputPDSF.Columns.Count; i++)
 | 
					            for (int i = 0; i < processDataStandardFormat.InputPDSF.Columns.Count; i++)
 | 
				
			||||||
                hyphens.Add('-');
 | 
					                hyphens.Add('-');
 | 
				
			||||||
@ -431,6 +469,11 @@ internal class ProcessDataStandardFormat
 | 
				
			|||||||
            results.AddRange(processDataStandardFormat.InputPDSF.Body.Select(l => l.Replace('\t', '|')));
 | 
					            results.AddRange(processDataStandardFormat.InputPDSF.Body.Select(l => l.Replace('\t', '|')));
 | 
				
			||||||
            results.Add(string.Empty);
 | 
					            results.Add(string.Empty);
 | 
				
			||||||
            results.AddRange(processDataStandardFormat.InputPDSF.Footer.Select(l => l.Replace('\t', '|')));
 | 
					            results.AddRange(processDataStandardFormat.InputPDSF.Footer.Select(l => l.Replace('\t', '|')));
 | 
				
			||||||
 | 
					            results.Add(string.Empty);
 | 
				
			||||||
 | 
					            results.Add("EOF");
 | 
				
			||||||
 | 
					            results.Add(string.Empty);
 | 
				
			||||||
 | 
					            string json = GetJson(processDataStandardFormat);
 | 
				
			||||||
 | 
					            results.Add(json);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        File.WriteAllText(path, string.Join(Environment.NewLine, results));
 | 
					        File.WriteAllText(path, string.Join(Environment.NewLine, results));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -1182,7 +1182,7 @@ public class AdaptationTesting : ISMTP
 | 
				
			|||||||
            Assert.IsNotNull(extractResult.Item3);
 | 
					            Assert.IsNotNull(extractResult.Item3);
 | 
				
			||||||
            Assert.IsNotNull(extractResult.Item4);
 | 
					            Assert.IsNotNull(extractResult.Item4);
 | 
				
			||||||
            if (!validatePDSF)
 | 
					            if (!validatePDSF)
 | 
				
			||||||
                _ = GetProcessDataStandardFormat(fileRead, logistics, extractResult, ProcessDataStandardFormat.GetEmpty());
 | 
					                _ = GetProcessDataStandardFormat(fileRead, logistics, extractResult, ProcessDataStandardFormat.GetEmpty(logistics));
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Assert.IsTrue(extractResult.Item3.Length > 0, "extractResult Array Length check!");
 | 
					                Assert.IsTrue(extractResult.Item3.Length > 0, "extractResult Array Length check!");
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user