Spreading Resistance Profile with ChartJS,
Copy-On-Get and nuget bump (Serilog)
This commit is contained in:
132
Server/Services/csv/Calibration.cs
Normal file
132
Server/Services/csv/Calibration.cs
Normal file
@ -0,0 +1,132 @@
|
||||
using System.Text;
|
||||
|
||||
namespace Adaptation.FileHandlers.csv;
|
||||
|
||||
public class Calibration
|
||||
{
|
||||
|
||||
#nullable disable
|
||||
|
||||
public string NumberOfCalibrationSets { get; set; }
|
||||
public List<DataSet> DataSets { get; set; }
|
||||
|
||||
#nullable enable
|
||||
#pragma warning disable CA1834
|
||||
|
||||
internal static Calibration? GetCalibration(string[] lines, int start, int stop)
|
||||
{
|
||||
Calibration? result;
|
||||
string first;
|
||||
DataSet dataSet;
|
||||
Position position;
|
||||
string[] segments;
|
||||
int? thirdStart = null;
|
||||
int? secondStart = null;
|
||||
List<Position> positions;
|
||||
List<string> values = new();
|
||||
List<DataSet> dataSets = new();
|
||||
StringBuilder stringBuilder = new();
|
||||
for (int i = start; i < stop; i++)
|
||||
{
|
||||
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
||||
first = segments.First();
|
||||
if (first == "DataSet:")
|
||||
{
|
||||
secondStart = i + 1;
|
||||
break;
|
||||
}
|
||||
_ = stringBuilder.Append(first).Append(",");
|
||||
if (segments.Length > 1)
|
||||
values.Add(segments[1]);
|
||||
else
|
||||
values.Add(string.Empty);
|
||||
}
|
||||
string header = "Number of Calibration Sets,";
|
||||
if (secondStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
result = new()
|
||||
{
|
||||
NumberOfCalibrationSets = values[0],
|
||||
DataSets = dataSets,
|
||||
};
|
||||
for (int x = 0; x < int.MaxValue; x++)
|
||||
{
|
||||
values.Clear();
|
||||
_ = stringBuilder.Clear();
|
||||
if (secondStart is null)
|
||||
break;
|
||||
for (int i = secondStart.Value; i < stop; i++)
|
||||
{
|
||||
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
||||
first = segments.First();
|
||||
if (first == "Resistivity(ohm-cm)")
|
||||
{
|
||||
thirdStart = i + 1;
|
||||
break;
|
||||
}
|
||||
if (first == " Sample Set:")
|
||||
continue;
|
||||
_ = stringBuilder.Append(first).Append(",");
|
||||
if (segments.Length > 1)
|
||||
values.Add(segments[1]);
|
||||
else
|
||||
values.Add(string.Empty);
|
||||
}
|
||||
secondStart = null;
|
||||
header = "Operator,Date & Time,Finish,Orientation,North Probe ID,South Probe ID,Polarity,Contact Radius (µm),Probe Spacing (µm),Load (gm),X Step (µm),Name,Plate ID,Type,Points per Sample,Number of Pairs,";
|
||||
if (thirdStart is null || stringBuilder.Length != header.Length || stringBuilder.ToString() != header)
|
||||
result = null;
|
||||
else
|
||||
{
|
||||
positions = new();
|
||||
dataSet = new()
|
||||
{
|
||||
Operator = values[0],
|
||||
DateTime = values[1],
|
||||
Finish = values[2],
|
||||
Orientation = values[3],
|
||||
NorthProbeID = values[4],
|
||||
SouthProbeID = values[5],
|
||||
Polarity = values[6],
|
||||
ContactRadius = values[7],
|
||||
ProbeSpacing = values[8],
|
||||
Load = values[9],
|
||||
XStep = values[10],
|
||||
Name = values[11],
|
||||
PlateId = values[12],
|
||||
Type = values[13],
|
||||
PointsPerSample = values[14],
|
||||
NumberOfPairs = values[15],
|
||||
Positions = positions,
|
||||
};
|
||||
dataSets.Add(dataSet);
|
||||
for (int i = thirdStart.Value; i < stop; i++)
|
||||
{
|
||||
segments = lines[i].Split(new string[] { "," }, StringSplitOptions.None);
|
||||
first = segments.First();
|
||||
if (first == "DataSet:")
|
||||
{
|
||||
secondStart = i + 1;
|
||||
break;
|
||||
}
|
||||
if (segments.Length < 5)
|
||||
continue;
|
||||
position = new()
|
||||
{
|
||||
Resistivity = segments[0],
|
||||
Resistance = segments[1],
|
||||
PercentStandardDeviation = segments[2],
|
||||
Number = segments[3],
|
||||
Name = segments[4],
|
||||
};
|
||||
positions.Add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user