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

5.7 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common.Import/Interfaces/IPersistImport.cs
Common/DTS.Common.Import/Interfaces/IParseImport.cs
Common/DTS.Common.Import/Interfaces/IParseVariant.cs
Common/DTS.Common.Import/Interfaces/IParseCSVTest.cs
Common/DTS.Common.Import/Interfaces/IParseCSVSensor.cs
Common/DTS.Common.Import/Interfaces/ICalibrationImport.cs
Common/DTS.Common.Import/Interfaces/ILockImport.cs
Common/DTS.Common.Import/Interfaces/IGroupImport.cs
2026-04-17T16:02:47.396088+00:00 zai-org/GLM-5-FP8 1 78f079bf5483238e

Interfaces

Purpose

This module defines the core abstraction layer for the import subsystem, providing interfaces for parsing, persisting, locking, and grouping imported data. It establishes contracts for handling CSV-based test and sensor imports, calibration records, and database locking mechanisms during import operations. The interfaces enable a separation between import orchestration and concrete implementations.

Public Interface

IPersistImport

  • void Save() - Persists the current import state. No parameters; returns void.

IParseImport

  • ImportObject Parse(IEnumerable<string> importFiles) - Parses a collection of file paths into an ImportObject. Accepts IEnumerable<string> of file paths.

IParseVariant

  • string FileName { get; set; } - Property for the file name being parsed.
  • void Parse(ref ImportObject importObject) - Parses variant data into the provided ImportObject. Note: importObject is passed by reference.

IParseCSVTest

  • int Version { get; } - Read-only property indicating the parser version.
  • void ParseVersion(CsvReader csvReader, TestSetupImportData tsid) - Parses version-specific test data using a CsvReader into TestSetupImportData.

IParseCSVSensor

  • int Version { get; } - Read-only property indicating the parser version.
  • void Initialize(ICalibrationImport import, ZeroMethodOptions zmOptions, IImportNotification importNotification, bool importCreateDynamicGroups, bool useIsoCodeFilterMapping, bool useZeroForUnfiltered) - Initializes the parser with calibration import, zero method options, notification handler, and various import flags.
  • void ParseVersion(CSVImportTags.Tags field, string val, ParseParameters pp) - Parses a specific field/value pair for the current version.

ICalibrationImport

  • SensorCalibration AddLinearCalRecordIfNeeded(SensorCalibration sc, bool savedIsProportional, bool savedRemoveOffset) - Adds a linear calibration record if conditions are met.
  • SensorCalibration AddLinearZeroMethodIfNeeded(SensorCalibration sc, ZeroMethodType zeroMethodType, double zeroMethodStart, double zeroMethodEnd) - Adds a linear zero method to calibration if needed.
  • SensorCalibration CheckForExcitationCalibration(SensorCalibration sc, double sensitivity, ExcitationVoltageOptions.ExcitationVoltageOption excitation, string EU) - Checks and configures excitation calibration.

ILockImport

  • bool Contended { get; } - Returns true if the collection of contended locks has any items.
  • void SetLock(ref ImportObject importObject, ref StringBuilder message) - Sets a database lock for the import object; errors populate the StringBuilder message.
  • void FreeLock(ref ImportObject importObject) - Releases the database lock for the import object.
  • bool StealLock(bool proceed) - Steals the database lock; returns success status.

IGroupImport

  • ParseParameters ParseParameters { get; set; } - Property for parsing parameters.
  • Tuple<TestTemplate, List<IGroup>> CreateGroups(List<SensorData> sensors, Dictionary<string, List<TsetSetupImportSensorInfo>> groupSensorLookup, TestTemplate testTemplate, bool createDynamicGroups, List<IGroup> staticGroups, Action<double> setProgress) - Creates groups from sensor data with progress reporting.
  • Dictionary<string, List<TsetSetupImportSensorInfo>> GetGroupSensorLookup(List<SensorData> sensors, Dictionary<string, string> sensorGroupNameLookup, Dictionary<string, List<string>> groupNameSensorListLookup) - Builds a lookup dictionary mapping group names to sensor info.

Invariants

  • IParseVariant.Parse modifies ImportObject via reference; the caller must expect mutation.
  • ILockImport.SetLock requires an empty StringBuilder to be passed in; it will be populated with errors if any occur.
  • IParseCSVSensor.Initialize must be called before ParseVersion (implied by initialization pattern).
  • IUserDbRecord.UserName must be unique (documented in interface comments, though this interface is in a different module).

Dependencies

Depends on:

  • System.Collections.Generic (IEnumerable, Dictionary, List)
  • System.Text (StringBuilder)
  • CsvHelper (CsvReader)
  • DTS.Common.Classes (TestSetupImportData)
  • DTS.Common.Classes.Sensors (SensorData)
  • DTS.Common.Enums (ZeroMethodType)
  • DTS.Common.Enums.Sensors (sensor-related enums)
  • DTS.Common.Import.ImportOptions (ZeroMethodOptions)
  • DTS.Common.Interface.Groups.GroupList (IGroup)
  • DTS.SensorDB (SensorCalibration)
  • DataPROWin7.DataModel (TestTemplate, TsetSetupImportSensorInfo)

Depended on by: Not determinable from source alone; these are interfaces consumed by implementations.

Gotchas

  • IParseVariant.Parse uses ref ImportObject while IParseImport.Parse returns a new ImportObject. This inconsistency suggests different ownership models.
  • ILockImport has a comment referencing "FB 36740" indicating a feature request/bug tracking reference.
  • The ILockImport.StealLock method's proceed parameter purpose is unclear from the signature alone.
  • IParseCSVSensor.ParseVersion takes a string val parameter, suggesting string-based field values rather than typed parsing.