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,272 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Windows;
namespace DatabaseImport
{
public class TestTemplateList //: BasePropertyChanged
{
/// <summary>
/// this property is to hold a template in memory temporarily
/// without committing it to the db, but to still act as if it is in the db
/// </summary>
public TestTemplate TemporaryTemplate { get; set; }
public static SensorData GetSensorFromSettings(string settings, string serial, Dictionary<string, SensorData> lookup)
{
SensorData sd = null;
if (null != lookup && lookup.ContainsKey(serial)) { sd = lookup[serial]; }
if (null == sd) { sd = SensorsCollection.SensorsList.GetSensorBySerialNumber(serial); }
if (string.IsNullOrWhiteSpace(serial))
{
sd = new SensorData { SerialNumber = "" };
}
if (null == sd) { return null; }
sd = new SensorData(sd);
var tokens = settings.Split(',');
foreach (var token in tokens)
{
var subtokens = token.Split('=');
var setting = (ISO.TestObject.SensorSettings)int.Parse(subtokens[0]);
switch (setting)
{
case ISO.TestObject.SensorSettings.CFC:
sd.FilterClassIso = subtokens[1];
break;
case ISO.TestObject.SensorSettings.Position:
sd.Position = subtokens[1];
break;
case ISO.TestObject.SensorSettings.Polarity:
sd.Invert = subtokens[1] == "-";
break;
case ISO.TestObject.SensorSettings.Range:
sd.Capacity = double.Parse(subtokens[1], System.Globalization.CultureInfo.InvariantCulture);
break;
case ISO.TestObject.SensorSettings.Delay:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.DelayMS = double.Parse(subtokens[1], System.Globalization.CultureInfo.InvariantCulture); sd.DigitalOutputDelayMS = sd.DelayMS; }
break;
case ISO.TestObject.SensorSettings.Duration:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.DurationMS = double.Parse(subtokens[1], System.Globalization.CultureInfo.InvariantCulture); sd.DigitalOutputDurationMS = sd.DurationMS; }
break;
case ISO.TestObject.SensorSettings.OutputMode:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.DigitalOutputMode = (DigitalOutputModes)Convert.ToInt32(subtokens[1]); }
break;
case ISO.TestObject.SensorSettings.SQMode:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.SquibFireMode = (SquibFireMode)Convert.ToInt32(subtokens[1]); }
break;
case ISO.TestObject.SensorSettings.DIMode:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.InputMode = (DigitalInputModes)Convert.ToInt32(subtokens[1]); }
break;
case ISO.TestObject.SensorSettings.LimitDuration:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.LimitDuration = bool.Parse(subtokens[1]); }
break;
case ISO.TestObject.SensorSettings.ActiveValue:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.ScaleMultiplier.ActiveValue = Convert.ToDouble(subtokens[1]); }
break;
case ISO.TestObject.SensorSettings.DefaultValue:
if (!string.IsNullOrWhiteSpace(subtokens[1])) { sd.ScaleMultiplier.DefaultValue = Convert.ToDouble(subtokens[1]); }
break;
}
}
return sd;
}
public static SensorData GetSensorFromSettings(string settings, string serial)
{
return GetSensorFromSettings(settings, serial, null);
}
public static string GetSensorSettings(SensorData sd)
{
var sb = new StringBuilder();
var settings = Enum.GetValues(typeof(ISO.TestObject.SensorSettings)).Cast<ISO.TestObject.SensorSettings>().ToArray();
var bNeedComma = false;
foreach (var setting in settings)
{
if (bNeedComma) { sb.Append(","); }
bNeedComma = true;
sb.AppendFormat("{0}=", (int)setting);
switch (setting)
{
case ISO.TestObject.SensorSettings.CFC:
sb.Append(sd.FilterClassIso);
break;
case ISO.TestObject.SensorSettings.Position:
sb.Append(sd.Position);
break;
case ISO.TestObject.SensorSettings.Polarity:
sb.Append(sd.Invert ? "-" : "+");
break;
case ISO.TestObject.SensorSettings.Range:
sb.Append(sd.Capacity.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.SQMode:
sb.Append(((int)sd.SquibFireMode).ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.LimitDuration:
sb.Append(sd.LimitDuration.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.Duration:
sb.Append(sd.DurationMS.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.OutputMode:
sb.Append(((int)sd.DigitalOutputMode).ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.Delay:
sb.Append(sd.DelayMS.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.DIMode:
sb.Append(((int)sd.InputMode).ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.DefaultValue:
sb.Append(sd.ScaleMultiplier.DefaultValue.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
case ISO.TestObject.SensorSettings.ActiveValue:
sb.Append(
sd.ScaleMultiplier.ActiveValue.ToString(System.Globalization.CultureInfo.InvariantCulture));
break;
}
}
return sb.ToString();
}
private static TestTemplateList _list;
private static readonly object OBJECT_LOCK = new object();
public static TestTemplateList TestTemplatesList
{
get
{
lock (OBJECT_LOCK)
{
if (null == _list) { _list = new TestTemplateList(); }
}
return _list;
}
}
public void Reload()
{
lock (OBJECT_LOCK)
{
if (!(Application.Current is App app)) return;
app.IsoDb.RefreshAllData();
CustomChannelList.List.ReloadAll();
SensorsCollection.SensorsList.Reload();
SensorCalibrationList.Reload();
DASHardwareList.GetList().ReloadAll();
TestEngineerDetailsList.TestEngineerList.ReloadAll();
TestObjectTemplateCollection.TemplateCollection.ReloadAll(false);
TestObjectList.TestObjectsList.ReloadAll(false);
Load();
}
}
public static bool SysBuiltObject(string serialNumber)
{
var temp = false;
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_TestObjectsGet.ToString();
cmd.Parameters.Add(
new SqlParameter("@TestObjectName", SqlDbType.NVarChar, 50) { Value = serialNumber });
cmd.Parameters.Add(new SqlParameter("@TemplateName", SqlDbType.NVarChar, 255) { Value = null });
cmd.Parameters.Add(new SqlParameter("@SysBuilt", SqlDbType.Bit) { Value = null });
using (var ds2 = DbOperations.Connection.QueryDataSet(cmd))
{
if (ds2.Tables.Count <= 0 || ds2.Tables[0].Rows.Count <= 0)
{
return false;
}
foreach (DataRow row in ds2.Tables[0].Rows)
{
//really only 1 row
temp = Convert.ToBoolean(row["SysBuilt"]);
}
}
}
finally { cmd.Connection.Dispose(); }
}
return temp;
}
public static void ConvertToDictionary(DataTable dt, ref Dictionary<string, List<Dictionary<string, object>>> lookup, string key)
{
var count = dt.Columns.Count;
foreach (DataRow dr in dt.Rows)
{
var thiskey = Convert.ToString(dr[key]);
if (!lookup.ContainsKey(thiskey)) { lookup.Add(thiskey, new List<Dictionary<string, object>>()); }
var properties = new Dictionary<string, object>(count);
foreach (DataColumn c in dt.Columns)
{
properties[c.ColumnName] = dr[c.ColumnName];
}
lookup[thiskey].Add(properties);
}
}
private void Load()
{
}
/// <summary>
/// deletes all test setups originally designed so TDM imports could clear all tables except DAS
/// </summary>
public void DeleteAll()
{
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_TestSetupsDeleteAll.ToString();
#region params
#region Output
var errorMessageParam =
new SqlParameter("@ErrorMessage", SqlDbType.NVarChar, 250)
{
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(errorMessageParam);
var errorSeverityParam =
new SqlParameter("@ErrorSeverity", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorSeverityParam);
var errorNumberParam =
new SqlParameter("@ErrorState", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumberParam);
#endregion Output
#endregion params
cmd.ExecuteNonQuery();
if (DBNull.Value != errorNumberParam.Value)
{
var error = int.Parse(errorNumberParam.Value.ToString());
if (error != 0)
{
var message = int.Parse(errorNumberParam.Value.ToString());
var state = int.Parse(errorNumberParam.Value.ToString());
//APILogger.Log(
// $"Error:{Convert.ToString(error)}, State:{Convert.ToString(state)} Error: {message}");
}
}
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception) { /*APILogger.Log("failed to delete all test setups, ", ex);*/ }
//Reload();
}
}
}

View File

@@ -0,0 +1,231 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Data.SqlClient;
namespace DatabaseImport
{
public class MMETransducerMainLocation //: AbstractOLEDbWrapper
{
public string S_GUID { get; }
public string Type { get; }
public string Trans_Main_Loc { get; }
public string Text_L1 { get; }
public string Text_L2 { get; }
public long Version { get; }
public DateTime Date { get; }
public string Remarks { get; }
public bool Expired { get; }
public string SortKey { get; }
public string Picture_ShortName { get; }
public DateTime Last_Change { get; }
public string Last_Change_Text { get; }
public string History { get; }
public MMEPossibleChannels.MMEChannelTypes RecordType { get; }
public MMETransducerMainLocation(string sGuid, string type, string transMainLoc, string textL1, string textL2,
long version, DateTime date, string remarks, bool expired, string sortkey, string pictureShortName,
DateTime lastChange, string lastChangeText, string history, MMEPossibleChannels.MMEChannelTypes recordType)
{
RecordType = recordType;
S_GUID = sGuid;
Type = type;
Trans_Main_Loc = transMainLoc;
Text_L1 = textL1;
Text_L2 = textL2;
Version = version;
Date = date;
Remarks = remarks;
Expired = expired;
SortKey = sortkey;
Picture_ShortName = pictureShortName;
Last_Change = lastChange;
Last_Change_Text = lastChangeText;
History = history;
}
public static void DeleteTransducerMainLocations()
{
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEMainLocationsDelete.ToString();
cmd.Parameters.Add(new SqlParameter("@s_GUID", SqlDbType.UniqueIdentifier) { Value = null });
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);
cmd.ExecuteNonQuery();
if (int.Parse(errorNumberParam.Value.ToString()) != 0)
{
//errorMessageParam.Value
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) { /*APILogger.Log("failed to delete main locations, ", ex); */}
}
public static MMETransducerMainLocation[] GetTransducerMainLocations()
{
var transducerMainLocations = new List<MMETransducerMainLocation>();
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEMainLocationsGet.ToString();
cmd.Parameters.Add(new SqlParameter("@s_GUID", SqlDbType.NVarChar) { Value = null });
using (var ds = DbOperations.Connection.QueryDataSet(cmd))
{
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
try
{
transducerMainLocations.AddRange(from DataRow dr in ds.Tables[0].Rows
let date = Convert.ToDateTime(
dr[DbOperations.MMETables.MMEMainLocationsFields.DATE.ToString()])
let expired = Convert.ToBoolean(
dr[DbOperations.MMETables.MMEMainLocationsFields.EXPIRED.ToString()])
let history = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.HISTORY.ToString()])
let lastChange = Convert.ToDateTime(dr[
DbOperations.MMETables.MMEMainLocationsFields.LAST_CHANGE.ToString()])
let lastChangeText = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.LAST_CHANGE_TEXT.ToString()])
let pictureShortName = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.PICTURE_SHORTNAME.ToString()])
let remarks = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.REMARKS.ToString()])
let guid = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.s_GUID.ToString()])
let sortkey = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.SORTKEY.ToString()])
let text1 = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TEXT_L1.ToString()])
let text2 = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TEXT_L2.ToString()])
let mainLoc = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.TRANS_MAIN_LOC.ToString()])
let type = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TYPE.ToString()])
let version = Convert.ToInt32(
dr[DbOperations.MMETables.MMEMainLocationsFields.VERSION.ToString()])
select new MMETransducerMainLocation(guid, type, mainLoc, text1, text2,
Convert.ToInt64(version), date, remarks, expired, sortkey, pictureShortName,
lastChange, lastChangeText, history,
MMEPossibleChannels.MMEChannelTypes.ISO13499_106));
}
catch (Exception)
{
//APILogger.Log("Failed to process main locations: ", ex);
}
}
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) { /*APILogger.Log("failed to retrieve main locations, ", ex);*/ }
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEMainLocationsGetCustom.ToString();
cmd.Parameters.Add(new SqlParameter("@s_GUID", SqlDbType.NVarChar) { Value = null });
using (var ds = DbOperations.Connection.QueryDataSet(cmd))
{
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
try
{
transducerMainLocations.AddRange(from DataRow dr in ds.Tables[0].Rows
let date = Convert.ToDateTime(
dr[DbOperations.MMETables.MMEMainLocationsFields.DATE.ToString()])
let expired = Convert.ToBoolean(
dr[DbOperations.MMETables.MMEMainLocationsFields.EXPIRED.ToString()])
let history = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.HISTORY.ToString()])
let lastChange = Convert.ToDateTime(dr[
DbOperations.MMETables.MMEMainLocationsFields.LAST_CHANGE.ToString()])
let lastChangeText = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.LAST_CHANGE_TEXT.ToString()])
let pictureShortName = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.PICTURE_SHORTNAME.ToString()])
let remarks = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.REMARKS.ToString()])
let guid = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.s_GUID.ToString()])
let sortkey = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.SORTKEY.ToString()])
let text1 = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TEXT_L1.ToString()])
let text2 = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TEXT_L2.ToString()])
let mainLoc = Convert.ToString(dr[
DbOperations.MMETables.MMEMainLocationsFields.TRANS_MAIN_LOC.ToString()])
let type = Convert.ToString(
dr[DbOperations.MMETables.MMEMainLocationsFields.TYPE.ToString()])
let version = Convert.ToInt32(
dr[DbOperations.MMETables.MMEMainLocationsFields.VERSION.ToString()])
select new MMETransducerMainLocation(guid, type, mainLoc, text1, text2,
Convert.ToInt64(version), date, remarks, expired, sortkey, pictureShortName,
lastChange, lastChangeText, history,
MMEPossibleChannels.MMEChannelTypes.SQL));
}
catch (Exception)
{
//APILogger.Log("Failed to process custom main locations: ", ex);
}
}
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) { /*APILogger.Log("failed to retrieve custom main locations, ", ex); */}
return transducerMainLocations.ToArray();
}
}
}