init
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user