using DataPROWin7.DataModel; using DTS.Common.Import.Enums; using DTS.Common.Interface.Sensors; using DTS.Common.ISO; using DTS.SensorDB; using DTS.Slice.Users; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DTS.Common.Classes.Sensors; namespace DTS.Common.Import { public class ImportObject { public ImportFormats SourceFormat { get; set; } = ImportFormats.NOT_SPECIFIED; private readonly List _testSetups = new List(); private readonly List _calibrations = new List(); private readonly List _groupTemplates = new List(); private readonly List _sensors = new List(); private readonly List _hardware = new List(); private readonly List _iGroups = new List(); private readonly List _groupList = new List(); private readonly List _positions = new List(); private readonly List _physicalDimensions = new List(); private readonly List _mainLocations = new List(); private readonly List _directions = new List(); private readonly List _filterClasses = new List(); private readonly List _fineLoc1s = new List(); private readonly List _fineLoc2s = new List(); private readonly List _fineLoc3s = new List(); private readonly List _testObjects = new List(); private readonly List _customChannels = new List(); private readonly List _customerDetails = new List(); private readonly List _testEngineerDetails = new List(); private readonly List _labDetails = new List(); private Dictionary _globalSettings = new Dictionary(); private readonly List _users = new List(); private Dictionary _sensorLookup = new Dictionary(); private Dictionary _sensorModelLookup = new Dictionary(); private readonly List _sensorModels = new List(); private Dictionary> _calibrationLookup = new Dictionary>(); private readonly Dictionary _sensorChannelCodeLookup = new Dictionary(); private Dictionary _sensorGroupNameLookup = new Dictionary(); private Dictionary _sensorGroupTypeLookup = new Dictionary(); private Dictionary _groupNameTestObjectLookup = new Dictionary(); private Dictionary> _groupNameSensorsLookup = new Dictionary>(); private Dictionary _oldSensorDatabaseIdToNew = new Dictionary(); private readonly List _errors = new List(); //FB 36879 Added parse parameters private ParseParameters _parseParameters = new ParseParameters(); public ImportFileFormat GetImportFileFormat() { var testSetupCount = _testSetups.Count; return GetImportFileFormat(testSetupCount); } public static ImportFileFormat GetImportFileFormat(int testSetupCount) { if (testSetupCount == 1) { return ImportFileFormat.SingleTestSetup; } if (testSetupCount > 1) { return ImportFileFormat.MultipleTestSetup; } return ImportFileFormat.NoTestSetup; } public void AssignParseParameters(ParseParameters parseParameters) { _parseParameters = parseParameters; } public ParseParameters ParseParameters() => _parseParameters; public void ClearErrors() => _errors.Clear(); public void AddErrors(IEnumerable d) => _errors.AddRange(d); public void AddError(ImportError d) => _errors.Add(d); public IEnumerable Errors() => _errors; //FB 40758 /// /// Specify the type of test setup file, single, multiple, no test setup /// public ImportFileFormat TestSetupImportFileFormat { get; set; } = ImportFileFormat.NoTestSetup; public void AssignOldSensorDatabaseIdToNew(Dictionary oldSensorDatabaseIdToNew) { _oldSensorDatabaseIdToNew = new Dictionary(oldSensorDatabaseIdToNew); } public void AddOldSensorDatabaseIdToNew(int key, int value) { _oldSensorDatabaseIdToNew[key] = value; } public int OldSensorDatabaseIdToNew(int key) { return _oldSensorDatabaseIdToNew[key]; } public Dictionary OldSensorDatabaseIdsToNew() { return _oldSensorDatabaseIdToNew; } public void AssignGlobalSettings(Dictionary settings) => _globalSettings = new Dictionary(settings); public void AddGlobalSettings(string key, string value) => _globalSettings[key] = value; public string GlobalSetting(string key) => _globalSettings[key]; public Dictionary GlobalSettings() => _globalSettings; public void AddCustomPhysicalDimensions(IEnumerable d) => _physicalDimensions.AddRange(d); public void AddCustomPhysicalDimension(MMEPhysicalDimensions d) => _physicalDimensions.Add(d); public IEnumerable PhysicalDimensions() => _physicalDimensions; public void AddCustomPositions(IEnumerable d) => _positions.AddRange(d); public void AddCustomPosition(MMEPositions d) => _positions.Add(d); public IEnumerable CustomPositions() => _positions; public void AddCustomFilterClasses(IEnumerable d) => _filterClasses.AddRange(d); public void AddCustomFilterClass(MMEFilterClasses d) => _filterClasses.Add(d); public IEnumerable CustomFilterClasses() => _filterClasses; public void AddCustomFineLoc1s(IEnumerable d) => _fineLoc1s.AddRange(d); public void AddCustomFineLoc1(MMEFineLocations1 d) => _fineLoc1s.Add(d); public IEnumerable CustomFineLoc1s() => _fineLoc1s; public void AddCustomFineLoc2s(IEnumerable d) => _fineLoc2s.AddRange(d); public void AddCustomFineLoc2(MMEFineLocations2 d) => _fineLoc2s.Add(d); public IEnumerable CustomFineLoc2s() => _fineLoc2s; public void AddCustomFineLoc3s(IEnumerable d) => _fineLoc3s.AddRange(d); public void AddCustomFineLoc3(MMEFineLocations3 d) => _fineLoc3s.Add(d); public IEnumerable CustomFineLoc3s() => _fineLoc3s; public void AddDirections(IEnumerable d) => _directions.AddRange(d); public void AddDirection(MMEDirections d) => _directions.Add(d); public IEnumerable Directions() => _directions; public void AddCustomMainLocations(IEnumerable d) => _mainLocations.AddRange(d); public void AddCustomMainLocation(MMETransducerMainLocation d) => _mainLocations.Add(d); public IEnumerable CustomMainLocations() => _mainLocations; public void AddUsers(IEnumerable users) => _users.AddRange(users); public void AddUser(User user) => _users.Add(user); public IEnumerable Users() => _users; public void AddSensorModels(IEnumerable s) => _sensorModels.AddRange(s); public void AddSensorModel(SensorModel s) => _sensorModels.Add(s); public IEnumerable SensorModels() => _sensorModels; public void AddCustomChannels(IEnumerable channels) => _customChannels.AddRange(channels); public void AddCustomChannel(MMEPossibleChannels channel) => _customChannels.Add(channel); public IEnumerable CustomChannels() => _customChannels; public void AddTestObjects(IEnumerable objects) => _testObjects.AddRange(objects); public void AddTestObject(MMETestObjects objects) => _testObjects.Add(objects); public IEnumerable TestObjects() => _testObjects; public void AddHardwareList(IEnumerable hardwareList) { _hardware.AddRange(hardwareList); } public void AddHardware(DASHardware hardware) { _hardware.Add(hardware); } public IEnumerable Hardware() { return _hardware; } public void AddCalibrations(IEnumerable sensorCalibrations) { _calibrations.AddRange(sensorCalibrations); } public void AddCalibration(SensorCalibration sensorCalibration) { _calibrations.Add(sensorCalibration); } public IEnumerable Calibrations() { return _calibrations; } public void AddTestSetups(IEnumerable testTemplates) { _testSetups.AddRange(testTemplates); } public void AddTestSetup(TestTemplate testTemplate) { _testSetups.Add(testTemplate); } public IEnumerable TestSetups() { return _testSetups; } public void ClearTestSetups() { _testSetups.Clear(); } public void AddGroups(IEnumerable groups) { _groupList.AddRange(groups); } public void AddGroup(DataPROWin7.DataModel.TestObject group) { _groupList.Add(group); } public IEnumerable Groups() { return _groupList; } public void AddSensors(IEnumerable sensorsData) { _sensors.AddRange(sensorsData); } public void AddSensor(SensorData sensorData) { _sensors.Add(sensorData); } public IEnumerable Sensors() { return _sensors; } public IReadOnlyDictionary GetSensorLookup() { var lookup = new Dictionary(); var sensors = Sensors(); foreach (var sensor in sensors) { if (lookup.ContainsKey(sensor.DatabaseId)) { //I would prefer this in the APIlog, but it doesn't seem to be accessible here //and I didn't think it work of putting a delegate around System.Diagnostics.Trace.WriteLine($"sensor {sensor.SerialNumber} [{sensor.DatabaseId}] is a duplicate of {lookup[sensor.DatabaseId].SerialNumber}"); } else { lookup[sensor.DatabaseId] = sensor; } } return lookup; } public void ClearSensors() { _sensors.Clear(); } public void AddGroupTemplates(IEnumerable templates) { _groupTemplates.AddRange(templates); } public void AddGroupTemplate(DataPROWin7.DataModel.TestObjectTemplate template) { _groupTemplates.Add(template); } public IEnumerable GroupTemplates() { return _groupTemplates; } public void AddCustomerDetailsList(IEnumerable details) { _customerDetails.AddRange(details); } public void AddCustomerDetails(ISO.CustomerDetails details) { _customerDetails.Add(details); } public IEnumerable CustomerDetails() { return _customerDetails; } public void AddLabDetailsList(IEnumerable details) { _labDetails.AddRange(details); } public void AddLabDetails(ISO.LabratoryDetails details) { _labDetails.Add(details); } public IEnumerable LabDetails() { return _labDetails; } public void AddTestEngineerDetailsList(IEnumerable details) { _testEngineerDetails.AddRange(details); } public void AddTestEngineerDetails(ISO.TestEngineerDetails details) { _testEngineerDetails.Add(details); } public IEnumerable TestEngineerDetails() { return _testEngineerDetails; } public void AddStaticGroups(IEnumerable groups) { _iGroups.AddRange(groups); } public void AddStaticGroup(Interface.Groups.GroupList.IGroup group) { _iGroups.Add(group); } public IEnumerable StaticGroups() { return _iGroups; } public void AssignSensorLookup(Dictionary sensorLookup) { _sensorLookup = new Dictionary(sensorLookup); } public void AddSensorLookup(string serial, SensorData sensorData) { _sensorLookup[serial] = sensorData; } public SensorData SensorLookup(string serial) { return _sensorLookup[serial]; } public Dictionary SensorsLookup() { return _sensorLookup; } public void AssignCalibrationLookup(Dictionary> calibrationLookup) { _calibrationLookup = new Dictionary>(calibrationLookup); } public void AddCalibrationLookup(string serial, List sensorCalibrations) { _calibrationLookup[serial] = sensorCalibrations; } public List CalibrationLookup(string serial) { return _calibrationLookup[serial]; } public Dictionary> CalibrationsLookup() { return _calibrationLookup; } public void AssignSensorModelLookup(Dictionary> calibrationLookup) { _sensorModelLookup = new Dictionary(); } public void AddSensorModelLookup(string key, SensorModel sensorModel) { _sensorModelLookup[key] = sensorModel; } public SensorModel SensorModelLookup(string key) { return _sensorModelLookup[key]; } public Dictionary SensorModelsLookup() { return _sensorModelLookup; } public void AssignSensorGroupNameLookup(Dictionary sensorGroupNameLookup) { _sensorGroupNameLookup = new Dictionary(sensorGroupNameLookup); } public void AddSensorGroupNameLookup(string serial, string name) { _sensorGroupNameLookup[serial] = name; } public string SensorGroupNameLookup(string serial) { return _sensorGroupNameLookup[serial]; } public Dictionary SensorGroupNamesLookup() { return _sensorGroupNameLookup; } public void AssignSensorGroupTypeLookup(Dictionary sensorGroupTypeLookup) { _sensorGroupTypeLookup = new Dictionary(sensorGroupTypeLookup); } public void AddSensorGroupTypeLookup(string serial, string name) { _sensorGroupTypeLookup[serial] = name; } public string SensorGroupTypeLookup(string serial) { return _sensorGroupTypeLookup[serial]; } public Dictionary SensorGroupTypesLookup() { return _sensorGroupTypeLookup; } public void AssignGroupNameTestObjectLookup(Dictionary groupNameTestObjectLookup) { _groupNameTestObjectLookup = new Dictionary(groupNameTestObjectLookup); } public void AddGroupNameTestObjectLookup(string serial, string name) { _groupNameTestObjectLookup[serial] = name; } public string GroupNameTestObjectLookup(string serial) { return _groupNameTestObjectLookup[serial]; } public Dictionary GroupNameTestObjectsLookup() { return _groupNameTestObjectLookup; } public void AssignGroupNameSensorsLookup(Dictionary> groupNameSensorsLookup) { _groupNameSensorsLookup = new Dictionary>(groupNameSensorsLookup); } public void AddGroupNameSensorsLookup(string name, List sensors) { _groupNameSensorsLookup[name] = sensors; } public List GroupNameSensorsLookup(string name) { return _groupNameSensorsLookup[name]; } public Dictionary> GroupNameSensorsListLookup() { return _groupNameSensorsLookup; } public void AddSensorChannelCodeLookup(string settingName, string serial) { _sensorChannelCodeLookup[settingName] = serial; } public string SensorChannelCodeLookup(string settingName) { return _sensorChannelCodeLookup[settingName]; } } }