Imports DigitalData.GUIs.ZooFlow.Administration.ClassConstants
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging
Public Class ClassDetailForm
Inherits BaseClass
Public Event DetailFormClosed As EventHandler(Of Form)
Public ReadOnly Property DetailDataList As New Dictionary(Of String, DetailData)
Public ReadOnly Property DetailSettingsList As New Dictionary(Of String, DetailSettings) From {
{PAGE_IDB_ATTRIBUTES, New DetailSettings With {
.GridTitle = "Attribute", ' This will be shown above the Data Grid
.NewRecordTitle = "New Attribute", ' This will be shown on the "New" Button
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_ATTRIBUTES ' This Key will be matched with the Entity Id from the Database
}},
{PAGE_IDB_BUSINESS_ENTITIES, New DetailSettings With {
.GridTitle = "BusinessEntity",
.NewRecordTitle = "New BusinessEntity",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_BUSINESS_ENTITIES
}},
{PAGE_IDB_OBJECT_STORES, New DetailSettings With {
.GridTitle = "Object-Stores",
.NewRecordTitle = "New Object Store",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_OBJECT_STORES
}},
{PAGE_META_SOURCE_SQL, New DetailSettings With {
.GridTitle = "Source SQL",
.NewRecordTitle = "New Source SQL",
.[Module] = MODULE_META,
.Entity = PAGE_META_SOURCE_SQL
}},
{PAGE_GI_PROFILES, New DetailSettings With {
.GridTitle = "Global Indexer Profile",
.NewRecordTitle = "New Globix profile",
.[Module] = MODULE_GI,
.Entity = PAGE_GI_PROFILES
}},
{PAGE_CW_PROFILES, New DetailSettings With {
.GridTitle = "Clipboard Watcher Profile",
.NewRecordTitle = "New Clipwatcher profile",
.[Module] = MODULE_CW,
.Entity = PAGE_CW_PROFILES
}},
{PAGE_IDB_ATTRIBUTE_REL, New DetailSettings With {
.GridTitle = "Attribute-Relations",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_ATTRIBUTES,
.IsRelationPage = True
}},
{PAGE_GI_RELATIONS, New DetailSettings With {
.GridTitle = "Globix profile-relations",
.[Module] = MODULE_GI,
.Entity = PAGE_GI_RELATIONS,
.IsRelationPage = True
}},
{PAGE_IDB_DOCTYPE_CONFIG, New DetailSettings With {
.GridTitle = "Detail Doctype Configuration",
.NewRecordTitle = "New Configuration",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_DOCTYPE_CONFIG
}},
{PAGE_IDB_DOCTYPE, New DetailSettings With {
.GridTitle = "Doctype Configuration",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_DOCTYPE
}},
{PAGE_IDB_DOCTYPE_BE, New DetailSettings With {
.GridTitle = "Doctype BE Relations",
.[Module] = MODULE_IDB,
.Entity = PAGE_IDB_DOCTYPE_BE,
.IsRelationPage = True
}},
{PAGE_USERS_USERLIST, New DetailSettings With {
.GridTitle = "User Overview",
.NewRecordTitle = "New User",
.[Module] = MODULE_USERS,
.Entity = PAGE_USERS_USERLIST
}},
{PAGE_USERS_GROUPLIST, New DetailSettings With {
.GridTitle = "Group Overview",
.NewRecordTitle = "New Group",
.[Module] = MODULE_USERS,
.Entity = PAGE_USERS_GROUPLIST
}},
{PAGE_USERS_USER_GROUP_RELATIONS, New DetailSettings With {
.GridTitle = "User Group Relations",
.[Module] = MODULE_USERS,
.Entity = PAGE_USERS_USER_GROUP_RELATIONS,
.IsRelationPage = True
}},
{PAGE_IDB_COMMON_SQL, New DetailSettings With {
.GridTitle = "IDB Common SQLs",
.[Module] = MODULE_USERS,
.Entity = PAGE_IDB_COMMON_SQL
}}
}
Public Sub New(LogConfig As LogConfig)
MyBase.New(LogConfig)
End Sub
Public Function Handle_OpenDetail(PrimaryKey As Integer, Page As String, IsInsert As Boolean) As Boolean
Try
Dim oForm As Form = Nothing
Select Case Page
Case PAGE_IDB_ATTRIBUTES
oForm = New frmAdmin_IDBAttribute(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_IDB_BUSINESS_ENTITIES
oForm = New frmAdmin_IDBEntity(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_IDB_OBJECT_STORES
oForm = New frmAdmin_IDBObjectStore(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_CW_PROFILES
oForm = New frmAdmin_ClipboardWatcher(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_GI_PROFILES
GLOBIX_JUMP_DOCTYPE_ID = PrimaryKey
oForm = New frmAdmin_Globix(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_META_SOURCE_SQL
oForm = New frmAdmin_SourceSQL(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_IDB_ATTRIBUTE_REL
oForm = New frmAdmin_IDBBERelations
Case PAGE_GI_RELATIONS
oForm = New frmAdmin_GlobixRelations
Case PAGE_IDB_DOCTYPE_CONFIG
oForm = New frmAdmin_DoctypeConfig(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_IDB_DOCTYPE
oForm = New frmAdmin_Doctype(0)
Case PAGE_IDB_DOCTYPE_BE
oForm = New frmAdmin_DoctypeBE()
Case PAGE_USERS_USERLIST
oForm = New frmAdmin_User(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_USERS_USER_GROUP_RELATIONS
oForm = New frmAdmin_UserGroupRelations(PrimaryKey) With {.IsInsert = IsInsert}
Case PAGE_IDB_COMMON_SQL
oForm = New frmIDBCommonSQL
End Select
' If the selected form was valid, open it
' and then raise the form closed event for it
If oForm IsNot Nothing Then
oForm.ShowDialog()
RaiseEvent DetailFormClosed(Me, oForm)
Return True
Else
Return False
End If
Catch ex As Exception
Throw ex
End Try
End Function
Public Function LoadData() As Boolean
Try
Dim oTable As DataTable = My.DatabaseECM.GetDatatable("SELECT * FROM TBZF_ADMIN_SOURCE_SQL WHERE SCOPE = 'OVERVIEW' ORDER BY GUID")
DetailDataList.Clear()
For Each oRow As DataRow In oTable.Rows
Dim oCHeck = oRow.Item("ENTITY_TITLE").ToString
Dim oItem As New ClassDetailForm.DetailData With {
.Guid = CInt(oRow.Item("GUID")),
.ParentId = CInt(oRow.Item("PARENT_ID")),
.Entity = oRow.Item("ENTITY_TITLE").ToString,
.Scope = oRow.Item("SCOPE").ToString,
.SQLCommand = oRow.Item("SQL_COMMAND").ToString.Replace("@LANG_CODE", My.Application.User.Language),
.PrimaryKey = Utils.NotNull(oRow.Item("PK_COLUMN"), String.Empty)
}
Try
oItem.SQLResult = My.DatabaseECM.GetDatatable(oItem.SQLCommand)
Catch ex As Exception
oItem.SQLResult = Nothing
Logger.Error(ex)
End Try
Dim oKey As String = oItem.Entity & "-" & oItem.Scope
DetailDataList.Add(oKey, oItem)
Next
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function TestPageIsRelation(pPageName As String) As Boolean
Return DetailSettingsList.Any(Function(page) page.Key = pPageName And page.Value.IsRelationPage = True)
End Function
Public Class DetailSettings
Public Property GridTitle As String
Public Property [Module] As String
Public Property Entity As String
'''
''' This makes sure that the page can be opened even if there are no entries
'''
'''
Public Property IsRelationPage As Boolean = False
'''
''' If this is empty, the button "New Record will be hidden"
'''
Public Property NewRecordTitle As String = ""
End Class
Public Class DetailData
Public Property Guid As Integer
Public Property ParentId As Integer
Public Property Entity As String
Public Property Scope As String
Public Property PrimaryKey As String
Public Property SQLCommand As String
Public Property SQLResult As DataTable
End Class
End Class