Initial population

This commit is contained in:
Jon
2026-03-07 19:38:21 -06:00
commit 46735bddd3
59 changed files with 12911 additions and 0 deletions

487
clsHymn.vb Normal file
View File

@@ -0,0 +1,487 @@
Imports System.Data
Imports System.Text
Imports System.Windows.Forms
Imports System.Xml
Public Class clsHymn
Implements ICloneable
Private mguidHymnID As Guid
Private m_objHymnal As clsHymnal
Private m_intHymnNumber As Integer
Private m_strHymnName As String
Private m_objHymnTuneName As clsHymnTuneName
Private m_blnObjectAlreadyPersisted As Boolean
Public Sub New()
mguidHymnID = Guid.NewGuid
m_objHymnal = Nothing
m_intHymnNumber = 0
m_strHymnName = ""
m_objHymnTuneName = Nothing
m_blnObjectAlreadyPersisted = False
End Sub
Public Sub New(ByVal objHymnal As clsHymnal, ByVal intHymnNumber As Integer, ByVal strHymnName As String, ByVal objHymnTuneName As clsHymnTuneName)
mguidHymnID = Guid.NewGuid
m_objHymnal = objHymnal
m_intHymnNumber = intHymnNumber
m_strHymnName = strHymnName
m_objHymnTuneName = objHymnTuneName
m_blnObjectAlreadyPersisted = False
End Sub
Public Sub New(ByVal guidHymnID As Guid)
mguidHymnID = guidHymnID
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_hymn"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnID As New SqlClient.SqlParameter
prmHymnID.ParameterName = "@hymn_id"
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnID.Size = 5
prmHymnID.Value = guidHymnID
ldbcmdCommand.Parameters.Add(prmHymnID)
Dim ldbdsHymns As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymns.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
ldbrwRow = ldbdsHymns.Tables(0).Rows(0)
PopulateFromDBRow(ldbrwRow)
m_blnObjectAlreadyPersisted = True
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
End If
ldbdsHymns.Clear()
End Sub
Public Sub New(ByVal ldbrwRow As DataRow)
PopulateFromDBRow(ldbrwRow)
m_blnObjectAlreadyPersisted = True
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
End Sub
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
mguidHymnID = CType(ldbrwRow.Item("hymn_id"), Guid)
If ldbrwRow.IsNull("hymnal_id") Then
m_objHymnal = Nothing
Else
Dim guidHymnalID As Guid = CType(ldbrwRow.Item("hymnal_id"), Guid)
If MyGlobals.CachedObjectExists(guidHymnalID.ToString) Then
m_objHymnal = CType(MyGlobals.CachedObjectRetrieve(guidHymnalID.ToString), clsHymnal)
Else
m_objHymnal = New clsHymnal(guidHymnalID)
End If
End If
m_intHymnNumber = CType(ldbrwRow.Item("hymn_number"), Integer)
m_strHymnName = CType(ldbrwRow.Item("hymn_name"), String)
If ldbrwRow.IsNull("hymn_tune_name_id") Then
m_objHymnTuneName = Nothing
Else
Dim guidHymnTuneNameID As Guid = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
If MyGlobals.CachedObjectExists(guidHymnTuneNameID.ToString) Then
m_objHymnTuneName = CType(MyGlobals.CachedObjectRetrieve(guidHymnTuneNameID.ToString), clsHymnTuneName)
Else
m_objHymnTuneName = New clsHymnTuneName(guidHymnTuneNameID)
End If
End If
End Sub
Public Function Delete() As Boolean
Try
MyGlobals.RemoveCachedObject(Me.HymnID.ToString)
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "del_hymn"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnID As New SqlClient.SqlParameter
prmHymnID.ParameterName = "@hymn_id"
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnID.Size = 5
prmHymnID.Value = mguidHymnID
ldbcmdCommand.Parameters.Add(prmHymnID)
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
If lintRowsAffected > 0 Then
Return True
Else
Return False
End If
Catch
Return False
End Try
End Function
Public Function Save() As Boolean
Try
If Not m_objHymnal Is Nothing Then
If Not m_objHymnal.ItemAlreadyPersisted Then
m_objHymnal.Save()
End If
End If
If Not m_objHymnTuneName Is Nothing Then
If Not m_objHymnTuneName.ItemAlreadyPersisted Then
m_objHymnTuneName.Save()
End If
End If
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
If m_blnObjectAlreadyPersisted Then
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "upd_hymn"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnID As New SqlClient.SqlParameter
prmHymnID.ParameterName = "@hymn_id"
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnalID.Size = 5
prmHymnID.Value = mguidHymnID
ldbcmdCommand.Parameters.Add(prmHymnID)
' Set up parameter for stored procedure
Dim prmHymnalID As New SqlClient.SqlParameter
prmHymnalID.ParameterName = "@hymnal_id"
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnalID.Size = 5
If m_objHymnal Is Nothing Then
prmHymnalID.Value = DBNull.Value
Else
prmHymnalID.Value = m_objHymnal.HymnalID
End If
ldbcmdCommand.Parameters.Add(prmHymnalID)
' Set up parameter for stored procedure
Dim prmHymnNumber As New SqlClient.SqlParameter
prmHymnNumber.ParameterName = "@hymn_number"
prmHymnNumber.SqlDbType = SqlDbType.Int
'prmHymnNumber.Size = 5
prmHymnNumber.Value = m_intHymnNumber
ldbcmdCommand.Parameters.Add(prmHymnNumber)
' Set up parameter for stored procedure
Dim prmHymnName As New SqlClient.SqlParameter
prmHymnName.ParameterName = "@hymn_name"
prmHymnName.SqlDbType = SqlDbType.VarChar
prmHymnName.Size = MyGlobals.HYMN_NAME_SIZE
prmHymnName.Value = m_strHymnName
ldbcmdCommand.Parameters.Add(prmHymnName)
' 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
If m_objHymnTuneName Is Nothing Then
prmHymnTuneNameID.Value = DBNull.Value
Else
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
End If
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
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_hymn"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmHymnID As New SqlClient.SqlParameter
prmHymnID.ParameterName = "@hymn_id"
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnalID.Size = 5
prmHymnID.Value = mguidHymnID
ldbcmdCommand.Parameters.Add(prmHymnID)
' Set up parameter for stored procedure
Dim prmHymnalID As New SqlClient.SqlParameter
prmHymnalID.ParameterName = "@hymnal_id"
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
'prmHymnalID.Size = 5
If m_objHymnal Is Nothing Then
prmHymnalID.Value = DBNull.Value
Else
prmHymnalID.Value = m_objHymnal.HymnalID
End If
ldbcmdCommand.Parameters.Add(prmHymnalID)
Dim prmHymnNumber As New SqlClient.SqlParameter
prmHymnNumber.ParameterName = "@hymn_number"
prmHymnNumber.SqlDbType = SqlDbType.Int
'prmHymnNumber.Size = 5
prmHymnNumber.Value = m_intHymnNumber
ldbcmdCommand.Parameters.Add(prmHymnNumber)
' Set up parameter for stored procedure
Dim prmHymnName As New SqlClient.SqlParameter
prmHymnName.ParameterName = "@hymn_name"
prmHymnName.SqlDbType = SqlDbType.VarChar
prmHymnName.Size = MyGlobals.HYMN_NAME_SIZE
prmHymnName.Value = m_strHymnName
ldbcmdCommand.Parameters.Add(prmHymnName)
' 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
If m_objHymnTuneName Is Nothing Then
prmHymnTuneNameID.Value = DBNull.Value
Else
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
End If
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
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 e As SqlClient.SqlException
MessageBox.Show(e.Message)
Return False
Catch
Return False
End Try
End Function
Public Property HymnID() As Guid
Get
Return mguidHymnID
End Get
Set(ByVal Value As Guid)
mguidHymnID = Value
End Set
End Property
Public Property Hymnal() As clsHymnal
Get
Return m_objHymnal
End Get
Set(ByVal Value As clsHymnal)
m_objHymnal = Value
End Set
End Property
Public Property HymnNumber() As Integer
Get
Return m_intHymnNumber
End Get
Set(ByVal Value As Integer)
m_intHymnNumber = Value
End Set
End Property
Public Property HymnNumberAsString() As String
Get
Return m_intHymnNumber.ToString
End Get
Set(ByVal Value As String)
If Val(Value) > 0 Then
m_intHymnNumber = CType(Value, Integer)
Else
m_intHymnNumber = 0
End If
End Set
End Property
Public Property HymnName() As String
Get
Return m_strHymnName
End Get
Set(ByVal Value As String)
m_strHymnName = Value.Trim
End Set
End Property
Public Property HymnTuneName() As clsHymnTuneName
Get
Return m_objHymnTuneName
End Get
Set(ByVal Value As clsHymnTuneName)
m_objHymnTuneName = Value
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 clsHymn
lobjReturnValue.HymnID = Me.HymnID
lobjReturnValue.Hymnal = Me.Hymnal
lobjReturnValue.HymnNumber = Me.HymnNumber
lobjReturnValue.HymnName = Me.HymnName
lobjReturnValue.HymnTuneName = Me.HymnTuneName
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
Return lobjReturnValue
End Function
Public Function StateIsIdentical(ByVal lobjOtherHymn As clsHymn) As Boolean
Dim blnResult As Boolean
If Me.HymnID.Equals(lobjOtherHymn.HymnID) _
AndAlso Me.HymnNumber = lobjOtherHymn.HymnNumber _
AndAlso Me.HymnName = lobjOtherHymn.HymnName Then
blnResult = True
If Me.Hymnal Is Nothing Then
If lobjOtherHymn.Hymnal Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherHymn.Hymnal Is Nothing Then
Return False
Else
blnResult = Me.Hymnal.HymnalID.Equals(lobjOtherHymn.Hymnal.HymnalID)
End If
End If
If Not blnResult Then
Return False
End If
If Me.HymnTuneName Is Nothing Then
If lobjOtherHymn.HymnTuneName Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherHymn.HymnTuneName Is Nothing Then
Return False
Else
blnResult = Me.HymnTuneName.HymnTuneNameID.Equals(lobjOtherHymn.HymnTuneName.HymnTuneNameID)
End If
End If
Else
Return False
End If
Return blnResult
End Function
Public Function Validate(ByRef lstrErrorString As String) As Boolean
lstrErrorString = ""
If Me.Hymnal Is Nothing Then
lstrErrorString = "Hymnal is required"
Return False
End If
If Me.HymnNumber = 0 Then
lstrErrorString = "Hymn Number is required and must be numeric"
Return False
End If
If Me.HymnName.Length = 0 Then
lstrErrorString = "Hymn Name is required"
Return False
End If
If Me.HymnTuneName Is Nothing Then
lstrErrorString = "HymnTuneName is required"
Return False
End If
Return True
End Function
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
lstrReferencedByString = ""
Return True
End Function
Public Overrides Function ToString() As String
Dim strReturnString As New StringBuilder
If m_objHymnal Is Nothing Then
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
Else
strReturnString.Append(m_objHymnal.HymnalAbbreviation)
End If
strReturnString.Append(m_intHymnNumber)
strReturnString.Append(" - ")
strReturnString.Append(m_strHymnName)
Return strReturnString.ToString
End Function
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
objXMLWriter.WriteStartElement("Hymn")
objXMLWriter.WriteElementString("HymnID", Me.HymnID.ToString)
objXMLWriter.WriteElementString("HymnName", Me.HymnName)
objXMLWriter.WriteElementString("HymnNumber", Me.HymnNumberAsString)
objXMLWriter.WriteElementString("HymnalID", Me.Hymnal.HymnalID.ToString)
Me.Hymnal.WriteXML(objXMLWriter)
If Me.HymnTuneName Is Nothing Then
objXMLWriter.WriteElementString("HymnTuneNameID", "")
Else
objXMLWriter.WriteElementString("HymnTuneNameID", Me.HymnTuneName.HymnTuneNameID.ToString)
Me.HymnTuneName.WriteXML(objXMLWriter)
End If
objXMLWriter.WriteEndElement()
End Sub
Public Shared Function GetAllHymns() As System.Collections.Generic.List(Of clsHymn)
'Preload to cache
clsHymnTuneName.AddAllHymnTuneNamesToCache()
clsHymnal.AddAllHymnalsToCache()
Dim lguidHymnID As Guid
Dim ldbcmdCommand As New SqlClient.SqlCommand
Dim lobjHymn As clsHymn
Dim lcolHymns As New System.Collections.Generic.List(Of clsHymn)
ldbcmdCommand.CommandText = "sel_hymn_all"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
Dim ldbdsHymns As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsHymns.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
For Each ldbrwRow In ldbdsHymns.Tables(0).Rows
lguidHymnID = CType(ldbrwRow.Item("hymn_id"), Guid)
If MyGlobals.CachedObjectExists(lguidHymnID.ToString) Then
lobjHymn = CType(MyGlobals.CachedObjectRetrieve(lguidHymnID.ToString), clsHymn)
Else
'lobjHymn = New clsHymn(lguidHymnID)
lobjHymn = New clsHymn(ldbrwRow)
End If
lcolHymns.Add(lobjHymn)
Next
End If
ldbdsHymns.Clear()
Return lcolHymns
End Function
End Class