using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Data.OleDb; namespace DatabaseExport { /// /// a test object is a top level object in the ISO database /// given a test object, it is possible to find all possible channels as defined in ISO /// note there is a ? test object ... /// I'll use these to build templates /// public class MMETestObjects : AbstractOLEDbWrapper { public string S_GUID { get; } public string Test_Object { 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 DateTime Last_Change { get; } public string Last_Change_Text { get; } public string History { get; } public MMEPossibleChannels.MMEChannelTypes RecordType { get; } = MMEPossibleChannels.MMEChannelTypes.ISO13499_106; public MMETestObjects(string sGuid, string testObject, string textL1, string textL2, long version, DateTime date, string remarks, bool expired, string sortkey, DateTime lastChange, string lastChangeText, string history, MMEPossibleChannels.MMEChannelTypes type) { RecordType = type; S_GUID = sGuid; Test_Object = testObject; Text_L1 = textL1; Text_L2 = textL2; Version = version; Date = date; Remarks = remarks; Expired = expired; SortKey = sortkey; Last_Change = lastChange; Last_Change_Text = lastChangeText; History = history; } public static MMETestObjects GetTestObject(OleDbConnection connection, string sGUID) { var testObjects = new List(); try { using (var command = new OleDbCommand()) { command.Connection = connection; var param = new OleDbParameter("@SGuid", sGUID); command.Parameters.Add(param); command.CommandText = "SELECT * from [MME_TEST_OBJECTS] WHERE [s_GUID]=@SGuid"; using (var reader = command.ExecuteReader()) { while (reader.Read()) { var sGuid = reader["s_GUID"].ToString(); var testObject = reader["TEST_OBJECT"].ToString(); var textL1 = reader["TEXT_L1"].ToString(); var textL2 = reader["TEXT_L2"].ToString(); var version = AbstractOLEDbWrapper.GetLong(reader, "VERSION"); var date = (DateTime)reader["DATE"]; var remarks = reader["REMARKS"].ToString(); var expired = (bool)reader["EXPIRED"]; var sortkey = reader["SORTKEY"].ToString(); var lastChange = AbstractOLEDbWrapper.GetDate(reader, "LAST_CHANGE"); var lastChangeText = reader["LAST_CHANGE_TEXT"].ToString(); var history = reader["HISTORY"].ToString(); testObjects.Add(new MMETestObjects(sGuid, testObject, textL1, textL2, version, date, remarks, expired, sortkey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.ISO13499_106)); } } } long l; if (long.TryParse(sGUID, out l)) { using (var cmd = DbOperations.GetCommand()) { cmd.CommandText = string.Format("SELECT * from {0} where {1}=@{1}", DbOperations.MMETables.MMETestObjectsTable, DbOperations.MMETables.MMETestObjectsFields.s_GUID.ToString()); DbOperations.CreateParam(cmd, string.Format("@{0}", DbOperations.MMETables.MMETestObjectsFields.s_GUID.ToString()), System.Data.SqlDbType.BigInt, l); using (var ds = DbOperations.Connection.QueryDataSet(cmd)) { if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var fields = Enum.GetValues(typeof(DbOperations.MMETables.MMETestObjectsFields)) .Cast().ToArray(); foreach (System.Data.DataRow dr in ds.Tables[0].Rows) { var version = 0; var text2 = ""; var text1 = ""; var testObject = "?"; var sortkey = ""; var remarks = ""; var lastChangeText = ""; var lastChange = DateTime.Now; var history = ""; var expired = false; var date = DateTime.Now; foreach (var field in fields) { try { if (DBNull.Value.Equals(dr[field.ToString()])) { continue; } var o = dr[field.ToString()]; switch (field) { case DbOperations.MMETables.MMETestObjectsFields.DATE: date = Convert.ToDateTime(o); break; case DbOperations.MMETables.MMETestObjectsFields.EXPIRED: expired = Convert.ToBoolean(o); break; case DbOperations.MMETables.MMETestObjectsFields.HISTORY: history = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE: lastChange = Convert.ToDateTime(o); break; case DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE_TEXT: lastChangeText = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.REMARKS: remarks = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.s_GUID: //this was part of the where ... we don't need it break; case DbOperations.MMETables.MMETestObjectsFields.SORTKEY: sortkey = Convert.ToString(sortkey); break; case DbOperations.MMETables.MMETestObjectsFields.TEST_OBJECT: testObject = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.TEXT_L1: text1 = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.TEXT_L2: text2 = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.VERSION: version = Convert.ToInt32(o); break; } } catch (Exception) { //ignore } } testObjects.Add(new MMETestObjects(sGUID, testObject, text1, text2, Convert.ToInt64(version), date, remarks, expired, sortkey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.SQL)); } } } } } } catch (Exception) { //ignore } if (testObjects.Count > 0) { return testObjects[0]; } else { return null; } } public static MMETestObjects[] GetTestObjects() { var testObjects = new List(); try { using (var cmd = DbOperations.GetISOCommand()) { cmd.CommandText = "SELECT * FROM MMETestObjects"; cmd.CommandType = CommandType.Text; try { using (var ISOReader = cmd.ExecuteReader()) { while (ISOReader.Read()) { try { string sGuid = ISOReader["s_GUID"].ToString(); string testObject = ISOReader["TEST_OBJECT"].ToString(); string textL1 = ISOReader["TEXT_L1"].ToString(); string textL2 = ISOReader["TEXT_L2"].ToString(); long version = GetLong(ISOReader, "VERSION"); DateTime date = (DateTime)ISOReader["DATE"]; string remarks = ISOReader["REMARKS"].ToString(); bool expired = (bool)ISOReader["EXPIRED"]; string sortkey = ISOReader["SORTKEY"].ToString(); DateTime lastChange = GetDate(ISOReader, "LAST_CHANGE"); string lastChangeText = ISOReader["LAST_CHANGE_TEXT"].ToString(); string history = ISOReader["HISTORY"].ToString(); testObjects.Add(new MMETestObjects(sGuid, testObject, textL1, textL2, version, date, remarks, expired, sortkey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.ISO13499_106)); } catch (Exception) { //ignore } } } } finally { cmd.Connection.Dispose(); } } try { using (var cmd = DbOperations.GetCommand()) { try { cmd.CommandText = string.Format("SELECT * FROM {0}", DbOperations.MMETables.MMETestObjectsTable); using (var ds = DbOperations.Connection.QueryDataSet(cmd)) { if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { var fields = Enum.GetValues(typeof(DbOperations.MMETables.MMETestObjectsFields)) .Cast().ToArray(); foreach (System.Data.DataRow dr in ds.Tables[0].Rows) { var version = 0; var text2 = ""; var text1 = ""; var textObject = "?"; var sortKey = ""; var sGuid = ""; var remarks = ""; var lastChangeText = ""; var lastChange = DateTime.Now; var history = ""; var expired = false; var date = DateTime.Now; foreach (var field in fields) { try { if (DBNull.Value.Equals(dr[field.ToString()])) { continue; } var o = dr[field.ToString()]; switch (field) { case DbOperations.MMETables.MMETestObjectsFields.DATE: date = Convert.ToDateTime(o); break; case DbOperations.MMETables.MMETestObjectsFields.EXPIRED: expired = Convert.ToBoolean(o); break; case DbOperations.MMETables.MMETestObjectsFields.HISTORY: history = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE: lastChange = Convert.ToDateTime(o); break; case DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE_TEXT: lastChangeText = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.REMARKS: remarks = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.s_GUID: sGuid = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.SORTKEY: sortKey = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.TEST_OBJECT: textObject = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.TEXT_L1: text1 = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.TEXT_L2: text2 = Convert.ToString(o); break; case DbOperations.MMETables.MMETestObjectsFields.VERSION: version = Convert.ToInt32(o); break; } } catch (Exception) { //ignore } } testObjects.Add(new MMETestObjects(sGuid.ToString(), textObject, text1, text2, Convert.ToInt64(version), date, remarks, expired, sortKey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.SQL)); } } } } finally { cmd.Connection.Dispose(); } } } catch (Exception) { //ignore } } catch (Exception) { //ignore } return testObjects.ToArray(); } } }