Imports System.Data Imports System.Xml Public Class clsComposer Implements ICloneable Private mguidComposerID As Guid Private mstrComposerName As String Private m_blnObjectAlreadyPersisted As Boolean Public Sub New() mguidComposerID = Guid.NewGuid mstrComposerName = "" m_blnObjectAlreadyPersisted = False End Sub Public Sub New(ByVal lstrComposerName As String) Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "sel_composer_by_name" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerName As New SqlClient.SqlParameter prmComposerName.ParameterName = "@composer_name" prmComposerName.SqlDbType = SqlDbType.VarChar prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE prmComposerName.Value = lstrComposerName ldbcmdCommand.Parameters.Add(prmComposerName) Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand) If ldbdsComposers.Tables(0).Rows.Count > 0 Then Dim ldbrwRow As DataRow ldbrwRow = ldbdsComposers.Tables(0).Rows(0) PopulateFromDBRow(ldbrwRow) ldbdsComposers.Clear() m_blnObjectAlreadyPersisted = True Else ldbdsComposers.Clear() mguidComposerID = Guid.NewGuid mstrComposerName = lstrComposerName.Trim m_blnObjectAlreadyPersisted = False End If End Sub Public Sub New(ByVal lguidComposerID As Guid) mguidComposerID = lguidComposerID Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "sel_composer" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerID As New SqlClient.SqlParameter prmComposerID.ParameterName = "@composer_id" prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier 'prmComposerID.Size = 5 prmComposerID.Value = lguidComposerID ldbcmdCommand.Parameters.Add(prmComposerID) Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand) If ldbdsComposers.Tables(0).Rows.Count > 0 Then Dim ldbrwRow As DataRow ldbrwRow = ldbdsComposers.Tables(0).Rows(0) PopulateFromDBRow(ldbrwRow) m_blnObjectAlreadyPersisted = True MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString) End If ldbdsComposers.Clear() End Sub Public Sub New(ByVal ldbrwRow As DataRow) PopulateFromDBRow(ldbrwRow) m_blnObjectAlreadyPersisted = True MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString) End Sub Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow) mguidComposerID = CType(ldbrwRow.Item("composer_id"), Guid) mstrComposerName = CType(ldbrwRow.Item("composer_name"), String) End Sub Public Function Delete() As Boolean Try MyGlobals.RemoveCachedObject(Me.ComposerID.ToString) Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "del_composer" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerID As New SqlClient.SqlParameter prmComposerID.ParameterName = "@composer_id" prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier 'prmComposerID.Size = 5 prmComposerID.Value = mguidComposerID ldbcmdCommand.Parameters.Add(prmComposerID) Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand) If lintRowsAffected > 0 Then m_blnObjectAlreadyPersisted = False Return True Else Return False End If Catch Return False End Try End Function Public Function Save() As Boolean Try MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString) If m_blnObjectAlreadyPersisted Then Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "upd_composer" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerID As New SqlClient.SqlParameter prmComposerID.ParameterName = "@composer_id" prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier 'prmComposerID.Size = 5 prmComposerID.Value = mguidComposerID ldbcmdCommand.Parameters.Add(prmComposerID) ' Set up parameter for stored procedure Dim prmComposerName As New SqlClient.SqlParameter prmComposerName.ParameterName = "@composer_name" prmComposerName.SqlDbType = SqlDbType.VarChar prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE prmComposerName.Value = mstrComposerName ldbcmdCommand.Parameters.Add(prmComposerName) Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand) If lintRowsAffected > 0 Then Return True Else Return False End If Else Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "ins_composer" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerID As New SqlClient.SqlParameter prmComposerID.ParameterName = "@composer_id" prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier 'prmComposerID.Size = 5 prmComposerID.Value = mguidComposerID ldbcmdCommand.Parameters.Add(prmComposerID) ' Set up parameter for stored procedure Dim prmComposerName As New SqlClient.SqlParameter prmComposerName.ParameterName = "@composer_name" prmComposerName.SqlDbType = SqlDbType.VarChar prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE prmComposerName.Value = mstrComposerName ldbcmdCommand.Parameters.Add(prmComposerName) Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand) If lintRowsAffected > 0 Then m_blnObjectAlreadyPersisted = True Return True Else Return False End If End If Catch Return False End Try End Function Public Function DuplicateExists(ByVal lstrComposerNameToCheck As String) As Boolean Try Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "sel_composer_by_name" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerName As New SqlClient.SqlParameter prmComposerName.ParameterName = "@composer_name" prmComposerName.SqlDbType = SqlDbType.VarChar prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE prmComposerName.Value = lstrComposerNameToCheck ldbcmdCommand.Parameters.Add(prmComposerName) Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand) If ldbdsComposers.Tables(0).Rows.Count > 0 Then Dim ldbrwRow As DataRow For Each ldbrwRow In ldbdsComposers.Tables(0).Rows If mguidComposerID.Equals(CType(ldbrwRow.Item("composer_id"), Guid)) Then 'OK Else ldbdsComposers.Clear() Return True End If Next End If ldbdsComposers.Clear() Return False Catch Return False End Try End Function Public Property ComposerID() As Guid Get Return mguidComposerID End Get Set(ByVal lguidValue As Guid) mguidComposerID = lguidValue End Set End Property Public Property ComposerName() As String Get Return mstrComposerName End Get Set(ByVal sValue As String) mstrComposerName = sValue.Trim End Set End Property Public Property ItemAlreadyPersisted() As Boolean Get Return m_blnObjectAlreadyPersisted End Get Set(ByVal Value As Boolean) m_blnObjectAlreadyPersisted = Value End Set End Property Public Function Clone() As Object Implements ICloneable.Clone Dim lobjReturnValue As New clsComposer lobjReturnValue.ComposerID = Me.ComposerID lobjReturnValue.ComposerName = Me.ComposerName lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted Return lobjReturnValue End Function Public Function StateIsIdentical(ByVal lobjOtherComposer As clsComposer) As Boolean If Me.ComposerID.Equals(lobjOtherComposer.ComposerID) _ AndAlso Me.ComposerName = lobjOtherComposer.ComposerName Then Return True Else Return False End If End Function Public Function Validate(ByRef lstrErrorString As String) As Boolean lstrErrorString = "" If Me.ComposerName.Length = 0 Then lstrErrorString = "Composer Name is required" Return False End If If Me.DuplicateExists(Me.ComposerName) Then lstrErrorString = "Given Composer Name already exists" Return False End If Return True End Function Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean Dim lblnReturnValue As Boolean lblnReturnValue = True lstrReferencedByString = "" Dim ldbcmdCommand As New SqlClient.SqlCommand ldbcmdCommand.CommandText = "sel_composer_isreferenced" ldbcmdCommand.CommandType = CommandType.StoredProcedure ' Set up parameter for stored procedure Dim prmComposerID As New SqlClient.SqlParameter prmComposerID.ParameterName = "@composer_id" prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier 'prmComposerID.Size = 5 prmComposerID.Value = mguidComposerID ldbcmdCommand.Parameters.Add(prmComposerID) Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand) If ldbdsComposers.Tables(0).Rows.Count > 0 Then lblnReturnValue = False Dim ldbrwRow As DataRow For Each ldbrwRow In ldbdsComposers.Tables(0).Rows If Not ldbrwRow.IsNull("table_referencing_instance") Then If lstrReferencedByString.Length = 0 Then lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)" Else lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)" End If End If Next End If ldbdsComposers.Clear() Return lblnReturnValue End Function Public Overrides Function ToString() As String Return mstrComposerName End Function Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter) objXMLWriter.WriteStartElement("Composer") objXMLWriter.WriteElementString("ComposerID", Me.ComposerID.ToString) objXMLWriter.WriteElementString("ComposerName", Me.ComposerName) objXMLWriter.WriteEndElement() End Sub Public Shared Function GetAllComposers() As System.Collections.Generic.List(Of clsComposer) Dim lguidComposerID As Guid Dim ldbcmdCommand As New SqlClient.SqlCommand Dim lobjComposer As clsComposer Dim lcolComposers As New System.Collections.Generic.List(Of clsComposer) ldbcmdCommand.CommandText = "sel_composer_all" ldbcmdCommand.CommandType = CommandType.StoredProcedure Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand) If ldbdsComposers.Tables(0).Rows.Count > 0 Then Dim ldbrwRow As DataRow For Each ldbrwRow In ldbdsComposers.Tables(0).Rows lguidComposerID = CType(ldbrwRow.Item("composer_id"), Guid) If MyGlobals.CachedObjectExists(lguidComposerID.ToString) Then lobjComposer = CType(MyGlobals.CachedObjectRetrieve(lguidComposerID.ToString), clsComposer) Else 'lobjComposer = New clsComposer(lguidComposerID) lobjComposer = New clsComposer(ldbrwRow) End If lcolComposers.Add(lobjComposer) Next End If ldbdsComposers.Clear() Return lcolComposers End Function Public Shared Sub AddAllComposersToCache() If MyGlobals.g_objObjectTypesCached.Contains("Composers") = False Then GetAllComposers() MyGlobals.g_objObjectTypesCached.Add("Composers") End If End Sub End Class