This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,381 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Controls;
using System.Xml;
namespace DatabaseImport
{
/// <summary>
/// Interaction logic for ImportTestSetup.xaml
/// this control handles importing a test setup
/// </summary>
public partial class ImportTestSetup : UserControl//, IPageContent, INotifyPropertyChanged
{
/// <summary>
/// sets the status (and reports an error message if necessary)
/// thread friendly
/// </summary>
/// <param name="status"></param>
/// <param name="errorMessage"></param>
/// <summary>
/// these structures hold any custom iso fields until import is pressed
/// </summary>
public static readonly List<MMEDirections> Directions = new List<MMEDirections>();
public static readonly List<MMEFilterClasses> FilterClasses = new List<MMEFilterClasses>();
public static readonly List<MMEFineLocations1> FineLoc1s = new List<MMEFineLocations1>();
public static readonly List<MMEFineLocations2> FineLoc2s = new List<MMEFineLocations2>();
public static readonly List<MMEFineLocations3> FineLoc3s = new List<MMEFineLocations3>();
public static readonly List<MMETransducerMainLocation> MainLocs = new List<MMETransducerMainLocation>();
public static readonly List<MMETestObjects> TestObjects = new List<MMETestObjects>();
public static readonly List<MMEPhysicalDimensions> PhysicalDimensions = new List<MMEPhysicalDimensions>();
public static readonly List<MMEPositions> Positions = new List<MMEPositions>();
private static readonly List<SensorData> _sensorsWithDuplicateIds = new List<SensorData>();
private static double CurrentVersion = 2.0D;
private static double _importedVersion;
private static void Cleanup()
{
Calibrations.Clear();
_customChannels.Clear();
CustomerDetails.Clear();
LabDetails.Clear();
_hardware.Clear();
_testChannelOrder.Clear();
_sensorModels.Clear();
Sensors.Clear();
_sensorsWithDuplicateIds.Clear();
_groupTemplates.Clear();
_groups.Clear();
_testSetups.Clear();
Directions.Clear();
FilterClasses.Clear();
FineLoc1s.Clear();
FineLoc2s.Clear();
FineLoc3s.Clear();
MainLocs.Clear();
TestObjects.Clear();
PhysicalDimensions.Clear();
Positions.Clear();
_globalSettings.Clear();
_users.Clear();
}
public static void ProcessRootNode(string name, string outerXML, DbImporter.SetStatusDelegate SetStatus)
{
//if (CancelCheck(SetStatus, page)) { return; }
switch (name)
{
case "CustomerDetail":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportCustomerDetails.ToString(),
"@CustomerDetails", "CustomerDetails", outerXML);//, SetStatus, page);
break;
case "TestEngineerDetail":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTestEngineerDetails.ToString(),
"@TestEngineerDetails", "TestEngineerDetails", outerXML);//, SetStatus, page);
break;
case "LabDetail":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportLabDetails.ToString(),
"@LabDetails", "LabDetails", outerXML);//, SetStatus, page);
break;
case "DASHardware":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportDASList.ToString(),
"@DASList", "DASList", outerXML);//, SetStatus, page);
break;
case "SensorModel":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportSensorModel.ToString(),
"@SensorModel", "SensorModels", outerXML);//, SetStatus, page);
break;
case "SensorData":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportSensors.ToString(),
"@Sensors", "Sensors", outerXML);//, SetStatus, page);
break;
case "SensorCalibration":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportSensorsCalibration.ToString(),
"@SensorsCalibrations", "Calibrations", outerXML);//, SetStatus, page);
break;
case "CustomDirection":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEDirections.ToString(),
"@MMEDirections", "CustomDirections", outerXML);//, SetStatus, page);
break;
case "CustomTestObject":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMETestObjects.ToString(),
"@MMETestObjects", "CustomTestObjects", outerXML);//, SetStatus, page);
break;
case "FineLocation1":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEFineLocations1.ToString(),
"@MMEFineLocations1", "CustomFinLoc1s", outerXML);//, SetStatus, page);
break;
case "FineLocation2":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEFineLocations2.ToString(),
"@MMEFineLocations2", "CustomFinLoc2s", outerXML);//, SetStatus, page);
break;
case "FineLocation3":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEFineLocations3.ToString(),
"@MMEFineLocations3", "CustomFinLoc3s", outerXML);//, SetStatus, page);
break;
case "TransducerMainLocation":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEMainLocations.ToString(),
"@MMEMainLocations", "CustomMainLocs", outerXML);//, SetStatus, page);
break;
case "PhysicalDimension":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEPhysicalDimensions.ToString(),
"@MMEPhysicalDimensions", "CustomPhysicalDimensions", outerXML);//, SetStatus, page);
break;
case "Position":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEPositions.ToString(),
"@MMEPositions", "CustomPositions", outerXML);//, SetStatus, page);
break;
case "CustomChannel":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportMMEPossibleChannels.ToString(),
"@MMEPossibleChannels", "CustomChannels", outerXML);//, SetStatus, page);
break;
case "GroupTemplate":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportGroupTemplate.ToString(),
"@GroupTemplates", "GroupTemplates", outerXML);//, SetStatus, page);
break;
case "TestObject":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportGroup.ToString(),
"@Groups", "Groups", outerXML);//, SetStatus, page);
break;
case "TestSetup":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTestSetups.ToString(),
"@TestSetups", "TestSetups", outerXML);//, SetStatus, page);
////Store the compressed binary copy of the Test Setup
//var testSetupName = GetTestSetupName(outerXML);
//var tempTestSetup = TestTemplateList.TestTemplatesList.GetTemplate(testSetupName);
//if (tempTestSetup.RegionsOfInterest == null)
//{
// tempTestSetup.RegionsOfInterest = new BindingList<IRegionOfInterest>() { new RegionOfInterest("", true, tempTestSetup.ROIStart, tempTestSetup.ROIEnd) };
//}
//AddCompressedTestSetupField(tempTestSetup);
break;
case "UIItem":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportUIItems.ToString(),
"@UIItems", "UIItems", outerXML);
break;
case "User":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportUsers.ToString(),
"@Users", "Users", outerXML);//, SetStatus, page);
break;
case "UIItemSetting":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportUIItemSettings.ToString(),
"@UIItemSettings", "UIItemSettings", outerXML);
break;
case "Setting":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportSettings.ToString(),
"@GlobalSettings", "GlobalSettings", outerXML);//, SetStatus, page);
break;
case "UserHardware":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportLastUsedHardware.ToString(),
"@LastUsedHardware", "LastUsedHardware", outerXML);//, SetStatus, page);
break;
case "Tag":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTags.ToString(),
"@Tags", "Tags", outerXML);//, SetStatus, page);
break;
case "TagAssignment":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTagAssignments.ToString(),
"@TagAssignments", "TagAssignments", outerXML);//, SetStatus, page);
break;
case "TemplateZone":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTemplateZones.ToString(),
"@TemplateZones", "TemplateZones", outerXML);//, SetStatus, page);
break;
case "TemplateRegion":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportTemplateRegions.ToString(),
"@TemplateRegions", "TemplateRegions", outerXML);//, SetStatus, page);
break;
case "DbVersion":
ImportElement(DbOperationsEnum.StoredProcedure.sp_DBImportDbVersions.ToString(),
"@DbVersions", "DbVersions", outerXML);//, SetStatus, page);
break;
}
}
private static void ImportElement(string storedProcedure, string storedProcedureParameter, string outerElementName, string outerXML)//, SetStatusDelegate setStatus, DataPROPage page)
{
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = storedProcedure;
cmd.CommandTimeout = 60; // 1 minute
#region params
cmd.Parameters.Add(
new SqlParameter(storedProcedureParameter, SqlDbType.Xml)
{
Value = "<" + outerElementName + ">" + outerXML + "</" + outerElementName + ">"
});
var errorNumberParam =
new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumberParam);
var errorMessageParam = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250)
{
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(errorMessageParam);
#endregion params
cmd.ExecuteNonQuery();
if (int.Parse(errorNumberParam.Value.ToString()) != 0)
{
//errorMessageParam.Value
}
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception)
{
//APILogger.Log(ex);
throw;
}
}
private static string GetTestSetupName(string outerXML)
{
var doc = new XmlDocument();
doc.LoadXml(outerXML);
var testSetupName = doc.SelectSingleNode("TestSetup/Fields/SetupName")?.InnerText;
return testSetupName;
}
/// <summary>
/// the collection of cal histories for sensors in the import file
/// </summary>
public static readonly List<SensorCalibration> Calibrations = new List<SensorCalibration>();
private static void ImportCalibrations(XmlElement root, DbImporter.SetStatusDelegate setStatus)//, DataPROPage page)
{
if (_importedVersion == 2.0D)
{
foreach (var node in root.ChildNodes)
{
//if (CancelCheck(setStatus, page)) { return; }
if (node is XmlElement)
{
var sc = new SensorCalibration();
sc.ReadXML(node as XmlElement);
Calibrations.Add(sc);
}
}
}
if (_importedVersion == 1.0D)
{
foreach (var node in root.ChildNodes)
{
//if (CancelCheck(setStatus, page)) { return; }
if (node is XmlElement)
{
var sc = new SensorCalibration();
sc.ReadXML(node as XmlElement);
sc.Records.Records[0].AtCapacity = false;
if (sc.NonLinear)
{
sc.Records.Records[0].SensitivityUnits = Test.Module.Channel.Sensor.SensUnits.NONE;
}
else if (sc.IsProportional)
{
sc.Records.Records[0].SensitivityUnits = Test.Module.Channel.Sensor.SensUnits.mVperVperEU;
}
else
{
sc.Records.Records[0].SensitivityUnits = Test.Module.Channel.Sensor.SensUnits.mVperEU;
}
Calibrations.Add(sc);
}
}
}
}
public static readonly List<ISO.CustomerDetails> CustomerDetails = new List<ISO.CustomerDetails>();
private static void ImportCustomerDetails(XmlElement root, DbImporter.SetStatusDelegate setStatus)//, DataPROPage page)
{
foreach (var node in root.ChildNodes)
{
//if (CancelCheck(setStatus, page)) { return; }
if (node is XmlElement)
{
CustomerDetails.Add(ISO.CustomerDetails.ReadXML(node as XmlElement));
}
}
}
private static readonly List<User> _users = new List<User>();
public static readonly List<ISO.LabratoryDetails> LabDetails = new List<ISO.LabratoryDetails>();
private static void ImportLabDetails(XmlElement root, DbImporter.SetStatusDelegate setStatus)//, DataPROPage page)
{
foreach (var node in root.ChildNodes)
{
//if (CancelCheck(setStatus, page)) { return; }
if (node is XmlElement)
{
LabDetails.Add(ISO.LabratoryDetails.ReadXML(node as XmlElement));
}
}
}
/// <summary>
/// the global settings that can be imported/exported
/// </summary>
private static readonly Dictionary<string, string> _globalSettings = new Dictionary<string, string>();
/// <summary>
/// the list of custom channels in the import file
/// </summary>
private static readonly List<MMEPossibleChannels> _customChannels = new List<MMEPossibleChannels>();
/// <summary>
/// for imports that define a specific channel order in the test
/// 9123 Test Sensor Import File CSV channel order reversed and jumbled
/// </summary>
private static readonly List<string> _testChannelOrder = new List<string>();
/// <summary>
/// the list of hardare in the import file
/// </summary>
private static readonly List<DASHardware> _hardware = new List<DASHardware>();
/// <summary>
/// the list of groups in the import file
/// </summary>
private static readonly List<TestObject> _groups = new List<TestObject>();
/// <summary>
/// the list of group templates in the import file
/// </summary>
private static readonly List<TestObjectTemplate> _groupTemplates = new List<TestObjectTemplate>();
/// <summary>
/// the list of sensor models in the import file
/// </summary>
private static readonly List<SensorModel> _sensorModels = new List<SensorModel>();
/// <summary>
/// the list of sensors in the import file
/// </summary>
public static readonly List<SensorData> Sensors = new List<SensorData>();
/// <summary>
/// the list of test setups in the import file
/// </summary>
public static List<TestTemplate> _testSetups = new List<TestTemplate>();
/// <summary>
/// all possible status for UI
/// </summary>
public enum PossibleStatus
{
Waiting,
Working,
Done,
Failed
}
}
}

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
namespace DatabaseImport
{
public class WaitCursor : IDisposable
{
private Cursor _previousCursor;
public WaitCursor()
{
_previousCursor = Mouse.OverrideCursor;
Mouse.OverrideCursor = Cursors.Wait;
}
// #region IDisposable Members
public void Dispose()
{
Mouse.OverrideCursor = _previousCursor;
}
// #endregion
}
}