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

672
clsWork.vb Normal file
View File

@@ -0,0 +1,672 @@
Imports System.Data
Imports System.Text
Imports System.Windows.Forms
Imports System.Xml
Public Class clsWork
Implements ICloneable
Private m_guidWorkID As Guid
Private m_objComposer As clsComposer
Private m_objBook As clsBook
Private m_intPageNumber As Integer
Private m_strWorkName As String
Private m_strOpusInfo As String
Private m_objInstrumentation As clsInstrumentation
Private m_objHymnTuneName As clsHymnTuneName
Private m_blnObjectAlreadyPersisted As Boolean
Public Sub New()
m_guidWorkID = Guid.NewGuid
m_objComposer = Nothing
m_objBook = Nothing
m_intPageNumber = 0
m_strWorkName = ""
m_strOpusInfo = ""
m_objInstrumentation = Nothing
m_objHymnTuneName = Nothing
m_blnObjectAlreadyPersisted = False
End Sub
Public Sub New(ByVal objComposer As clsComposer, ByVal objInstrumentation As clsInstrumentation, ByVal objBook As clsBook, ByVal intPageNumber As Integer, ByVal strWorkName As String, ByVal strOpusInfo As String, ByVal objHymnTuneName As clsHymnTuneName)
m_guidWorkID = Guid.NewGuid
m_objComposer = objComposer
m_objInstrumentation = objInstrumentation
m_objBook = objBook
m_intPageNumber = intPageNumber
m_strWorkName = strWorkName
m_strOpusInfo = strOpusInfo
m_objHymnTuneName = objHymnTuneName
m_blnObjectAlreadyPersisted = False
End Sub
Public Sub New(ByVal guidWorkID As Guid)
'm_guidWorkID = guidWorkID
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "sel_work"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmWorkID As New SqlClient.SqlParameter
prmWorkID.ParameterName = "@work_id"
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
'prmWorkID.Size = 5
prmWorkID.Value = guidWorkID
ldbcmdCommand.Parameters.Add(prmWorkID)
Dim ldbdsWorks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsWorks.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
ldbrwRow = ldbdsWorks.Tables(0).Rows(0)
PopulateFromDBRow(ldbrwRow)
m_blnObjectAlreadyPersisted = True
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
Else
m_guidWorkID = Guid.NewGuid
End If
ldbdsWorks.Clear()
End Sub
Public Sub New(ByVal ldbrwRow As DataRow)
PopulateFromDBRow(ldbrwRow)
m_blnObjectAlreadyPersisted = True
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
End Sub
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
m_guidWorkID = CType(ldbrwRow.Item("work_id"), Guid)
If ldbrwRow.IsNull("composer_id") Then
m_objComposer = Nothing
Else
Dim guidComposerID As Guid = CType(ldbrwRow.Item("composer_id"), Guid)
If MyGlobals.CachedObjectExists(guidComposerID.ToString) Then
m_objComposer = CType(MyGlobals.CachedObjectRetrieve(guidComposerID.ToString), clsComposer)
Else
m_objComposer = New clsComposer(guidComposerID)
End If
End If
If ldbrwRow.IsNull("book_id") Then
m_objBook = Nothing
Else
Dim guidBookID As Guid = CType(ldbrwRow.Item("book_id"), Guid)
If MyGlobals.CachedObjectExists(guidBookID.ToString) Then
m_objBook = CType(MyGlobals.CachedObjectRetrieve(guidBookID.ToString), clsBook)
Else
m_objBook = New clsBook(guidBookID)
End If
End If
m_intPageNumber = CType(ldbrwRow.Item("page_number"), Integer)
m_strWorkName = CType(ldbrwRow.Item("work_name"), String)
m_strOpusInfo = CType(ldbrwRow.Item("opus_info"), String)
If ldbrwRow.IsNull("instrumentation_id") Then
m_objInstrumentation = Nothing
Else
Dim guidInstrumentationID As Guid = CType(ldbrwRow.Item("instrumentation_id"), Guid)
If MyGlobals.CachedObjectExists(guidInstrumentationID.ToString) Then
m_objInstrumentation = CType(MyGlobals.CachedObjectRetrieve(guidInstrumentationID.ToString), clsInstrumentation)
Else
m_objInstrumentation = New clsInstrumentation(guidInstrumentationID)
End If
End If
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.WorkID.ToString)
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "del_work"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmWorkID As New SqlClient.SqlParameter
prmWorkID.ParameterName = "@work_id"
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
'prmWorkID.Size = 5
prmWorkID.Value = m_guidWorkID
ldbcmdCommand.Parameters.Add(prmWorkID)
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_objComposer Is Nothing Then
If Not m_objComposer.ItemAlreadyPersisted Then
m_objComposer.Save()
End If
End If
If Not m_objBook Is Nothing Then
If Not m_objBook.ItemAlreadyPersisted Then
m_objBook.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
If Not m_objInstrumentation Is Nothing Then
If Not m_objInstrumentation.ItemAlreadyPersisted Then
m_objInstrumentation.Save()
End If
End If
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
If m_blnObjectAlreadyPersisted Then
Dim ldbcmdCommand As New SqlClient.SqlCommand
ldbcmdCommand.CommandText = "upd_work"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmWorkID As New SqlClient.SqlParameter
prmWorkID.ParameterName = "@work_id"
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
'prmWorkID.Size = 5
prmWorkID.Value = m_guidWorkID
ldbcmdCommand.Parameters.Add(prmWorkID)
' Set up parameter for stored procedure
Dim prmComposerID As New SqlClient.SqlParameter
prmComposerID.ParameterName = "@composer_id"
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
'prmComposerID.Size = 5
If m_objComposer Is Nothing Then
prmComposerID.Value = DBNull.Value
Else
prmComposerID.Value = m_objComposer.ComposerID
End If
ldbcmdCommand.Parameters.Add(prmComposerID)
' Set up parameter for stored procedure
Dim prmBookID As New SqlClient.SqlParameter
prmBookID.ParameterName = "@book_id"
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
'prmBookID.Size = 5
If m_objBook Is Nothing Then
prmBookID.Value = DBNull.Value
Else
prmBookID.Value = m_objBook.BookID
End If
ldbcmdCommand.Parameters.Add(prmBookID)
' Set up parameter for stored procedure
Dim prmPageNumber As New SqlClient.SqlParameter
prmPageNumber.ParameterName = "@page_number"
prmPageNumber.SqlDbType = SqlDbType.Int
'prmPageNumber.Size = 5
prmPageNumber.Value = m_intPageNumber
ldbcmdCommand.Parameters.Add(prmPageNumber)
' Set up parameter for stored procedure
Dim prmWorkName As New SqlClient.SqlParameter
prmWorkName.ParameterName = "@work_name"
prmWorkName.SqlDbType = SqlDbType.VarChar
prmWorkName.Size = MyGlobals.WORK_NAME_SIZE
prmWorkName.Value = m_strWorkName
ldbcmdCommand.Parameters.Add(prmWorkName)
' Set up parameter for stored procedure
Dim prmOpusInfo As New SqlClient.SqlParameter
prmOpusInfo.ParameterName = "@opus_info"
prmOpusInfo.SqlDbType = SqlDbType.VarChar
prmOpusInfo.Size = MyGlobals.OPUS_INFO_SIZE
prmOpusInfo.Value = m_strOpusInfo
ldbcmdCommand.Parameters.Add(prmOpusInfo)
' Set up parameter for stored procedure
Dim prmInstrumentationID As New SqlClient.SqlParameter
prmInstrumentationID.ParameterName = "@instrumentation_id"
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
'prmInstrumentationID.Size = MyGlobals.INSTRUMENTATION_SIZE
If m_objInstrumentation Is Nothing Then
prmInstrumentationID.Value = DBNull.Value
Else
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
End If
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
' 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_work"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
' Set up parameter for stored procedure
Dim prmWorkID As New SqlClient.SqlParameter
prmWorkID.ParameterName = "@work_id"
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
'prmWorkID.Size = 5
prmWorkID.Value = m_guidWorkID
ldbcmdCommand.Parameters.Add(prmWorkID)
' Set up parameter for stored procedure
Dim prmComposerID As New SqlClient.SqlParameter
prmComposerID.ParameterName = "@composer_id"
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
'prmComposerID.Size = 5
If m_objComposer Is Nothing Then
prmComposerID.Value = DBNull.Value
Else
prmComposerID.Value = m_objComposer.ComposerID
End If
ldbcmdCommand.Parameters.Add(prmComposerID)
' Set up parameter for stored procedure
Dim prmBookID As New SqlClient.SqlParameter
prmBookID.ParameterName = "@book_id"
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
'prmBookID.Size = 5
If m_objBook Is Nothing Then
prmBookID.Value = DBNull.Value
Else
prmBookID.Value = m_objBook.BookID
End If
ldbcmdCommand.Parameters.Add(prmBookID)
' Set up parameter for stored procedure
Dim prmPageNumber As New SqlClient.SqlParameter
prmPageNumber.ParameterName = "@page_number"
prmPageNumber.SqlDbType = SqlDbType.Int
'prmPageNumber.Size = 5
prmPageNumber.Value = m_intPageNumber
ldbcmdCommand.Parameters.Add(prmPageNumber)
' Set up parameter for stored procedure
Dim prmWorkName As New SqlClient.SqlParameter
prmWorkName.ParameterName = "@work_name"
prmWorkName.SqlDbType = SqlDbType.VarChar
prmWorkName.Size = MyGlobals.WORK_NAME_SIZE
prmWorkName.Value = m_strWorkName
ldbcmdCommand.Parameters.Add(prmWorkName)
' Set up parameter for stored procedure
Dim prmOpusInfo As New SqlClient.SqlParameter
prmOpusInfo.ParameterName = "@opus_info"
prmOpusInfo.SqlDbType = SqlDbType.VarChar
prmOpusInfo.Size = MyGlobals.OPUS_INFO_SIZE
prmOpusInfo.Value = m_strOpusInfo
ldbcmdCommand.Parameters.Add(prmOpusInfo)
' Set up parameter for stored procedure
Dim prmInstrumentationID As New SqlClient.SqlParameter
prmInstrumentationID.ParameterName = "@instrumentation_id"
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
'prmInstrumentationID.Size = MyGlobals.INSTRUMENTATION_SIZE
If m_objInstrumentation Is Nothing Then
prmInstrumentationID.Value = DBNull.Value
Else
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
End If
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
' 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 WorkID() As Guid
Get
Return m_guidWorkID
End Get
Set(ByVal Value As Guid)
m_guidWorkID = Value
End Set
End Property
Public Property Composer() As clsComposer
Get
Return m_objComposer
End Get
Set(ByVal Value As clsComposer)
m_objComposer = Value
End Set
End Property
Public Property Book() As clsBook
Get
Return m_objBook
End Get
Set(ByVal Value As clsBook)
m_objBook = Value
End Set
End Property
Public Property PageNumber() As Integer
Get
Return m_intPageNumber
End Get
Set(ByVal Value As Integer)
m_intPageNumber = Value
End Set
End Property
Public Property PageNumberAsString() As String
Get
Return m_intPageNumber.ToString
End Get
Set(ByVal Value As String)
If Val(Value) > 0 Then
m_intPageNumber = CType(Value, Integer)
Else
m_intPageNumber = 0
End If
End Set
End Property
Public Property WorkName() As String
Get
Return m_strWorkName
End Get
Set(ByVal Value As String)
m_strWorkName = Value.Trim
End Set
End Property
Public Property OpusInfo() As String
Get
Return m_strOpusInfo
End Get
Set(ByVal Value As String)
m_strOpusInfo = Value.Trim
End Set
End Property
Public Property Instrumentation() As clsInstrumentation
Get
Return m_objInstrumentation
End Get
Set(ByVal Value As clsInstrumentation)
m_objInstrumentation = Value
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 clsWork
lobjReturnValue.WorkID = Me.WorkID
lobjReturnValue.Composer = Me.Composer
lobjReturnValue.Book = Me.Book
lobjReturnValue.PageNumber = Me.PageNumber
lobjReturnValue.WorkName = Me.WorkName
lobjReturnValue.OpusInfo = Me.OpusInfo
lobjReturnValue.Instrumentation = Me.Instrumentation
lobjReturnValue.HymnTuneName = Me.HymnTuneName
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
Return lobjReturnValue
End Function
Public Function StateIsIdentical(ByVal lobjOtherWork As clsWork) As Boolean
Dim blnResult As Boolean
If Me.WorkID.Equals(lobjOtherWork.WorkID) _
AndAlso Me.PageNumber = lobjOtherWork.PageNumber _
AndAlso Me.WorkName = lobjOtherWork.WorkName _
AndAlso Me.OpusInfo = lobjOtherWork.OpusInfo Then
blnResult = True
If Me.Composer Is Nothing Then
If lobjOtherWork.Composer Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherWork.Composer Is Nothing Then
Return False
Else
blnResult = Me.Composer.ComposerID.Equals(lobjOtherWork.Composer.ComposerID)
End If
End If
If Not blnResult Then
Return False
End If
If Me.Book Is Nothing Then
If lobjOtherWork.Book Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherWork.Book Is Nothing Then
Return False
Else
blnResult = Me.Book.BookID.Equals(lobjOtherWork.Book.BookID)
End If
End If
If Not blnResult Then
Return False
End If
If Me.Instrumentation Is Nothing Then
If lobjOtherWork.Instrumentation Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherWork.Instrumentation Is Nothing Then
Return False
Else
blnResult = Me.Instrumentation.InstrumentationID.Equals(lobjOtherWork.Instrumentation.InstrumentationID)
End If
End If
If Not blnResult Then
Return False
End If
If Me.HymnTuneName Is Nothing Then
If lobjOtherWork.HymnTuneName Is Nothing Then
'OK
Else
Return False
End If
Else
If lobjOtherWork.HymnTuneName Is Nothing Then
Return False
Else
blnResult = Me.HymnTuneName.HymnTuneNameID.Equals(lobjOtherWork.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.Composer Is Nothing Then
lstrErrorString = "Composer is required"
Return False
End If
If Me.Book Is Nothing Then
lstrErrorString = "Book is required"
Return False
End If
If Me.WorkName.Length = 0 Then
lstrErrorString = "Work Name is required"
Return False
End If
If Me.Instrumentation Is Nothing Then
lstrErrorString = "Instrumentation 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_objBook Is Nothing Then
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
Else
strReturnString.Append(m_objBook.BookTitle)
End If
strReturnString.Append(m_intPageNumber)
strReturnString.Append(" - ")
strReturnString.Append(m_strWorkName)
If m_objComposer Is Nothing Then
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
Else
strReturnString.Append(m_objComposer.ComposerName)
End If
Return strReturnString.ToString
End Function
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
objXMLWriter.WriteStartElement("Work")
objXMLWriter.WriteElementString("WorkID", Me.WorkID.ToString)
objXMLWriter.WriteElementString("WorkName", Me.WorkName)
objXMLWriter.WriteElementString("ComposerID", Me.Composer.ComposerID.ToString)
Me.Composer.WriteXML(objXMLWriter)
objXMLWriter.WriteElementString("BookID", Me.Book.BookID.ToString)
Me.Book.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.WriteElementString("OpusInfo", Me.OpusInfo)
objXMLWriter.WriteElementString("InstrumentationID", Me.Instrumentation.InstrumentationID.ToString)
Me.Instrumentation.WriteXML(objXMLWriter)
objXMLWriter.WriteElementString("PageNumber", Me.PageNumberAsString)
objXMLWriter.WriteEndElement()
End Sub
Public Shared Function GetAllWorks() As System.Collections.Generic.List(Of clsWork)
'Preload to cache
clsHymnTuneName.AddAllHymnTuneNamesToCache()
clsComposer.AddAllComposersToCache()
clsInstrumentation.AddAllInstrumentationsToCache()
clsPublisher.AddAllPublishersToCache()
clsBook.AddAllBooksToCache()
Dim lguidWorkID As Guid
Dim ldbcmdCommand As New SqlClient.SqlCommand
Dim lobjWork As clsWork
Dim lcolWorks As New System.Collections.Generic.List(Of clsWork)
ldbcmdCommand.CommandText = "sel_work_all"
ldbcmdCommand.CommandType = CommandType.StoredProcedure
Dim ldbdsWorks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
If ldbdsWorks.Tables(0).Rows.Count > 0 Then
Dim ldbrwRow As DataRow
For Each ldbrwRow In ldbdsWorks.Tables(0).Rows
lguidWorkID = CType(ldbrwRow.Item("work_id"), Guid)
If MyGlobals.CachedObjectExists(lguidWorkID.ToString) Then
lobjWork = CType(MyGlobals.CachedObjectRetrieve(lguidWorkID.ToString), clsWork)
Else
'lobjWork = New clsWork(lguidWorkID)
lobjWork = New clsWork(ldbrwRow)
End If
lcolWorks.Add(lobjWork)
Next
End If
ldbdsWorks.Clear()
Return lcolWorks
End Function
End Class