diff --git a/Adaptation/FileHandlers/pcl/Descriptor.cs b/Adaptation/FileHandlers/pcl/Descriptor.cs
index a5d9037..c2efef6 100644
--- a/Adaptation/FileHandlers/pcl/Descriptor.cs
+++ b/Adaptation/FileHandlers/pcl/Descriptor.cs
@@ -4,18 +4,22 @@ public class Descriptor
{
public string Employee { get; private set; }
+ public string Layer { get; private set; }
public string Lot { get; private set; }
public string PSN { get; private set; }
public string RDS { get; private set; }
public string Reactor { get; private set; }
+ public string Zone { get; private set; }
- public Descriptor(string employee, string lot, string psn, string rds, string reactor)
+ public Descriptor(string employee, string layer, string lot, string psn, string rds, string reactor, string zone)
{
Employee = employee;
+ Layer = layer;
Lot = lot;
PSN = psn;
RDS = rds;
Reactor = reactor;
+ Zone = zone;
}
}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/pcl/ProcessData.cs b/Adaptation/FileHandlers/pcl/ProcessData.cs
index c0990cb..1530fa1 100644
--- a/Adaptation/FileHandlers/pcl/ProcessData.cs
+++ b/Adaptation/FileHandlers/pcl/ProcessData.cs
@@ -245,57 +245,123 @@ public class ProcessData : IProcessData
private string PeekNextLine()
{
int j = _I;
- string toEol = GetToEOL();
+ string result = GetToEOL();
_I = j;
- return toEol;
+ return result;
+ }
+
+ private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments)
+ {
+ string rds;
+ string reactor;
+ if (string.IsNullOrEmpty(text) || segments.Length == 0 || string.IsNullOrEmpty(formattedText))
+ reactor = defaultReactor;
+ else
+ reactor = segments[0];
+ if (segments.Length <= 1 || !int.TryParse(segments[1], out int rdsValue) || rdsValue < 99)
+ rds = defaultRDS;
+ else
+ rds = segments[1];
+ if (reactor.Length > 3)
+ {
+ rds = reactor;
+ reactor = defaultReactor;
+ }
+ return new(reactor, rds);
+ }
+
+ private static (string, string) GetLayerAndPSN(string defaultLayer, string defaultPSN, string[] segments)
+ {
+ string psn;
+ string layer;
+ if (segments.Length <= 2)
+ {
+ psn = defaultPSN;
+ layer = defaultLayer;
+ }
+ else
+ {
+ string[] segmentsB = segments[2].Split('.');
+ psn = segmentsB[0];
+ if (segmentsB.Length <= 1)
+ layer = defaultLayer;
+ else
+ {
+ layer = segmentsB[1];
+ if (layer.Length > 1 && layer[0] == '0')
+ layer = layer.Substring(1);
+ }
+ }
+ return (layer, psn);
+ }
+
+ private static string GetZone(string[] segments)
+ {
+ string result;
+ if (segments.Length <= 3)
+ result = string.Empty;
+ else
+ {
+ result = segments[3];
+ if (result.Length > 1 && result[0] == '0')
+ result = result.Substring(1);
+ }
+ return result;
}
public static Descriptor GetDescriptor(string text)
{
Descriptor result;
string lot;
- string rds;
string psn;
+ string rds;
+ string zone;
+ string layer;
string reactor;
string employee;
- const string defaultPSN = "0000";
- const string defaultReactor = "00";
- const string defaultRDS = "000000";
- if (text.Length is 2 or 3)
+ string defaultPSN = string.Empty;
+ string defaultRDS = string.Empty;
+ string defaultZone = string.Empty;
+ string defaultLayer = string.Empty;
+ string defaultReactor = string.Empty;
+ string defaultEmployee = string.Empty;
+ if (string.IsNullOrEmpty(text) || (text.Length is 2 or 3 && Regex.IsMatch(text, "^[a-zA-z]{2,3}")))
{
lot = text;
employee = text;
- rds = defaultRDS;
psn = defaultPSN;
+ rds = defaultRDS;
+ zone = defaultZone;
+ layer = defaultLayer;
reactor = defaultReactor;
}
+ else if (Regex.IsMatch(text, @"^[0-9]{2}[.][0-9]{1}[.]?[0-9]{0,1}"))
+ {
+ string[] segments = text.Split('.');
+ lot = text;
+ psn = defaultPSN;
+ rds = defaultRDS;
+ layer = segments[1];
+ reactor = segments[0];
+ employee = defaultEmployee;
+ if (segments.Length <= 2)
+ zone = defaultZone;
+ else
+ zone = segments[2];
+ }
else
{
- employee = string.Empty;
// Remove illegal characters \/:*?"<>| found in the Lot.
lot = Regex.Replace(text, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
- if (lot.StartsWith("1T") || lot.StartsWith("1t"))
+ if (lot.Length > 2 && lot[0] == '1' && (lot[1] == 'T' || lot[1] == 't'))
lot = lot.Substring(2);
string[] segments = lot.Split('-');
- if (segments.Length == 0)
- reactor = defaultReactor;
- else
- reactor = segments[0];
- if (segments.Length <= 1)
- rds = defaultRDS;
- else
- rds = segments[1];
- if (reactor.Length > 3)
- {
- rds = reactor;
- reactor = defaultReactor;
- }
- if (segments.Length <= 2)
- psn = defaultPSN;
- else
- psn = segments[2].Split('.')[0];
+ (reactor, rds) = GetReactorAndRDS(defaultReactor, defaultRDS, text, lot, segments);
+ (layer, psn) = GetLayerAndPSN(defaultLayer, defaultPSN, segments);
+ zone = GetZone(segments);
+ employee = defaultEmployee;
}
- result = new(employee, lot, psn, rds, reactor);
+ result = new(employee, layer, lot, psn, rds, reactor, zone);
return result;
}
diff --git a/Adaptation/_Tests/Static/pcl.cs b/Adaptation/_Tests/Static/pcl.cs
index 3dafe2f..4b11598 100644
--- a/Adaptation/_Tests/Static/pcl.cs
+++ b/Adaptation/_Tests/Static/pcl.cs
@@ -48,29 +48,83 @@ public class PCL : LoggingUnitTesting, IDisposable
FileHandlers.pcl.Descriptor descriptor;
MethodBase methodBase = new StackFrame().GetMethod();
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor(string.Empty);
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("12-123456-1234");
Assert.IsTrue(descriptor.Reactor is "12");
Assert.IsTrue(descriptor.RDS is "123456");
Assert.IsTrue(descriptor.PSN is "1234");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("123456");
- Assert.IsTrue(descriptor.Reactor is "00");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor));
Assert.IsTrue(descriptor.RDS is "123456");
- Assert.IsTrue(descriptor.PSN is "0000");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("1T123456");
- Assert.IsTrue(descriptor.Reactor is "00");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor));
Assert.IsTrue(descriptor.RDS is "123456");
- Assert.IsTrue(descriptor.PSN is "0000");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("MP");
- Assert.IsTrue(descriptor.Reactor is "00");
- Assert.IsTrue(descriptor.RDS is "000000");
- Assert.IsTrue(descriptor.PSN is "0000");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
Assert.IsTrue(descriptor.Employee is "MP");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("12-123456-1234.2-1");
Assert.IsTrue(descriptor.Reactor is "12");
Assert.IsTrue(descriptor.RDS is "123456");
Assert.IsTrue(descriptor.PSN is "1234");
- // Assert.IsTrue(descriptor.Layer is "2");
- // Assert.IsTrue(descriptor.Zone is "1");
+ Assert.IsTrue(descriptor.Layer is "2");
+ Assert.IsTrue(descriptor.Zone is "1");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("12-123456-1234.02-1");
+ Assert.IsTrue(descriptor.Reactor is "12");
+ Assert.IsTrue(descriptor.RDS is "123456");
+ Assert.IsTrue(descriptor.PSN is "1234");
+ Assert.IsTrue(descriptor.Layer is "2");
+ Assert.IsTrue(descriptor.Zone is "1");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("20");
+ Assert.IsTrue(descriptor.Reactor is "20");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("20.2");
+ Assert.IsTrue(descriptor.Reactor is "20");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(descriptor.Layer is "2");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("20.2.1");
+ Assert.IsTrue(descriptor.Layer is "2");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(descriptor.Reactor is "20");
+ Assert.IsTrue(descriptor.Zone is "1");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
+ descriptor = FileHandlers.pcl.ProcessData.GetDescriptor("20.1.1");
+ Assert.IsTrue(descriptor.Layer is "1");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS));
+ Assert.IsTrue(descriptor.Reactor is "20");
+ Assert.IsTrue(descriptor.Zone is "1");
+ Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee));
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
}
diff --git a/MET08DDUPSFS6420.csproj b/MET08DDUPSFS6420.csproj
index a7b4ffc..e82d1da 100644
--- a/MET08DDUPSFS6420.csproj
+++ b/MET08DDUPSFS6420.csproj
@@ -169,7 +169,7 @@
7.2.4630.5
- 2.43.0
+ 2.47.0
1.1.1
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index 6ee6d30..9f9cbb9 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.43.0.0")]
-[assembly: AssemblyFileVersion("2.43.0.0")]
+[assembly: AssemblyVersion("2.47.0.0")]
+[assembly: AssemblyFileVersion("2.47.0.0")]