Spreading Resistance Profile with ChartJS,
Copy-On-Get and nuget bump (Serilog)
This commit is contained in:
85
Server/Services/csv/CSV.cs
Normal file
85
Server/Services/csv/CSV.cs
Normal file
@ -0,0 +1,85 @@
|
||||
namespace Adaptation.FileHandlers.csv;
|
||||
|
||||
public class CSV
|
||||
{
|
||||
|
||||
#nullable disable
|
||||
|
||||
#nullable enable
|
||||
#pragma warning disable CA1834
|
||||
|
||||
public string? FileVersion { get; set; }
|
||||
public Info? Info { get; set; }
|
||||
public Setup? Setup { get; set; }
|
||||
public LayerHeader? LayerHeader { get; set; }
|
||||
public ProfileHeader? ProfileHeader { get; set; }
|
||||
public Calibration? Calibration { get; set; }
|
||||
public RawData? RawData { get; set; }
|
||||
|
||||
internal static CSV GetCSV(string path)
|
||||
{
|
||||
CSV result;
|
||||
int? endInfo = null;
|
||||
int? endSetup = null;
|
||||
int? endLayers = null;
|
||||
int? startInfo = null;
|
||||
int? startSetup = null;
|
||||
int? endProfiles = null;
|
||||
int? startLayers = null;
|
||||
int? startRawData = null;
|
||||
int? startProfiles = null;
|
||||
int? endCalibration = null;
|
||||
int? startCalibration = null;
|
||||
#if NET
|
||||
string[] lines = File.ReadAllLines(path, System.Text.Encoding.Latin1); // µ³®
|
||||
# else
|
||||
string[] lines = File.ReadAllLines(path, System.Text.Encoding.GetEncoding("ISO-8859-1")); // µ³®
|
||||
# endif
|
||||
string? fileVersion = !lines.Any() ? null : GetFileVersion(lines.First());
|
||||
for (int i = 1; i < lines.Length; i++)
|
||||
{
|
||||
if (lines[i].StartsWith("--INFO--"))
|
||||
startInfo = i + 1;
|
||||
else if (lines[i].StartsWith("--SETUP--"))
|
||||
(endInfo, startSetup) = (i, i + 1);
|
||||
else if (lines[i].StartsWith("--LAYERS--"))
|
||||
(endSetup, startLayers) = (i, i + 1);
|
||||
else if (lines[i].StartsWith("--PROFILES--"))
|
||||
(endLayers, startProfiles) = (i, i + 1);
|
||||
else if (lines[i].StartsWith("--CALIBRATION--"))
|
||||
(endProfiles, startCalibration) = (i, i + 1);
|
||||
else if (lines[i].StartsWith("--RAWDATA--"))
|
||||
(endCalibration, startRawData) = (i, i + 1);
|
||||
}
|
||||
RawData? rawData = startRawData is null ? null : RawData.GetRawData(lines, startRawData.Value, lines.Length);
|
||||
Info? info = startInfo is null || endInfo is null ? null : Info.GetInfo(lines, startInfo.Value, endInfo.Value);
|
||||
Setup? setup = startSetup is null || endSetup is null ? null : Setup.GetSetup(lines, startSetup.Value, endSetup.Value);
|
||||
LayerHeader? layerHeader = startLayers is null || endLayers is null ? null : LayerHeader.GetLayerHeader(lines, startLayers.Value, endLayers.Value);
|
||||
ProfileHeader? profileHeader = startProfiles is null || endProfiles is null ? null : ProfileHeader.GetProfileHeader(lines, startProfiles.Value, endProfiles.Value);
|
||||
Calibration? calibration = startCalibration is null || endCalibration is null ? null : Calibration.GetCalibration(lines, startCalibration.Value, endCalibration.Value);
|
||||
result = new()
|
||||
{
|
||||
FileVersion = fileVersion,
|
||||
Info = info,
|
||||
Setup = setup,
|
||||
LayerHeader = layerHeader,
|
||||
ProfileHeader = profileHeader,
|
||||
Calibration = calibration,
|
||||
RawData = rawData,
|
||||
|
||||
};
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetFileVersion(string line)
|
||||
{
|
||||
string result;
|
||||
string[] segments = line.Split(',');
|
||||
if (segments.Length < 2)
|
||||
result = string.Empty;
|
||||
else
|
||||
result = segments.Last();
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user