2023-05-16 08:20:35 -07:00

87 lines
2.8 KiB
C#

using System.Text;
namespace Adaptation.FileHandlers.csv;
public class Setup
{
#nullable disable
public string Finish { get; set; }
public string NorthProbeID { get; set; }
public string SouthProbeID { get; set; }
public string MeasurementPolarity { get; set; }
public string SineBevelAngle { get; set; }
public string ContactRadius { get; set; }
public string ProbeSpacing { get; set; }
public string ProbeLoad { get; set; }
public string Orientation { get; set; }
public string NumberOfStepSizes { get; set; }
public List<Step> Steps { get; set; }
#nullable enable
#pragma warning disable CA1834
internal static Setup? GetSetup(string[] lines, int start, int stop)
{
Setup? result;
Step step;
string first;
string[] segments;
int? secondStart = null;
List<Step> steps = new();
List<string> values = new();
StringBuilder stringBuilder = new();
for (int i = start; i < stop; i++)
{
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
first = segments.First();
if (first == "Step")
{
secondStart = i + 1;
break;
}
_ = stringBuilder.Append(first).Append(",");
if (segments.Length > 1)
values.Add(segments[1]);
else
values.Add(string.Empty);
}
string header = "Finish,North Probe ID,South Probe ID,Measurement Polarity,Sine Bevel Angle,Contact Radius (µm),Probe Spacing (µm),Probe Load (gm),Orientation,Number of Step Sizes,";
if (secondStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
result = null;
else
{
result = new()
{
Finish = values[0],
NorthProbeID = values[1],
SouthProbeID = values[2],
MeasurementPolarity = values[3],
SineBevelAngle = values[4],
ContactRadius = values[5],
ProbeSpacing = values[6],
ProbeLoad = values[7],
Orientation = values[8],
NumberOfStepSizes = values[9],
Steps = steps,
};
for (int i = secondStart.Value; i < stop; i++)
{
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
if (segments.Length < 4)
continue;
step = new()
{
Number = segments[0],
Points = segments[1],
X = segments[2],
Y = segments[3],
};
steps.Add(step);
}
}
return result;
}
}