Files
OrganLit/clsHymnTuneName.vb
2026-03-07 19:38:21 -06:00

687 lines
33 KiB
VB.net

Imports System.Data
Imports System.Xml
Public Class clsHymnTuneName
Implements ICloneable
Private mguidHymnTuneNameID As Guid
Private mstrHymnTuneName As String
Private mguidHymnTuneID As Guid
Private m_OtherHymnTuneNamesForTune As SortedList
Private m_blnObjectAlreadyPersisted As Boolean
Public Sub New()
mguidHymnTuneNameID = Guid.NewGuid
mstrHymnTuneName = ""
mguidHymnTuneID = Guid.NewGuid
m_OtherHymnTuneNamesForTune = New SortedList
m_blnObjectAlreadyPersisted = False
End Sub
Public Sub New(ByVal lstrHymnTuneName As String)
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_hymn_tune_name_by_name"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneName As New SqlClient.SqlParameter
prmHymnTuneName.ParameterName = "@hymn_tune_name"
prmHymnTuneName.SqlDbType = SqlDbType.VarChar
prmHymnTuneName.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
prmHymnTuneName.Value = lstrHymnTuneName
ldbcmdCommand.Parameters.Add(prmHymnTuneName)
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
ldbrwRow = ldbdsHymnTuneNames.Tables(0).Rows(0)
mguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
mstrHymnTuneName = CType(ldbrwRow.Item("hymn_tune_name"), String)
mguidHymnTuneID = CType(ldbrwRow.Item("hymn_tune_id"), Guid)
m_OtherHymnTuneNamesForTune = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
ldbdsHymnTuneNames.Clear()
m_blnObjectAlreadyPersisted = True
Else
ldbdsHymnTuneNames.Clear()
mguidHymnTuneNameID = Guid.NewGuid
mstrHymnTuneName = lstrHymnTuneName.Trim
mguidHymnTuneID = Guid.NewGuid
m_OtherHymnTuneNamesForTune = New SortedList
m_blnObjectAlreadyPersisted = False
End If
End Sub
Public Sub New(ByVal lguidHymnTuneNameID As Guid)
LoadByHymnTuneNameId(lguidHymnTuneNameID, True)
End Sub
Protected Sub New(ByVal lguidHymnTuneNameID As Guid, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
LoadByHymnTuneNameId(lguidHymnTuneNameID, lblnLoadOtherTuneNamesForTune)
End Sub
Public Sub New(ByVal ldbrwRow As DataRow)
PopulateFromDBRow(ldbrwRow, True)
m_blnObjectAlreadyPersisted = True
End Sub
Protected Sub New(ByVal ldbrwRow As DataRow, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
PopulateFromDBRow(ldbrwRow, lblnLoadOtherTuneNamesForTune)
m_blnObjectAlreadyPersisted = True
End Sub
Private Sub LoadByHymnTuneNameId(ByVal lguidHymnTuneNameID As Guid, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
mguidHymnTuneNameID = lguidHymnTuneNameID
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_hymn_tune_name"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameID.Value = lguidHymnTuneNameID
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
ldbrwRow = ldbdsHymnTuneNames.Tables(0).Rows(0)
PopulateFromDBRow(ldbrwRow, lblnLoadOtherTuneNamesForTune)
m_blnObjectAlreadyPersisted = True
If lblnLoadOtherTuneNamesForTune Then
MyGlobals.AddCachedObject(Me, Me.HymnTuneID.ToString)
End If
End If
ldbdsHymnTuneNames.Clear()
End Sub
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
mguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
mstrHymnTuneName = CType(ldbrwRow.Item("hymn_tune_name"), String)
mguidHymnTuneID = CType(ldbrwRow.Item("hymn_tune_id"), Guid)
If lblnLoadOtherTuneNamesForTune Then
m_OtherHymnTuneNamesForTune = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
Else
m_OtherHymnTuneNamesForTune = New SortedList
End If
If lblnLoadOtherTuneNamesForTune Then
MyGlobals.AddCachedObject(Me, Me.HymnTuneID.ToString)
End If
End Sub
Public Sub Refresh()
LoadByHymnTuneNameId(mguidHymnTuneNameID, True)
End Sub
Public Function Delete() As Boolean
MyGlobals.RemoveCachedObject(Me.HymnTuneNameID.ToString)
Try
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "del_hymn_tune_name"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameID.Value = mguidHymnTuneNameID
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
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.HymnTuneNameID.ToString)
If m_blnObjectAlreadyPersisted Then
Dim objPersisted_OtherHymnTuneNamesForTune As SortedList = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
Dim objAddedOtherHymnTuneNamesForTune As SortedList = Nothing
Dim objDroppedOtherHymnTuneNamesForTune As SortedList = Nothing
Dim objRemainingOtherHymnTuneNamesForTune As SortedList = Nothing
GetAddedDroppedRemainingOtherHymnTuneNamesForTune(objPersisted_OtherHymnTuneNamesForTune, m_OtherHymnTuneNamesForTune, objAddedOtherHymnTuneNamesForTune, objDroppedOtherHymnTuneNamesForTune, objRemainingOtherHymnTuneNamesForTune)
'If alternate tune names were droped from the list, then we need to change
'the current hymn tune name and all alternate hymn tune names that remained
'on the list to a new hymn tune ID
If objDroppedOtherHymnTuneNamesForTune.Count > 0 Then
'Get a new Hymn Tune ID for THIS hymn tune name
mguidHymnTuneID = Guid.NewGuid
Dim objDictionaryEntry As DictionaryEntry
Dim objOtherHymnTuneName As clsHymnTuneName
'Update the hymn tune ID for all hymn tune names which should REMAIN
'matched with THIS hymn tune name
For Each objDictionaryEntry In objRemainingOtherHymnTuneNamesForTune
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
objOtherHymnTuneName.HymnTuneID = mguidHymnTuneID
Dim ldbcmdCommandSaveOtherRemaining As New SqlClient.SqlCommand
ldbcmdCommandSaveOtherRemaining.CommandText = "upd_hymn_tune_name_with_tune_id"
ldbcmdCommandSaveOtherRemaining.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameIDSaveOtherRemaining As New SqlClient.SqlParameter
prmHymnTuneNameIDSaveOtherRemaining.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameIDSaveOtherRemaining.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameIDSaveOtherRemaining.Size = 5
prmHymnTuneNameIDSaveOtherRemaining.Value = objOtherHymnTuneName.HymnTuneNameID
ldbcmdCommandSaveOtherRemaining.Parameters.Add(prmHymnTuneNameIDSaveOtherRemaining)
' Set up parameter for stored procedure
Dim prmHymnTuneIDSaveOtherRemaining As New SqlClient.SqlParameter
prmHymnTuneIDSaveOtherRemaining.ParameterName = "@hymn_tune_id"
prmHymnTuneIDSaveOtherRemaining.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneIDSaveOtherRemaining.Size = 5
prmHymnTuneIDSaveOtherRemaining.Value = mguidHymnTuneID
ldbcmdCommandSaveOtherRemaining.Parameters.Add(prmHymnTuneIDSaveOtherRemaining)
Dim lintRowsAffectedSaveOtherRemaining As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandSaveOtherRemaining)
Next
End If
'If alternate hymn tune names were added, we need to change the hymn tune ID for all
'hymn tune names that were added (along with THEIR matches) to the hymn tune ID of
'the current hymn tune name
If objAddedOtherHymnTuneNamesForTune.Count > 0 Then
Dim objDictionaryEntry As DictionaryEntry
Dim objOtherHymnTuneName As clsHymnTuneName
For Each objDictionaryEntry In objAddedOtherHymnTuneNamesForTune
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
objOtherHymnTuneName.HymnTuneID = mguidHymnTuneID
Dim ldbcmdCommandSaveOtherAdded As New SqlClient.SqlCommand
ldbcmdCommandSaveOtherAdded.CommandText = "upd_hymn_tune_name_with_tune_id_with_matches"
ldbcmdCommandSaveOtherAdded.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameIDSaveOtherAdded As New SqlClient.SqlParameter
prmHymnTuneNameIDSaveOtherAdded.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameIDSaveOtherAdded.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameIDSaveOtherAdded.Value = objOtherHymnTuneName.HymnTuneNameID
ldbcmdCommandSaveOtherAdded.Parameters.Add(prmHymnTuneNameIDSaveOtherAdded)
' Set up parameter for stored procedure
Dim prmHymnTuneIDSaveOtherAdded As New SqlClient.SqlParameter
prmHymnTuneIDSaveOtherAdded.ParameterName = "@hymn_tune_id"
prmHymnTuneIDSaveOtherAdded.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneID.Size = 5
prmHymnTuneIDSaveOtherAdded.Value = mguidHymnTuneID
ldbcmdCommandSaveOtherAdded.Parameters.Add(prmHymnTuneIDSaveOtherAdded)
Dim lintRowsAffectedSaveOtherAdded As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandSaveOtherAdded)
Next
End If
Dim ldbcmdCommandUpdateThis As New SqlClient.SqlCommand
ldbcmdCommandUpdateThis.CommandText = "upd_hymn_tune_name"
ldbcmdCommandUpdateThis.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameIDUpdateThis As New SqlClient.SqlParameter
prmHymnTuneNameIDUpdateThis.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameIDUpdateThis.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameIDUpdateThis.Size = 5
prmHymnTuneNameIDUpdateThis.Value = mguidHymnTuneNameID
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneNameIDUpdateThis)
' Set up parameter for stored procedure
Dim prmHymnTuneNameUpdateThis As New SqlClient.SqlParameter
prmHymnTuneNameUpdateThis.ParameterName = "@hymn_tune_name"
prmHymnTuneNameUpdateThis.SqlDbType = SqlDbType.VarChar
prmHymnTuneNameUpdateThis.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
prmHymnTuneNameUpdateThis.Value = mstrHymnTuneName
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneNameUpdateThis)
' Set up parameter for stored procedure
Dim prmHymnTuneIDUpdateThis As New SqlClient.SqlParameter
prmHymnTuneIDUpdateThis.ParameterName = "@hymn_tune_id"
prmHymnTuneIDUpdateThis.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneIDUpdateThis.Size = 5
prmHymnTuneIDUpdateThis.Value = mguidHymnTuneID
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneIDUpdateThis)
Dim lintRowsAffectedUpdateThis As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandUpdateThis)
If lintRowsAffectedUpdateThis > 0 Then
Return True
Else
Return False
End If
Else
'If alternate tune names listed, grab hymn tune ID from first one listed,
'and update tune ID for all others, including THIS object
If m_OtherHymnTuneNamesForTune.Count > 0 Then
Dim objguidFirstTuneID As Guid
Dim blnFirstAlternameTuneName As Boolean = True
Dim objDictionaryEntry As DictionaryEntry
Dim objOtherHymnTuneName As clsHymnTuneName
For Each objDictionaryEntry In m_OtherHymnTuneNamesForTune
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
If blnFirstAlternameTuneName Then
blnFirstAlternameTuneName = False
objguidFirstTuneID = objOtherHymnTuneName.HymnTuneID
mguidHymnTuneID = objguidFirstTuneID
Else
objOtherHymnTuneName.HymnTuneID = objguidFirstTuneID
Dim ldbcmdCommandUpdateOtherAdding As New SqlClient.SqlCommand
ldbcmdCommandUpdateOtherAdding.CommandText = "upd_hymn_tune_name_with_tune_id_with_matches"
ldbcmdCommandUpdateOtherAdding.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameIDUpdateOtherAdding As New SqlClient.SqlParameter
prmHymnTuneNameIDUpdateOtherAdding.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameIDUpdateOtherAdding.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameIDUpdateOtherAdding.Size = 5
prmHymnTuneNameIDUpdateOtherAdding.Value = objOtherHymnTuneName.HymnTuneNameID
ldbcmdCommandUpdateOtherAdding.Parameters.Add(prmHymnTuneNameIDUpdateOtherAdding)
' Set up parameter for stored procedure
Dim prmHymnTuneIDUpdateOtherAdding As New SqlClient.SqlParameter
prmHymnTuneIDUpdateOtherAdding.ParameterName = "@hymn_tune_id"
prmHymnTuneIDUpdateOtherAdding.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneIDUpdateOtherAdding.Size = 5
prmHymnTuneIDUpdateOtherAdding.Value = objguidFirstTuneID
ldbcmdCommandUpdateOtherAdding.Parameters.Add(prmHymnTuneIDUpdateOtherAdding)
Dim lintRowsAffectedUpdateOtherAdding As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandUpdateOtherAdding)
End If
Next
End If
Dim ldbcmdCommandAddThis As New SqlClient.SqlCommand
ldbcmdCommandAddThis.CommandText = "ins_hymn_tune_name"
ldbcmdCommandAddThis.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameIDAddThis As New SqlClient.SqlParameter
prmHymnTuneNameIDAddThis.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameIDAddThis.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameIDAddThis.Value = mguidHymnTuneNameID
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneNameIDAddThis)
' Set up parameter for stored procedure
Dim prmHymnTuneNameAddThis As New SqlClient.SqlParameter
prmHymnTuneNameAddThis.ParameterName = "@hymn_tune_name"
prmHymnTuneNameAddThis.SqlDbType = SqlDbType.VarChar
prmHymnTuneNameAddThis.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
prmHymnTuneNameAddThis.Value = mstrHymnTuneName
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneNameAddThis)
' Set up parameter for stored procedure
Dim prmHymnTuneIDAddThis As New SqlClient.SqlParameter
prmHymnTuneIDAddThis.ParameterName = "@hymn_tune_id"
prmHymnTuneIDAddThis.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneIDAddThis.Size = 5
prmHymnTuneIDAddThis.Value = mguidHymnTuneID
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneIDAddThis)
Dim lintRowsAffectedAddThis As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandAddThis)
If lintRowsAffectedAddThis > 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 lstrHymnTuneNameToCheck As String) As Boolean
Try
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_hymn_tune_name_by_name"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneName As New SqlClient.SqlParameter
prmHymnTuneName.ParameterName = "@hymn_tune_name"
prmHymnTuneName.SqlDbType = SqlDbType.VarChar
prmHymnTuneName.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
prmHymnTuneName.Value = lstrHymnTuneNameToCheck
ldbcmdCommand.Parameters.Add(prmHymnTuneName)
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
If mguidHymnTuneNameID.Equals(CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)) Then
'OK
Else
ldbdsHymnTuneNames.Clear()
Return True
End If
Next
End If
ldbdsHymnTuneNames.Clear()
Return False
Catch
Return False
End Try
End Function
Public Property HymnTuneNameID() As Guid
Get
Return mguidHymnTuneNameID
End Get
Set(ByVal lguidValue As Guid)
mguidHymnTuneNameID = lguidValue
End Set
End Property
Public Property HymnTuneName() As String
Get
Return mstrHymnTuneName
End Get
Set(ByVal sValue As String)
mstrHymnTuneName = sValue.Trim
End Set
End Property
Public Property HymnTuneID() As Guid
Get
Return mguidHymnTuneID
End Get
Set(ByVal lguidValue As Guid)
mguidHymnTuneID = lguidValue
End Set
End Property
Public ReadOnly Property OtherHymnTuneNamesForTune() As SortedList
Get
Return m_OtherHymnTuneNamesForTune
End Get
End Property
Protected WriteOnly Property OtherHymnTuneNamesForTuneForCloning() As SortedList
Set(ByVal Value As SortedList)
m_OtherHymnTuneNamesForTune = Value
End Set
End Property
Public Sub AddAlternateHymnTuneName(ByVal lobjHymnTuneName As clsHymnTuneName)
AddAlternateTuneNameToList(lobjHymnTuneName, m_OtherHymnTuneNamesForTune)
End Sub
Public Sub RemoveAlternateHymnTuneName(ByVal lobjHymnTuneName As clsHymnTuneName)
RemoveAlternateTuneNameFromList(lobjHymnTuneName, m_OtherHymnTuneNamesForTune)
End Sub
Public Sub RemoveAlternateHymnTuneName(ByVal lstrHymnTuneName As String)
RemoveAlternateTuneNameFromList(lstrHymnTuneName, m_OtherHymnTuneNamesForTune)
End Sub
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 clsHymnTuneName
lobjReturnValue.HymnTuneNameID = Me.HymnTuneNameID
lobjReturnValue.HymnTuneName = Me.HymnTuneName
lobjReturnValue.HymnTuneID = Me.HymnTuneID
lobjReturnValue.OtherHymnTuneNamesForTuneForCloning = CType(Me.OtherHymnTuneNamesForTune.Clone, SortedList)
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
Return lobjReturnValue
End Function
Public Function StateIsIdentical(ByVal lobjOtherHymnTuneName As clsHymnTuneName) As Boolean
If Me.HymnTuneNameID.Equals(lobjOtherHymnTuneName.HymnTuneNameID) _
AndAlso Me.HymnTuneName = lobjOtherHymnTuneName.HymnTuneName _
AndAlso Me.HymnTuneID.Equals(lobjOtherHymnTuneName.HymnTuneID) Then
If Me.OtherHymnTuneNamesForTune.Count <> lobjOtherHymnTuneName.OtherHymnTuneNamesForTune.Count Then
Return False
End If
'We have the same number of alternate tune names.
'Just need to check from one side to see if all are on the other
' - If none were added, and the number is the same, then none could have been deleted
Dim objDictionaryEntry As DictionaryEntry
Dim objMeOtherHymnTuneNameForTune As clsHymnTuneName
For Each objDictionaryEntry In Me.OtherHymnTuneNamesForTune
objMeOtherHymnTuneNameForTune = CType(objDictionaryEntry.Value, clsHymnTuneName)
If Not lobjOtherHymnTuneName.OtherHymnTuneNamesForTune.ContainsKey(objMeOtherHymnTuneNameForTune.HymnTuneName) Then
Return False
End If
Next
Return True
Else
Return False
End If
End Function
Public Function Validate(ByRef lstrErrorString As String) As Boolean
lstrErrorString = ""
If Me.HymnTuneName.Length = 0 Then
lstrErrorString = "Hymn Tune Name is required"
Return False
End If
If Me.DuplicateExists(Me.HymnTuneName) Then
lstrErrorString = "Given Hymn Tune 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_hymn_tune_name_isreferenced"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameID.Value = mguidHymnTuneNameID
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
lblnReturnValue = False
Dim ldbrwRow As DataRow
For Each ldbrwRow In ldbdsHymnTuneNames.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
ldbdsHymnTuneNames.Clear()
Return lblnReturnValue
End Function
Public Overrides Function ToString() As String
Return mstrHymnTuneName
End Function
Public Function GetOtherTuneNamesForTune(ByVal lguidHymnTuneNameId As Guid) As SortedList
Dim objSortedListToReturn As New SortedList
Try
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_hymn_tune_name_others_by_hymn_tune_name_id"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnTuneNameID.Size = 5
prmHymnTuneNameID.Value = lguidHymnTuneNameId
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
Dim lobjHymnTuneName As clsHymnTuneName
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
lguidHymnTuneNameId = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
lobjHymnTuneName = New clsHymnTuneName(lguidHymnTuneNameId, False)
AddAlternateTuneNameToList(lobjHymnTuneName, objSortedListToReturn)
Next
End If
ldbdsHymnTuneNames.Clear()
Return objSortedListToReturn
Catch
Return objSortedListToReturn
End Try
End Function
Private Sub AddAlternateTuneNameToList(ByVal lobjHymnTuneName As clsHymnTuneName, ByRef lobjSortedListToReturn As SortedList)
If lobjSortedListToReturn.ContainsKey(lobjHymnTuneName.HymnTuneName) Then
Return
End If
lobjSortedListToReturn.Add(lobjHymnTuneName.HymnTuneName, lobjHymnTuneName)
End Sub
Private Sub RemoveAlternateTuneNameFromList(ByVal lobjHymnTuneName As clsHymnTuneName, ByRef lobjSortedListToReturn As SortedList)
If lobjSortedListToReturn.ContainsKey(lobjHymnTuneName.HymnTuneName) Then
lobjSortedListToReturn.Remove(lobjHymnTuneName.HymnTuneName)
End If
End Sub
Private Sub RemoveAlternateTuneNameFromList(ByVal lstrHymnTuneName As String, ByRef lobjSortedListToReturn As SortedList)
If lobjSortedListToReturn.ContainsKey(lstrHymnTuneName) Then
lobjSortedListToReturn.Remove(lstrHymnTuneName)
End If
End Sub
Private Sub GetAddedDroppedRemainingOtherHymnTuneNamesForTune(ByVal objPersisted_OtherHymnTuneNamesForTune As SortedList, ByVal objCurrentOtherHymnTuneNamesForTune As SortedList, ByRef objAddedOtherHymnTuneNamesForTune As SortedList, ByRef objDroppedOtherHymnTuneNamesForTune As SortedList, ByRef objRemainingOtherHymnTuneNamesForTune As SortedList)
Dim objDictionaryEntry As DictionaryEntry
Dim objHymnTuneNameToCheck As clsHymnTuneName
Dim strHymnTuneNameToCheck As String
objAddedOtherHymnTuneNamesForTune = New SortedList
objDroppedOtherHymnTuneNamesForTune = New SortedList
objRemainingOtherHymnTuneNamesForTune = New SortedList
For Each objDictionaryEntry In objPersisted_OtherHymnTuneNamesForTune
objHymnTuneNameToCheck = CType(objDictionaryEntry.Value, clsHymnTuneName)
strHymnTuneNameToCheck = objHymnTuneNameToCheck.HymnTuneName
If objCurrentOtherHymnTuneNamesForTune.ContainsKey(strHymnTuneNameToCheck) Then
objRemainingOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
Else
objDroppedOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
End If
Next
For Each objDictionaryEntry In objCurrentOtherHymnTuneNamesForTune
objHymnTuneNameToCheck = CType(objDictionaryEntry.Value, clsHymnTuneName)
strHymnTuneNameToCheck = objHymnTuneNameToCheck.HymnTuneName
If objPersisted_OtherHymnTuneNamesForTune.ContainsKey(strHymnTuneNameToCheck) Then
'Not necessary to save to REMAINING list, as it should already be there from above
'objRemainingOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
Else
objAddedOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
End If
Next
End Sub
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
objXMLWriter.WriteStartElement("HymnTuneName")
objXMLWriter.WriteElementString("HymnTuneNameID", Me.HymnTuneNameID.ToString)
objXMLWriter.WriteElementString("HymnTuneID", Me.HymnTuneID.ToString)
objXMLWriter.WriteElementString("HymnTuneName", Me.HymnTuneName)
objXMLWriter.WriteEndElement()
End Sub
Public Shared Function GetAllHymnTuneNames() As System.Collections.Generic.List(Of clsHymnTuneName)
Dim lguidHymnTuneNameID As Guid
Dim ldbcmdCommand As New SqlClient.SqlCommand
Dim lobjHymnTuneName As clsHymnTuneName
Dim lcolHymnTuneNames As New System.Collections.Generic.List(Of clsHymnTuneName)
ldbcmdCommand.CommandText = "sel_hymn_tune_name_all"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
lguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
If MyGlobals.CachedObjectExists(lguidHymnTuneNameID.ToString) Then
lobjHymnTuneName = CType(MyGlobals.CachedObjectRetrieve(lguidHymnTuneNameID.ToString), clsHymnTuneName)
Else
'lobjHymnTuneName = New clsHymnTuneName(lguidHymnTuneNameID)
lobjHymnTuneName = New clsHymnTuneName(ldbrwRow)
End If
lcolHymnTuneNames.Add(lobjHymnTuneName)
Next
End If
ldbdsHymnTuneNames.Clear()
Return lcolHymnTuneNames
End Function
Public Shared Sub AddAllHymnTuneNamesToCache()
If MyGlobals.g_objObjectTypesCached.Contains("HymnTuneNames") = False Then
GetAllHymnTuneNames()
MyGlobals.g_objObjectTypesCached.Add("HymnTuneNames")
End If
End Sub
End Class