diff --git a/Adaptation/FileHandlers/CellInstanceConnectionName.cs b/Adaptation/FileHandlers/CellInstanceConnectionName.cs
index f749d89..8fc7e72 100644
--- a/Adaptation/FileHandlers/CellInstanceConnectionName.cs
+++ b/Adaptation/FileHandlers/CellInstanceConnectionName.cs
@@ -22,7 +22,6 @@ public class CellInstanceConnectionName
nameof(OpenInsight) => new OpenInsight.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
nameof(OpenInsightMetrologyViewer) => new OpenInsightMetrologyViewer.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
nameof(OpenInsightMetrologyViewerAttachments) => new OpenInsightMetrologyViewerAttachments.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
- nameof(pdsf) => new pdsf.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
nameof(pcl) => new pcl.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
nameof(Processed) => new Processed.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
nameof(SPaCe) => new SPaCe.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
diff --git a/Adaptation/FileHandlers/pdsf/Constant.cs b/Adaptation/FileHandlers/pdsf/Constant.cs
deleted file mode 100644
index 5f652e1..0000000
--- a/Adaptation/FileHandlers/pdsf/Constant.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Adaptation.FileHandlers.pdsf;
-
-internal class Constant
-{
-
- public int Take { get; } = 11;
- public string Site { get; } = "Site: ";
- public string Multiple { get; } = "MULTIPLE";
- public string SummaryLine { get; } = "SUMMARY A A";
- public string LastUnits { get; } = "Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %";
- public string LastUnitsB { get; } = "Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %";
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Convert.cs b/Adaptation/FileHandlers/pdsf/Convert.cs
deleted file mode 100644
index ed4df9b..0000000
--- a/Adaptation/FileHandlers/pdsf/Convert.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using Adaptation.Shared;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Diagnostics;
-using System.IO;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-internal class Convert
-{
-
- ///
- /// Convert the raw data file to parsable file format - in this case from PCL to PDF
- ///
- /// source file to be converted to PDF
- ///
- private static string ConvertSourceFileToPdf(Logistics logistics, string ghostPCLFileName)
- {
- string result = Path.ChangeExtension(logistics.ReportFullPath, ".pdf");
- if (!File.Exists(result))
- {
- //string arguments = string.Concat("-i \"", sourceFile, "\" -o \"", result, "\"");
- string arguments = string.Concat("-dSAFER -dBATCH -dNOPAUSE -dFIXEDMEDIA -dFitPage -dAutoRotatePages=/All -dDEVICEWIDTHPOINTS=792 -dDEVICEHEIGHTPOINTS=612 -sOutputFile=\"", result, "\" -sDEVICE=pdfwrite \"", logistics.ReportFullPath, "\"");
- //Process process = Process.Start(configData.LincPDFCFileName, arguments);
- Process process = Process.Start(ghostPCLFileName, arguments);
- _ = process.WaitForExit(30000);
- if (!File.Exists(result))
- throw new Exception("PDF file wasn't created");
- }
- return result;
- }
-
- private static ReadOnlyCollection GetTextFromPDF(string pdfTextStripperFileName, string sourceFileNamePdf, string altHeaderFileName)
- {
- string[] result;
- ProcessStartInfo processStartInfo = new(pdfTextStripperFileName, $"s \"{sourceFileNamePdf}\"")
- {
- UseShellExecute = false,
- RedirectStandardError = true,
- RedirectStandardOutput = true,
- };
- Process process = Process.Start(processStartInfo);
- _ = process.WaitForExit(30000);
- if (!File.Exists(altHeaderFileName))
- result = Array.Empty();
- else
- result = File.ReadAllLines(altHeaderFileName);
- return new(result);
- }
-
- internal static ReadOnlyCollection PDF(Logistics logistics, string ghostPCLFileName, string pdfTextStripperFileName, List fileInfoCollection)
- {
- ReadOnlyCollection result;
- string sourceFileNamePdf = ConvertSourceFileToPdf(logistics, ghostPCLFileName);
- fileInfoCollection.Add(new FileInfo(sourceFileNamePdf));
- string altHeaderFileName = Path.ChangeExtension(logistics.ReportFullPath, ".txt");
- if (File.Exists(altHeaderFileName))
- {
- result = new(File.ReadAllLines(altHeaderFileName));
- fileInfoCollection.Add(new FileInfo(altHeaderFileName));
- }
- else
- {
- try
- {
- //Pdfbox, IKVM.AWT.WinForms
- org.apache.pdfbox.pdmodel.PDDocument pdfDocument = org.apache.pdfbox.pdmodel.PDDocument.load(sourceFileNamePdf);
- org.apache.pdfbox.util.PDFTextStripper stripper = new();
- string text = stripper.getText(pdfDocument);
- pdfDocument.close();
- File.AppendAllText(altHeaderFileName, text);
- fileInfoCollection.Add(new FileInfo(altHeaderFileName));
- result = new(text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None));
- }
- catch (MissingMethodException)
- {
- if (!File.Exists(pdfTextStripperFileName))
- throw;
- result = GetTextFromPDF(pdfTextStripperFileName, sourceFileNamePdf, altHeaderFileName);
- if (result.Count == 0)
- throw;
- fileInfoCollection.Add(new FileInfo(altHeaderFileName));
- }
- }
- return result;
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/FileRead.cs b/Adaptation/FileHandlers/pdsf/FileRead.cs
deleted file mode 100644
index 3cfffff..0000000
--- a/Adaptation/FileHandlers/pdsf/FileRead.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
-using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
-using Adaptation.Shared;
-using Adaptation.Shared.Duplicator;
-using Adaptation.Shared.Methods;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Text.Json;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-public class FileRead : Shared.FileRead, IFileRead
-{
-
- private readonly string _GhostPCLFileName;
- private readonly string _PDFTextStripperFileName;
-
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
- {
- _MinFileLength = 150;
- _NullData = string.Empty;
- _Logistics = new(this);
- if (_FileParameter is null)
- throw new Exception(cellInstanceConnectionName);
- if (_ModelObjectParameterDefinitions is null)
- throw new Exception(cellInstanceConnectionName);
- if (_IsDuplicator)
- throw new Exception(cellInstanceConnectionName);
- _GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe");
- if (!File.Exists(_GhostPCLFileName))
- throw new Exception("Ghost PCL FileName doesn't Exist!");
- _PDFTextStripperFileName = Path.Combine(AppContext.BaseDirectory, "PDF-Text-Stripper.exe");
- if (!File.Exists(_PDFTextStripperFileName))
- throw new Exception("PDF-Text-Stripper FileName doesn't Exist!");
- if (_IsEAFHosted)
- NestExistingFiles(_FileConnectorConfiguration);
- }
-
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults);
-
- void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
-
- string IFileRead.GetEventDescription()
- {
- string result = _Description.GetEventDescription();
- return result;
- }
-
- List IFileRead.GetHeaderNames()
- {
- List results = _Description.GetHeaderNames();
- return results;
- }
-
- string[] IFileRead.Move(Tuple> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
- {
- string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
- return results;
- }
-
- JsonProperty[] IFileRead.GetDefault()
- {
- JsonProperty[] results = _Description.GetDefault(this, _Logistics);
- return results;
- }
-
- Dictionary IFileRead.GetDisplayNamesJsonElement()
- {
- Dictionary results = _Description.GetDisplayNamesJsonElement(this);
- return results;
- }
-
- List IFileRead.GetDescriptions(IFileRead fileRead, List tests, IProcessData processData)
- {
- List results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
- return results;
- }
-
- Tuple> IFileRead.GetExtractResult(string reportFullPath, string eventName)
- {
- Tuple> results;
- if (string.IsNullOrEmpty(eventName))
- throw new Exception();
- _ReportFullPath = reportFullPath;
- DateTime dateTime = DateTime.Now;
- results = GetExtractResult(reportFullPath, dateTime);
- if (results.Item3 is null)
- results = new Tuple>(results.Item1, Array.Empty(), JsonSerializer.Deserialize("[]"), results.Item4);
- if (results.Item3.Length > 0 && _IsEAFHosted)
- WritePDSF(this, results.Item3);
- UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
- return results;
- }
-
- Tuple> IFileRead.ReExtract()
- {
- Tuple> results;
- List headerNames = _Description.GetHeaderNames();
- Dictionary keyValuePairs = _Description.GetDisplayNamesJsonElement(this);
- results = ReExtract(this, headerNames, keyValuePairs);
- return results;
- }
-
-#nullable enable
-
- private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
- {
- Tuple> results;
- string result;
- JsonElement[] jsonElements;
- Test[] tests = Array.Empty();
- List fileInfoCollection = new();
- ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
- _Logistics = new Logistics(reportFullPath, processDataStandardFormat);
- SetFileParameterLotIDToLogisticsMID();
- ReadOnlyCollection lines = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, fileInfoCollection);
- Run? run = Run.Get(_Logistics, fileInfoCollection, lines);
- if (run is null)
- {
- jsonElements = Array.Empty();
- result = string.Concat("A) No Data - ", dateTime.Ticks);
- results = new(result, tests, jsonElements, fileInfoCollection);
- }
- else
- {
- result = string.Join(Environment.NewLine, _Logistics.Logistics1);
- jsonElements = _IsEAFHosted ? Array.Empty() : ProcessDataStandardFormat.GetArray(processDataStandardFormat);
- results = new(result, tests, jsonElements, fileInfoCollection);
- }
- return results;
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Header.cs b/Adaptation/FileHandlers/pdsf/Header.cs
deleted file mode 100644
index bfbf0b2..0000000
--- a/Adaptation/FileHandlers/pdsf/Header.cs
+++ /dev/null
@@ -1,169 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class Header
-{
-
- [JsonConstructor]
- public Header(string @operator, string startVoltage, string wafer, string stopVoltage, string lot, string rampRate, string plan, string gLimit, string date, string time, string setupFile, string waferSize, string folder, string ccomp, string pattern, string area, string condType, string rhoMethod, string model)
- {
- Operator = @operator;
- StartVoltage = startVoltage;
- Wafer = wafer;
- StopVoltage = stopVoltage;
- Lot = lot;
- RampRate = rampRate;
- Plan = plan;
- GLimit = gLimit;
- Date = date;
- Time = time;
- SetupFile = setupFile;
- WaferSize = waferSize;
- Folder = folder;
- Ccomp = ccomp;
- Pattern = pattern;
- Area = area;
- CondType = condType;
- RhoMethod = rhoMethod;
- Model = model;
- }
-
- [JsonPropertyName("Operator")] public string Operator { get; }
- [JsonPropertyName("Start Voltage")] public string StartVoltage { get; }
- [JsonPropertyName("Wafer")] public string Wafer { get; }
- [JsonPropertyName("Stop Voltage")] public string StopVoltage { get; }
- [JsonPropertyName("Lot")] public string Lot { get; }
- [JsonPropertyName("Ramp Rate")] public string RampRate { get; }
- [JsonPropertyName("Plan")] public string Plan { get; }
- [JsonPropertyName("G limit")] public string GLimit { get; }
- [JsonPropertyName("Date")] public string Date { get; }
- [JsonPropertyName("Time")] public string Time { get; }
- [JsonPropertyName("Setup File")] public string SetupFile { get; }
- [JsonPropertyName("Wafer size")] public string WaferSize { get; }
- [JsonPropertyName("Folder")] public string Folder { get; }
- [JsonPropertyName("Ccomp")] public string Ccomp { get; }
- [JsonPropertyName("Pattern")] public string Pattern { get; }
- [JsonPropertyName("Area")] public string Area { get; }
- [JsonPropertyName("Cond Type")] public string CondType { get; }
- [JsonPropertyName("Rho Method")] public string RhoMethod { get; }
- [JsonPropertyName("Model")] public string Model { get; }
-
- private static string[] GetRemove() =>
- new string[]
- {
- " L L",
- " O O",
- " G G",
- " C C",
- " O O",
- " N N",
- " C C",
- " E E",
- " N N",
- " T T",
- " R R",
- " A A",
- " T T",
- " I I",
- " O O",
- " N N"
- };
-
- public static Header Get() =>
- new(string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty);
-
- private static ReadOnlyCollection GetJsonProperties()
- {
- JsonProperty[] results;
- string json;
- Header header = Get();
- json = JsonSerializer.Serialize(header);
- JsonElement jsonElement = JsonSerializer.Deserialize(json);
- results = jsonElement.EnumerateObject().ToArray();
- return new(results);
- }
-
- public static Header? Get(Constant constant, ReadOnlyCollection lines)
- {
- Header? result;
- string json;
- string check;
- string[] segments;
- string[] segmentsB;
- string[] segmentsC;
- bool found = false;
- string[] remove = GetRemove();
- Dictionary keyValuePairs = new();
- ReadOnlyCollection jsonProperties = GetJsonProperties();
- foreach (string line in lines)
- {
- if (line.Contains(constant.Site))
- found = true;
- if (!found)
- continue;
- if (line == constant.SummaryLine)
- break;
- foreach (JsonProperty jsonProperty in jsonProperties)
- {
- segments = line.Split(new string[] { $"{jsonProperty.Name}:", $"{jsonProperty.Name} :" }, StringSplitOptions.None);
- if (segments.Length < 2)
- continue;
- check = segments[1].Trim();
- foreach (JsonProperty jsonPropertyB in jsonProperties)
- {
- segmentsB = check.Split(new string[] { $"{jsonPropertyB.Name}:", $"{jsonPropertyB.Name} :" }, StringSplitOptions.None);
- if (segmentsB.Length > 1)
- check = segmentsB[0].Trim();
- }
- foreach (string r in remove)
- {
- segmentsC = check.Split(new string[] { r }, StringSplitOptions.None);
- if (segmentsC.Length > 1)
- check = segmentsC[0].Trim();
- }
- keyValuePairs.Add(jsonProperty.Name, check);
- }
- }
- if (keyValuePairs.Count != jsonProperties.Count)
- result = null;
- else
- {
- json = JsonSerializer.Serialize(keyValuePairs);
- result = JsonSerializer.Deserialize(json, HeaderSourceGenerationContext.Default.Header) ?? throw new NullReferenceException(nameof(result));
- }
- return result;
- }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(Header))]
-internal partial class HeaderSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Point.cs b/Adaptation/FileHandlers/pdsf/Point.cs
deleted file mode 100644
index a4ab318..0000000
--- a/Adaptation/FileHandlers/pdsf/Point.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class Point
-{
-
- public Point(string site, string x, string y, string nAvg, string rhoAvg, string nsl, string rhosl, string vd, string phase, string flatZ, string grade, string xLeft, string xRight, string bottomY, string topY)
- {
- Site = site;
- X = x;
- Y = y;
- NAvg = nAvg;
- RhoAvg = rhoAvg;
- Nsl = nsl;
- Rhosl = rhosl;
- Vd = vd;
- Phase = phase;
- FlatZ = flatZ;
- Grade = grade;
- XLeft = xLeft;
- XRight = xRight;
- BottomY = bottomY;
- TopY = topY;
- }
-
- [JsonPropertyName("Site")] public string Site { get; }
- [JsonPropertyName("X")] public string X { get; }
- [JsonPropertyName("Y")] public string Y { get; }
- [JsonPropertyName("Navg")] public string NAvg { get; }
- [JsonPropertyName("Rhoavg")] public string RhoAvg { get; }
- [JsonPropertyName("Nsl")] public string Nsl { get; }
- [JsonPropertyName("Rhosl")] public string Rhosl { get; }
- [JsonPropertyName("Vd")] public string Vd { get; }
- [JsonPropertyName("Phase")] public string Phase { get; }
- [JsonPropertyName("Flat Z")] public string FlatZ { get; }
- [JsonPropertyName("Grade")] public string Grade { get; }
- [JsonPropertyName("X Left")] public string XLeft { get; }
- [JsonPropertyName("X Right")] public string XRight { get; }
- [JsonPropertyName("Bottom Y")] public string BottomY { get; }
- [JsonPropertyName("Top Y")] public string TopY { get; }
-
- public static Point Get() =>
- new(string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty);
-
- public static ReadOnlyCollection GetCollection(Constant constant, ReadOnlyCollection lines)
- {
- List results = new();
- string s;
- string line;
- Point point;
- string[] segments;
- string[] segmentsB;
- bool found = false;
- string[] segmentsC;
- bool foundB = false;
- int x = constant.Take - 2;
- List sites = new();
- for (int i = 0; i < lines.Count; i++)
- {
- line = lines[i];
- segmentsC = line.Split(new string[] { constant.Site }, StringSplitOptions.RemoveEmptyEntries);
- if (segmentsC.Length > 1)
- {
- foreach (string segment in segmentsC)
- sites.Add(segment.Trim());
- }
- if (line == constant.SummaryLine)
- {
- sites.RemoveAt(0);
- found = true;
- }
- if (!found)
- continue;
- if (!foundB && line.Contains(constant.Multiple))
- foundB = true;
- if (line != constant.LastUnitsB)
- continue;
- if (foundB)
- {
- foundB = false;
- continue;
- }
- for (int j = 0; j < sites.Count; j++)
- {
- s = sites[j];
- if (i + constant.Take > lines.Count)
- break;
- segments = s.Split(new string[] { "(", ",", ")" }, StringSplitOptions.None);
- if (segments.Length < 2)
- break;
- segmentsB = lines[i + x].Split(' ');
- if (segmentsB.Length < 2)
- break;
- point = new(site: segments[0].Trim(),
- x: segments[1].Trim(),
- y: segments[2].Trim(),
- nAvg: lines[i + 1].Trim(),
- nsl: lines[i + 2].Trim(),
- vd: lines[i + 3].Trim(),
- flatZ: lines[i + 4].Trim(),
- rhoAvg: lines[i + 5].Trim(),
- rhosl: lines[i + 6].Trim(),
- phase: lines[i + 7].Trim(),
- grade: lines[i + 8].Trim(),
- xLeft: segmentsB[0],
- xRight: segmentsB[1],
- bottomY: lines[i + 10].Trim(),
- topY: lines[i + 11].Trim());
- results.Add(point);
- i += constant.Take;
- }
- sites.Clear();
- }
- return new(results);
- }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(Point))]
-internal partial class PointSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Row.cs b/Adaptation/FileHandlers/pdsf/Row.cs
deleted file mode 100644
index 7fb7cc4..0000000
--- a/Adaptation/FileHandlers/pdsf/Row.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class Row
-{
-
- public Row(Run run, int i)
- {
- Index = i;
- //
- Operator = run.Header.Operator;
- StartVoltage = run.Header.StartVoltage;
- Wafer = run.Header.Wafer;
- StopVoltage = run.Header.StopVoltage;
- Lot = run.Header.Lot;
- RampRate = run.Header.RampRate;
- Plan = run.Header.Plan;
- GLimit = run.Header.GLimit;
- Date = run.Header.Date;
- Time = run.Header.Time;
- SetupFile = run.Header.SetupFile;
- WaferSize = run.Header.WaferSize;
- Folder = run.Header.Folder;
- Ccomp = run.Header.Ccomp;
- Pattern = run.Header.Pattern;
- Area = run.Header.Area;
- CondType = run.Header.CondType;
- RhoMethod = run.Header.RhoMethod;
- Model = run.Header.Model;
- if (run.Summary.Mean is null)
- {
- MeanNAvg = string.Empty;
- MeanNsl = string.Empty;
- MeanVd = string.Empty;
- MeanFlatZ = string.Empty;
- MeanRhoAvg = string.Empty;
- MeanRhosl = string.Empty;
- MeanPhase = string.Empty;
- MeanGrade = string.Empty;
- MeanRs = string.Empty;
- }
- else
- {
- MeanNAvg = run.Summary.Mean.NAvg;
- MeanNsl = run.Summary.Mean.Nsl;
- MeanVd = run.Summary.Mean.Vd;
- MeanFlatZ = run.Summary.Mean.FlatZ;
- MeanRhoAvg = run.Summary.Mean.RhoAvg;
- MeanRhosl = run.Summary.Mean.Rhosl;
- MeanPhase = run.Summary.Mean.Phase;
- MeanGrade = run.Summary.Mean.Grade;
- MeanRs = run.Summary.Mean.Rs;
- }
- if (run.Summary.StandardDeviationPercentage is null)
- {
- StandardDeviationPercentageNAvg = string.Empty;
- StandardDeviationPercentageNsl = string.Empty;
- StandardDeviationPercentageVd = string.Empty;
- StandardDeviationPercentageFlatZ = string.Empty;
- StandardDeviationPercentageRhoAvg = string.Empty;
- StandardDeviationPercentageRhosl = string.Empty;
- StandardDeviationPercentagePhase = string.Empty;
- StandardDeviationPercentageGrade = string.Empty;
- StandardDeviationPercentageRs = string.Empty;
- }
- else
- {
- StandardDeviationPercentageNAvg = run.Summary.StandardDeviationPercentage.NAvg;
- StandardDeviationPercentageNsl = run.Summary.StandardDeviationPercentage.Nsl;
- StandardDeviationPercentageVd = run.Summary.StandardDeviationPercentage.Vd;
- StandardDeviationPercentageFlatZ = run.Summary.StandardDeviationPercentage.FlatZ;
- StandardDeviationPercentageRhoAvg = run.Summary.StandardDeviationPercentage.RhoAvg;
- StandardDeviationPercentageRhosl = run.Summary.StandardDeviationPercentage.Rhosl;
- StandardDeviationPercentagePhase = run.Summary.StandardDeviationPercentage.Phase;
- StandardDeviationPercentageGrade = run.Summary.StandardDeviationPercentage.Grade;
- StandardDeviationPercentageRs = run.Summary.StandardDeviationPercentage.Rs;
- }
- if (run.Summary.RadialGradient is null)
- {
- RadialGradientNAvg = string.Empty;
- RadialGradientNsl = string.Empty;
- RadialGradientVd = string.Empty;
- RadialGradientFlatZ = string.Empty;
- RadialGradientRhoAvg = string.Empty;
- RadialGradientRhosl = string.Empty;
- RadialGradientPhase = string.Empty;
- RadialGradientGrade = string.Empty;
- RadialGradientRs = string.Empty;
- }
- else
- {
- RadialGradientNAvg = run.Summary.RadialGradient.NAvg;
- RadialGradientNsl = run.Summary.RadialGradient.Nsl;
- RadialGradientVd = run.Summary.RadialGradient.Vd;
- RadialGradientFlatZ = run.Summary.RadialGradient.FlatZ;
- RadialGradientRhoAvg = run.Summary.RadialGradient.RhoAvg;
- RadialGradientRhosl = run.Summary.RadialGradient.Rhosl;
- RadialGradientPhase = run.Summary.RadialGradient.Phase;
- RadialGradientGrade = run.Summary.RadialGradient.Grade;
- RadialGradientRs = run.Summary.RadialGradient.Rs;
- }
- Site = run.Points[i].Site;
- X = run.Points[i].X;
- Y = run.Points[i].Y;
- NAvg = run.Points[i].NAvg;
- RhoAvg = run.Points[i].RhoAvg;
- Nsl = run.Points[i].Nsl;
- Rhosl = run.Points[i].Rhosl;
- Vd = run.Points[i].Vd;
- Phase = run.Points[i].Phase;
- FlatZ = run.Points[i].FlatZ;
- Grade = run.Points[i].Grade;
- XLeft = run.Points[i].XLeft;
- XRight = run.Points[i].XRight;
- BottomY = run.Points[i].BottomY;
- TopY = run.Points[i].TopY;
- }
-
- public int Index { get; }
- //
- public string Operator { get; }
- public string StartVoltage { get; }
- public string Wafer { get; }
- public string StopVoltage { get; }
- public string Lot { get; }
- public string RampRate { get; }
- public string Plan { get; }
- public string GLimit { get; }
- public string Date { get; }
- public string Time { get; }
- public string SetupFile { get; }
- public string WaferSize { get; }
- public string Folder { get; }
- public string Ccomp { get; }
- public string Pattern { get; }
- public string Area { get; }
- public string CondType { get; }
- public string RhoMethod { get; }
- public string Model { get; }
- //
- public string MeanNAvg { get; }
- public string MeanNsl { get; }
- public string MeanVd { get; }
- public string MeanFlatZ { get; }
- public string MeanRhoAvg { get; }
- public string MeanRhosl { get; }
- public string MeanPhase { get; }
- public string MeanGrade { get; }
- public string MeanRs { get; }
- //
- public string StandardDeviationPercentageNAvg { get; }
- public string StandardDeviationPercentageNsl { get; }
- public string StandardDeviationPercentageVd { get; }
- public string StandardDeviationPercentageFlatZ { get; }
- public string StandardDeviationPercentageRhoAvg { get; }
- public string StandardDeviationPercentageRhosl { get; }
- public string StandardDeviationPercentagePhase { get; }
- public string StandardDeviationPercentageGrade { get; }
- public string StandardDeviationPercentageRs { get; }
- //
- public string RadialGradientNAvg { get; }
- public string RadialGradientNsl { get; }
- public string RadialGradientVd { get; }
- public string RadialGradientFlatZ { get; }
- public string RadialGradientRhoAvg { get; }
- public string RadialGradientRhosl { get; }
- public string RadialGradientPhase { get; }
- public string RadialGradientGrade { get; }
- public string RadialGradientRs { get; }
- //
- public string Site { get; }
- public string X { get; }
- public string Y { get; }
- public string NAvg { get; }
- public string RhoAvg { get; }
- public string Nsl { get; }
- public string Rhosl { get; }
- public string Vd { get; }
- public string Phase { get; }
- public string FlatZ { get; }
- public string Grade { get; }
- public string XLeft { get; }
- public string XRight { get; }
- public string BottomY { get; }
- public string TopY { get; }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(Row))]
-internal partial class RowSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Run.cs b/Adaptation/FileHandlers/pdsf/Run.cs
deleted file mode 100644
index 0aca636..0000000
--- a/Adaptation/FileHandlers/pdsf/Run.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-using Adaptation.Shared;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Text;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class Run
-{
-
- public Run(Header header, Summary summary, ReadOnlyCollection points)
- {
- Header = header;
- Summary = summary;
- Points = points;
- }
-
- public Header Header { get; }
- public Summary Summary { get; }
- public ReadOnlyCollection Points { get; }
-
- private static ReadOnlyCollection FilterLines(ReadOnlyCollection collection)
- {
- List results = new();
- foreach (string line in collection)
- {
- if (string.IsNullOrEmpty(line) || line is "*" or "@")
- continue;
- if (line.Length < 3 || line[0] is not '*' and not '@' || line[1] != ' ')
- results.Add(line);
- else
- results.Add(line.Substring(2));
- }
- return new(results);
- }
-
- private static void WriteJson(Logistics logistics, List fileInfoCollection, Run result)
- {
- FileInfo fileInfo = new($"{logistics.ReportFullPath}.run.json");
- string json = JsonSerializer.Serialize(result, RunSourceGenerationContext.Default.Run);
- File.WriteAllText(fileInfo.FullName, json);
- File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence);
- fileInfoCollection.Add(fileInfo);
- }
-
- private static ReadOnlyCollection GetLines(Logistics logistics, JsonElement[]? jsonElements)
- {
- List results = new();
- int columns = 0;
- StringBuilder stringBuilder = new();
- results.Add($"\"Count\",{jsonElements?.Length}");
- results.Add($"\"{nameof(logistics.Sequence)}\",\"{logistics.Sequence}\"");
- results.Add($"\"{nameof(logistics.MesEntity)}\",\"{logistics.MesEntity}\"");
- string dateTimeFromSequence = logistics.DateTimeFromSequence.ToString("MM/dd/yyyy hh:mm:ss tt");
- for (int i = 0; i < jsonElements?.Length;)
- {
- _ = stringBuilder.Append('"').Append(nameof(logistics.DateTimeFromSequence)).Append('"').Append(',');
- foreach (JsonProperty jsonProperty in jsonElements[0].EnumerateObject())
- {
- columns += 1;
- _ = stringBuilder.Append('"').Append(jsonProperty.Name).Append('"').Append(',');
- }
- break;
- }
- if (jsonElements?.Length != 0)
- _ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
- results.Add(stringBuilder.ToString());
- for (int i = 0; i < jsonElements?.Length; i++)
- {
- _ = stringBuilder.Clear();
- _ = stringBuilder.Append('"').Append(dateTimeFromSequence).Append('"').Append(',');
- foreach (JsonProperty jsonProperty in jsonElements[i].EnumerateObject())
- {
- if (jsonProperty.Value.ValueKind == JsonValueKind.Object)
- _ = stringBuilder.Append(',');
- else if (jsonProperty.Value.ValueKind != JsonValueKind.String)
- _ = stringBuilder.Append(jsonProperty.Value).Append(',');
- else
- _ = stringBuilder.Append('"').Append(jsonProperty.Value).Append('"').Append(',');
- }
- _ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
- results.Add(stringBuilder.ToString());
- }
- return results.AsReadOnly();
- }
-
- private static void WriteCommaSeparatedValues(Logistics logistics, Run run)
- {
- List results = new();
- Row row;
- for (int i = 0; i < run.Points.Count; i++)
- {
- row = new(run, i);
- results.Add(row);
- }
- string json = JsonSerializer.Serialize(results);
- JsonElement[]? jsonElements = JsonSerializer.Deserialize(json);
- ReadOnlyCollection lines = GetLines(logistics, jsonElements);
- File.WriteAllText($"{logistics.ReportFullPath}.csv", string.Join(Environment.NewLine, lines));
- }
-
- public static Run? Get(Logistics logistics, List fileInfoCollection, ReadOnlyCollection collection)
- {
- Run? result;
- Constant constant = new();
- ReadOnlyCollection lines = FilterLines(collection);
- if (collection.Count <= constant.Take)
- result = null;
- else
- {
- Header? header = Header.Get(constant, lines);
- if (header is null)
- result = null;
- else
- {
- Summary? summary = SummarySegment.Get(constant, lines);
- if (summary is null)
- result = null;
- else
- {
- ReadOnlyCollection points = Point.GetCollection(constant, lines) ?? throw new NullReferenceException(nameof(summary));
- if (points.Count == 0)
- result = null;
- else
- {
- result = new(header, summary, points);
- WriteJson(logistics, fileInfoCollection, result);
- WriteCommaSeparatedValues(logistics, result);
- }
- }
- }
- }
- return result;
- }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(Run))]
-internal partial class RunSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/Summary.cs b/Adaptation/FileHandlers/pdsf/Summary.cs
deleted file mode 100644
index 0ca4cb7..0000000
--- a/Adaptation/FileHandlers/pdsf/Summary.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class Summary
-{
-
- public Summary(SummarySegment? mean, SummarySegment? standardDeviationPercentage, SummarySegment? radialGradient)
- {
- Mean = mean;
- StandardDeviationPercentage = standardDeviationPercentage;
- RadialGradient = radialGradient;
- }
-
- public SummarySegment? Mean { get; }
- public SummarySegment? StandardDeviationPercentage { get; }
- public SummarySegment? RadialGradient { get; }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(Summary))]
-internal partial class SummarySourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pdsf/SummarySegment.cs b/Adaptation/FileHandlers/pdsf/SummarySegment.cs
deleted file mode 100644
index 8b2efaa..0000000
--- a/Adaptation/FileHandlers/pdsf/SummarySegment.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-
-namespace Adaptation.FileHandlers.pdsf;
-
-#nullable enable
-
-internal class SummarySegment
-{
-
- public SummarySegment(string nAvg, string nsl, string vd, string flatZ, string rhoAvg, string rhosl, string phase, string grade, string rs)
- {
- NAvg = nAvg;
- Nsl = nsl;
- Vd = vd;
- FlatZ = flatZ;
- RhoAvg = rhoAvg;
- Rhosl = rhosl;
- Phase = phase;
- Grade = grade;
- Rs = rs;
- }
-
- [JsonPropertyName("Navg")] public string NAvg { get; }
- [JsonPropertyName("Nsl")] public string Nsl { get; }
- [JsonPropertyName("Vd")] public string Vd { get; }
- [JsonPropertyName("Flat Z")] public string FlatZ { get; }
- [JsonPropertyName("Rhoavg")] public string RhoAvg { get; }
- [JsonPropertyName("Rhosl")] public string Rhosl { get; }
- [JsonPropertyName("Phase")] public string Phase { get; }
- [JsonPropertyName("Grade")] public string Grade { get; }
- [JsonPropertyName("Rs")] public string Rs { get; }
-
- public static SummarySegment Get() =>
- new(string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty,
- string.Empty);
-
- private static ReadOnlyCollection GetJsonProperties()
- {
- JsonProperty[] results;
- string json;
- SummarySegment summarySegment = Get();
- json = JsonSerializer.Serialize(summarySegment);
- JsonElement jsonElement = JsonSerializer.Deserialize(json);
- results = jsonElement.EnumerateObject().ToArray();
- return new(results);
- }
-
- public static Summary? Get(Constant constant, ReadOnlyCollection lines)
- {
- Summary? result;
- string json;
- string[] segments;
- bool found = false;
- string[] segmentsB;
- List names = new();
- Dictionary keyValuePairs = new();
- Dictionary keyValuePairsB = new();
- Dictionary keyValuePairsC = new();
- ReadOnlyCollection jsonProperties = GetJsonProperties();
- foreach (string line in lines)
- {
- if (line == constant.SummaryLine)
- found = true;
- if (!found)
- continue;
- if (line.Contains(constant.Site))
- break;
- if (line.Contains(constant.LastUnits))
- break;
- foreach (JsonProperty jsonProperty in jsonProperties)
- {
- segments = line.Split(new string[] { $"{jsonProperty.Name}:", $"{jsonProperty.Name} :" }, StringSplitOptions.None);
- if (segments.Length < 2 || !line.StartsWith(jsonProperty.Name))
- continue;
- segmentsB = segments[1].Trim().Split(' ');
- if (segmentsB.Length < 3)
- continue;
- if (names.Contains(jsonProperty.Name))
- continue;
- names.Add(jsonProperty.Name);
- keyValuePairs.Add(jsonProperty.Name, segmentsB[0]);
- keyValuePairsB.Add(jsonProperty.Name, segmentsB[1]);
- keyValuePairsC.Add(jsonProperty.Name, segmentsB[2]);
- }
- }
- if (keyValuePairs.Count != jsonProperties.Count || keyValuePairsB.Count != jsonProperties.Count || keyValuePairsC.Count != jsonProperties.Count)
- result = null;
- else
- {
- json = JsonSerializer.Serialize(keyValuePairs);
- SummarySegment? mean = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
- json = JsonSerializer.Serialize(keyValuePairsB);
- SummarySegment? standardDeviationPercentage = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
- json = JsonSerializer.Serialize(keyValuePairsC);
- SummarySegment? radialGradient = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
- result = new(mean, standardDeviationPercentage, radialGradient);
- }
- return result;
- }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(SummarySegment))]
-internal partial class SummarySegmentSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Adaptation/_Tests/Shared/AdaptationTesting.cs b/Adaptation/_Tests/Shared/AdaptationTesting.cs
index e49ae57..78b2dfe 100644
--- a/Adaptation/_Tests/Shared/AdaptationTesting.cs
+++ b/Adaptation/_Tests/Shared/AdaptationTesting.cs
@@ -1001,22 +1001,22 @@ public class AdaptationTesting : ISMTP
{
try
{
- if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
+ if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation) && !fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation.Contains("10."))
{
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation);
}
- if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
+ if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation) && !fileConnectorConfigurationTuple.Item2.SourceFileLocation.Contains("10."))
{
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.SourceFileLocation);
}
- if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
+ if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation) && !fileConnectorConfigurationTuple.Item2.TargetFileLocation.Contains("10."))
{
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.TargetFileLocation);
}
- if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder))
+ if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder) && !fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Contains("10."))
{
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]))
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]);
diff --git a/Adaptation/_Tests/Static/recipes-and-patterns.js b/Adaptation/_Tests/Static/recipes-and-patterns.js
index 82bcbde..1b14477 100644
--- a/Adaptation/_Tests/Static/recipes-and-patterns.js
+++ b/Adaptation/_Tests/Static/recipes-and-patterns.js
@@ -2,49 +2,60 @@
// recipes-and-patterns.js under IndexOf
// RecipesAndPatternsMatch
// ($('dcp.HGCV1/csv/Index', 0) + 1) == $('dcp.HGCV1/csv/Count', 0)
-// getValue('HGCV', $('dcp.HGCV1/csv/Count', 0), $('dcp.HGCV1/csv/SetupFile', ''), $('dcp.HGCV1/csv/Pattern', ''), getContextData('2', 'cds.NULL_DATA', ''));
+// getValue('HGCV', $('dcp.HGCV1/csv/Lot', ''), $('dcp.HGCV1/csv/Count', 0), $('dcp.HGCV1/csv/SetupFile', ''), $('dcp.HGCV1/csv/Pattern', ''), getContextData('2', 'cds.NULL_DATA', ''));
-function getValue(tool, patternSize, recipe, pattern, json) {
+function getValue(tool, lot, patternSize, recipe, pattern, json) {
let result;
- if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0)
- result = 'A) Invalid input!';
+ if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('EP') > -1)
+ result = '1';
+ else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('LO') > -1)
+ result = '1';
+ else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('MI') > -1)
+ result = '1';
+ else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('HI') > -1)
+ result = '1';
+ else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('TH') > -1)
+ result = '1';
else {
- let parsed;
- try {
- parsed = JSON.parse(json);
- } catch (error) {
- parsed = null;
- }
- if (parsed == null)
- result = 'B) Invalid input!';
- else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined)
- result = 'C) No Spec!';
+ if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0)
+ result = 'A) Invalid input!';
else {
- let toolMatches = [];
- for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) {
- if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) {
- toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]);
- }
+ let parsed;
+ try {
+ parsed = JSON.parse(json);
+ } catch (error) {
+ parsed = null;
}
- if (toolMatches == null || toolMatches.length === 0)
- result = 'Tool [' + tool + '] not found in OI API results!';
+ if (parsed == null)
+ result = 'B) Invalid input!';
+ else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined)
+ result = 'C) No Spec!';
else {
- let debug = '';
- let matches = 0;
- for (let index = 0; index < toolMatches.length; index++) {
- debug += 'patternSize: ' + toolMatches[index].patternSize +
- '; recipe: ' + toolMatches[index].recipe +
- '; pattern: ' + toolMatches[index].pattern + ';~';
- if (toolMatches[index].patternSize == patternSize &&
- toolMatches[index].recipe.toLowerCase() == recipe.toLowerCase() &&
- toolMatches[index].pattern.toLowerCase() == pattern.toLowerCase()) {
- matches++;
+ let toolMatches = [];
+ for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) {
+ if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) {
+ toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]);
}
}
- if (matches > 0)
- result = '1';
+ if (toolMatches == null || toolMatches.length === 0)
+ result = 'Tool [' + tool + '] not found in OI API results!';
else {
- result = 'Value not matched~Run~patternSize: ' + patternSize + '; recipe: ' + recipe + '; pattern: ' + pattern + ';~API~' + debug;
+ let debug = '';
+ let matches = 0;
+ for (let index = 0; index < toolMatches.length; index++) {
+ debug += 'patternSize: ' + toolMatches[index].patternSize +
+ ';~recipe: ' + toolMatches[index].recipe +
+ ';~pattern: ' + toolMatches[index].pattern + ';~';
+ if (toolMatches[index].patternSize == patternSize &&
+ toolMatches[index].recipe.toLowerCase() == recipe.toLowerCase() &&
+ toolMatches[index].pattern.toLowerCase() == pattern.toLowerCase()) {
+ matches++;
+ }
+ }
+ if (matches > 0)
+ result = '1';
+ else
+ result = 'Value not matched~Run~patternSize: ' + patternSize + ';~recipe: ' + recipe + ';~pattern: ' + pattern + ';~API~' + debug;
}
}
}
@@ -52,8 +63,9 @@ function getValue(tool, patternSize, recipe, pattern, json) {
return result;
}
-getValue('HGCV', 9, '6IN4_10.SET', '6_9PLUS.PAT', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}');
+getValue('HGCV', 'TESTLO1234', 9, '6IN4_10.SET', '6_9PLUS.PAT', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}');
+let lot;
let json;
let tool;
let recipe;
@@ -62,57 +74,58 @@ let patternSize;
tool = 'HGCV'
patternSize = 9;
+lot = 'TESTLO1234';
recipe = '6IN4_10.SET';
pattern = '6_9PLUS.PAT';
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}';
-const testA = getValue(tool, patternSize, recipe, pattern, json);
+const testA = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testA !== '1')
throw 'Test A failed: ' + testA;
tool = null;
-const testB = getValue(tool, patternSize, recipe, pattern, json);
+const testB = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testB !== 'A) Invalid input!')
throw 'Test L failed: ' + testB;
tool = '';
-const testC = getValue(tool, patternSize, recipe, pattern, json);
+const testC = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testC !== 'A) Invalid input!')
throw 'Test M failed: ' + testC;
patternSize = null;
-const testD = getValue(tool, patternSize, recipe, pattern, json);
+const testD = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testD !== 'A) Invalid input!')
throw 'Test J failed: ' + testD;
patternSize = '';
-const testE = getValue(tool, patternSize, recipe, pattern, json);
+const testE = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testE !== 'A) Invalid input!')
throw 'Test K failed: ' + testE;
recipe = null;
-const testF = getValue(tool, patternSize, recipe, pattern, json);
+const testF = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testF !== 'A) Invalid input!')
throw 'Test F failed: ' + testF;
recipe = '';
-const testG = getValue(tool, patternSize, recipe, pattern, json);
+const testG = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testG !== 'A) Invalid input!')
throw 'Test G failed: ' + testG;
pattern = null;
-const testH = getValue(tool, patternSize, recipe, pattern, json);
+const testH = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testH !== 'A) Invalid input!')
throw 'Test H failed: ' + testH;
pattern = '';
-const testI = getValue(tool, patternSize, recipe, pattern, json);
+const testI = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testI !== 'A) Invalid input!')
throw 'Test I failed: ' + testI;
json = '';
-const testK = getValue(tool, patternSize, recipe, pattern, json);
+const testK = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testK !== 'A) Invalid input!')
throw 'Test B failed: ' + testK;
json = 'invalid';
-const testL = getValue(tool, patternSize, recipe, pattern, json);
+const testL = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testL !== 'B) Invalid input!')
throw 'Test C failed: ' + testL;
json = '{"rds":{}}';
-const testM = getValue(tool, patternSize, recipe, pattern, json);
+const testM = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testM !== 'C) No Spec!')
throw 'Test D failed: ' + testM;
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}';
-const testN = getValue(tool, patternSize, recipe, pattern, json);
+const testN = getValue(tool, lot, patternSize, recipe, pattern, json);
if (testN !== 'Tool [HGCV] not found in OI API results!')
- throw 'Test E failed: ' + testN;
+ throw 'Test E failed: ' + testN;
\ No newline at end of file
diff --git a/MET08RESIHGCV.csproj b/MET08RESIHGCV.csproj
index 8965c63..7d8c801 100644
--- a/MET08RESIHGCV.csproj
+++ b/MET08RESIHGCV.csproj
@@ -116,15 +116,6 @@
-
-
-
-
-
-
-
-
-