Files
DP44/docs/ai/Common/DTS.Common.Import.md
2026-04-17 14:55:32 -04:00

9.5 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common.Import/ImportError.cs
Common/DTS.Common.Import/ParseProcessor.cs
Common/DTS.Common.Import/TsetSetupImportSensorInfo.cs
Common/DTS.Common.Import/CsvUtil.cs
Common/DTS.Common.Import/ImportNotification.cs
Common/DTS.Common.Import/XMLParseProcessor.cs
Common/DTS.Common.Import/CalibrationImport.cs
Common/DTS.Common.Import/GroupHelper.cs
Common/DTS.Common.Import/ImportObject.cs
2026-04-17T15:32:34.821158+00:00 zai-org/GLM-5-FP8 1 148f67b9afc6f9fe

DTS.Common.Import Module Documentation

1. Purpose

This module provides the core infrastructure for importing test configuration data into the DTS system. It handles parsing of CSV and XML files containing sensor definitions, calibrations, test setups, groups, hardware configurations, and related metadata. The module centralizes all imported data through the ImportObject container, provides progress notification via IImportNotification, and includes utilities for calibration processing and group management.


2. Public Interface

ImportError.cs

Enum: ImportSeverityError

public enum ImportSeverityError
{
    Critical,
    Error,
    Warning,
    Info
}

Class: ImportError

public string Message { get; set; }
public ImportSeverityError Severity { get; set; }
public bool ContinueImportOnError { get; set; } = true;  // defaults to true

ParseProcessor.cs

Class: ParseProcessor

Constructor:

public ParseProcessor(ImportObject importObject, IEnumerable<string> fileNames, IEnumerable<IParseVariant> parseVariants)

Methods:

public ImportObject Process()

Iterates through all file names and parse variants, invoking variant.Parse(ref _importObject) for each combination. Returns the modified ImportObject.


TsetSetupImportSensorInfo.cs

Class: TsetSetupImportSensorInfo (sealed)

Constructors:

public TsetSetupImportSensorInfo(string serialNumber, string isoCode, string isoChannelName,
    string userCode, string userChannelName, string dasSerialNumber, int dasChannelIdx)

public TsetSetupImportSensorInfo(string serialNumber, string isoCode)

Properties (all read-only except GroupType):

public string IsoCode { get; }
public string IsoChannelName { get; }
public string UserCode { get; }
public string UserChannelName { get; }
public string SerialNumber { get; }
public string GroupType { get; set; }  // read-write
public string DASSerialNumber { get; }
public int DASChannelIndex { get; }

CsvUtil.cs

Static Class: CsvUtil

public static CsvReader CreateCsvReader(string filename)

Creates a CsvReader using CultureInfo.InvariantCulture with a StreamReader for the given filename.

public static List<string> ReadFields(CsvReader csvReader, bool readNextLine = true)

Reads fields from the CSV reader. If readNextLine is true, calls csvReader.Read() first. Returns a list of trimmed field values from all columns (index 0 to ColumnCount - 1).


ImportNotification.cs

Class: ImportStatus

public string Status { get; set; }
public PossibleStatus PossibleStatus { get; set; }
public ImportExtraStatus ExtraStatus { get; set; }

Interface: IImportNotification

Action ImportDone { get; }
Action<List<string>> ReportErrors { get; }
Action<double> SetProgress { get; }
Action<ImportStatus> SetStatus { get; }

Class: ImportNotification (implements IImportNotification)

Constructors:

public ImportNotification(Action<List<string>> reportErrors, Action<ImportStatus> setStatus, 
                          Action<double> setProgress, Action importDone)

public ImportNotification()  // creates no-op handlers for all actions

Properties:

public Action<List<string>> ReportErrors { get; private set; }
public Action<ImportStatus> SetStatus { get; private set; }
public Action<double> SetProgress { get; private set; }
public Action ImportDone { get; private set; }

XMLParseProcessor.cs

Class: XMLParseProcessor

Constructor:

public XMLParseProcessor(ImportObject importObject, IImportNotification importNotification, 
                         IEnumerable<string> fileNames, Func<bool> isCancelled, bool skipNormalizing)

Properties:

public List<IUIItems> UIItems { get; set; }

Methods:

public ImportObject Process()

Processes XML files using parsers created by XmlParserFactory. Sets status to ImportExtraStatus.ReadingXML, calculates progress based on items completed vs. total items to complete.


CalibrationImport.cs

Class: CalibrationImport (implements ICalibrationImport)

public SensorCalibration CheckForExcitationCalibration(SensorCalibration sc, double sensitivity, 
    ExcitationVoltageOptions.ExcitationVoltageOption excitation, string EU)

Checks if the first calibration record has the specified excitation; if not, adds a new CalibrationRecord with the given parameters.

public SensorCalibration AddLinearCalRecordIfNeeded(SensorCalibration sc, bool savedIsProportional, bool savedRemoveOffset)

If sc.Records.Records has exactly one entry, adds a second linear calibration record and restores IsProportional and RemoveOffset flags.

public SensorCalibration AddLinearZeroMethodIfNeeded(SensorCalibration sc, ZeroMethodType zeroMethodType, 
    double zeroMethodStart, double zeroMethodEnd)

If sc.ZeroMethods.Methods has exactly one entry, adds a second ZeroMethod with the specified parameters.


GroupHelper.cs

Static Class: GroupHelper

public static IGroup CreateEmptyGroup()

Returns a new GroupList.Model.Group(true).

public static void GetTestSensorParameters(out string isoCode, out string isoChannelName, 
    out string userCode, out string userChannelName, ParseParameters pp, SensorData sd, 
    out string dasSerialNumber, out int dasChannelIdx)

Extracts sensor parameters, preferring values from ParseParameters dictionaries when available.

public static IReadOnlyDictionary<string, int> GetDAS(
    Dictionary<string, List<TsetSetupImportSensorInfo>> groupSensorLookupgroupSensorLookup,
    DASHardware[] allDAS)

Builds a lookup dictionary mapping DAS serial numbers to DAS IDs.

public static int? GetGroupId(TestTestObject testObject, Dictionary<string, int> groupIdMapping, 
    List<TestObject> groupList)

Finds the group ID for a test object by traversing group relationships.

public static List<string> ReverseChannelOrder(TestTemplate testTemplate, 
    Dictionary<string, string> sensorGroupNameLookup, List<SensorData> sensors)

Returns a reversed list of channel order strings in format {testTemplate.Name}_{groupName}_{comment}.

public static List<SensorData> CleanUneededSensorDataPlaceHolder(
    Dictionary<string, List<SensorCalibration>> calibrationLookup, List<SensorData> sensorList)

Removes sensor data entries that are ISO-channel-only placeholders or have invalid default calibrations.

public static List<SensorData> NormalizeSensorIds(List<SensorData> sensorList)

Normalizes sensor database IDs: existing sensors get their real IDs; new sensors get negative IDs (-2, -3, etc.).


ImportObject.cs

Class: ImportObject

This is the central data container for imports. Key properties and methods:

Properties:

public ImportFormats SourceFormat { get; set; } = ImportFormats.NOT_SPECIFIED;
public ImportFileFormat TestSetupImportFileFormat { get; set; } = ImportFileFormat.NoTestSetup;

Format Detection:

public ImportFileFormat GetImportFileFormat()
public static ImportFileFormat GetImportFileFormat(int testSetupCount)

Returns SingleTestSetup, MultipleTestSetup, or NoTestSetup based on test setup count.

Error Management:

public void ClearErrors()
public void AddErrors(IEnumerable<ImportError> d)
public void AddError(ImportError d)
public IEnumerable<ImportError> Errors()

Data Collections (Add/Get methods for each):

  • Calibrations() / AddCalibration(SensorCalibration) / AddCalibrations(IEnumerable<SensorCalibration>)
  • TestSetups() / AddTestSetup(TestTemplate) / AddTestSetups(IEnumerable<TestTemplate>) / ClearTestSetups()
  • Sensors() / AddSensor(SensorData) / AddSensors(IEnumerable<SensorData>) / ClearSensors()
  • Groups() / AddGroup(TestObject) / AddGroups(IEnumerable<TestObject>)
  • GroupTemplates() / AddGroupTemplate(TestObjectTemplate) / AddGroupTemplates(IEnumerable<TestObjectTemplate>)
  • Hardware() / AddHardware(DASHardware) / AddHardwareList(IEnumerable<DASHardware>)
  • CustomChannels() / AddCustomChannel(MMEPossibleChannels) / AddCustomChannels(IEnumerable<MMEPossibleChannels>)
  • Users() / AddUser(User) / AddUsers(IEnumerable<User>)
  • CustomerDetails() / LabDetails() / TestEngineerDetails()
  • StaticGroups() / AddStaticGroup(IGroup) / AddStaticGroups(IEnumerable<IGroup>)
  • SensorModels() / AddSensorModel(SensorModel) / AddSensorModels(IEnumerable<SensorModel>)
  • Various MME-related collections: PhysicalDimensions(), CustomPositions(), CustomFilterClasses(), CustomFineLoc1s(), CustomFineLoc2s(), CustomFineLoc3s(), Directions(), CustomMainLocations(), TestObjects()

Lookup Dictionaries:

public void AssignSensorLookup(Dictionary<string, SensorData> sensorLookup)
public void AddSensorLookup(string serial, SensorData sensorData)
public Sensor