using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using System.IO; using System.Text; using System.Xml; namespace DASFactoryDb.Download { public static class Download { /// /// clears all existing download status for given das /// /// public static void ClearExistingEventDownloadStatus(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventDownloadStatusClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears all arm attempts for a given data recorder /// /// public static void ClearExistingEventArmAttempts(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventArmAttemptsClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears any existing event fault flags for given das /// /// public static void ClearExistingFaultFlags(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventFaultFlagsClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears any existing event info for a given das /// /// public static void ClearExistingDownloadReports(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_DownloadReportClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears any existing event guids for given das /// /// public static void ClearExistingEventGuids(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventGuidsClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears any existing download requests in the db for given das /// /// public static void ClearExistingDownloadRequests(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_DownloadRequestsClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void InsertEventFaultFlags(int iDASRecordId, ushort faultFlag) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventFaultFlagsInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@FaultFlag", SqlDbType.SmallInt) { Value = faultFlag }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_Id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); } finally { cmd.Connection.Dispose(); } } } public static void InsertEventArmAttempts(int iDASRecordId, int armAttempts) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventArmAttemptsInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.SmallInt) { Value = armAttempts }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void InsertEventInfo(int iDASRecordId, int eventNumber, Guid testGUID, ushort faultFlags, int armAttempts, DateTime testTime, string testID, string description, bool hasBeenDownloaded, bool wasTriggered, string xml) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventInfoInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber }); cmd.Parameters.Add(new SqlParameter("@TestGuid", SqlDbType.NVarChar, 50) { Value = testGUID.ToString().ToUpper() }); cmd.Parameters.Add(new SqlParameter("@FaultFlags", SqlDbType.SmallInt) { Value = faultFlags }); cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.Int) { Value = armAttempts }); if (DateTime.MinValue.Equals(testTime)) { testTime = (DateTime)SqlDateTime.MinValue; } cmd.Parameters.Add(new SqlParameter("@TestTime", SqlDbType.DateTime) { Value = testTime }); cmd.Parameters.Add(new SqlParameter("@TestId", SqlDbType.NVarChar) { Value = testID }); cmd.Parameters.Add(new SqlParameter("@Description", SqlDbType.NVarChar) { Value = description }); cmd.Parameters.Add(new SqlParameter("@HasBeenDownloaded", SqlDbType.Bit) { Value = hasBeenDownloaded }); cmd.Parameters.Add(new SqlParameter("WasTriggered", SqlDbType.Bit) { Value = wasTriggered }); cmd.Parameters.Add(new SqlParameter("@Modules", SqlDbType.VarBinary) { Value = Encoding.UTF8.GetBytes(xml) }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void InsertEventDownloadStatus(int iDASRecordId, bool downloadStatus) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventDownloadStatusInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@Downloaded", SqlDbType.Bit) { Value = downloadStatus }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void DownloadRequestInsert(int iDASRecordId, ushort eventNumber, int dasChannelNumber, ulong startSample, ulong endSample, ulong samplesToSkip, double startRecordTimeStampSec, double triggerTimeStampSec, double startRecordTimeStampNanoSec, double triggerTimestampNanoSec, bool PTPMasterSync) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_DownloadRequestsInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt) { Value = eventNumber }); cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int) { Value = dasChannelNumber }); cmd.Parameters.Add(new SqlParameter("@StartSample", SqlDbType.Int) { Value = startSample }); cmd.Parameters.Add(new SqlParameter("@EndSample", SqlDbType.Int) { Value = endSample }); cmd.Parameters.Add(new SqlParameter("@SamplesToSkip", SqlDbType.Int) { Value = samplesToSkip }); cmd.Parameters.Add( new SqlParameter("@StartRecordTimeStampSec", SqlDbType.Decimal) { Value = startRecordTimeStampSec }); cmd.Parameters.Add(new SqlParameter("@TriggerTimestampSec", SqlDbType.Decimal) { Value = triggerTimeStampSec }); cmd.Parameters.Add( new SqlParameter("@StartRecordTimestampNanoSec", SqlDbType.Decimal) { Value = startRecordTimeStampSec }); cmd.Parameters.Add( new SqlParameter("@TriggerTimestampNanoSec", SqlDbType.Decimal) { Value = triggerTimestampNanoSec }); cmd.Parameters.Add(new SqlParameter("@PTPMasterSync", SqlDbType.Bit) { Value = PTPMasterSync }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void UARTDownloadRequestInsert( int iDASRecordId, ushort eventNumber, ulong totalByteCount, ulong triggerByteCount, ulong faultByteCount, ulong startTimestamp, ulong endTimestamp, int baudRate) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_UARTDownloadRequestsInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt) { Value = eventNumber }); cmd.Parameters.Add( new SqlParameter("@TotalByteCount", SqlDbType.Decimal) { Value = totalByteCount }); cmd.Parameters.Add(new SqlParameter("@TriggerByteCount", SqlDbType.Decimal) { Value = triggerByteCount }); cmd.Parameters.Add(new SqlParameter("@FaultByteCount", SqlDbType.Decimal) { Value = faultByteCount }); cmd.Parameters.Add( new SqlParameter("@StartTimestamp", SqlDbType.Decimal) { Value = startTimestamp }); cmd.Parameters.Add( new SqlParameter("@EndTimestamp", SqlDbType.Decimal) { Value = endTimestamp }); cmd.Parameters.Add(new SqlParameter("@BaudRate", SqlDbType.Int) { Value = baudRate }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } /// /// clears any existing download requests in the db for given das /// /// public static void ClearExistingUARTDownloadRequests(int idasRecordId) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_UARTDownloadRequestsClear"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = idasRecordId }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } public static void EventGuidInsert(int iDASRecordId, Guid guid) { if (!DbWrapper.Connected) { return; } using (var cmd = DbWrapper.GetDASFactoryCommand()) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_EventGuidsInsert"; cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int) { Value = iDASRecordId }); cmd.Parameters.Add(new SqlParameter("@Guid", SqlDbType.NVarChar, 50) { Value = guid.ToString().ToUpper() }); var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorNumber); var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(errorMessage); var newId = new SqlParameter("@new_Id", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(newId); cmd.ExecuteNonQuery(); DbWrapper.ProcessReturn(errorNumber, errorMessage); } finally { cmd.Connection.Dispose(); } } } } }