Imports System.IO Imports System.Xml.Serialization Imports DevExpress.Utils Imports DevExpress.Utils.Svg Imports DigitalData.GUIs.ZooFlow.frmSearchFlow Imports DigitalData.GUIs.ZooFlow.Search.SearchToken Imports DigitalData.Modules.Base Imports DigitalData.Modules.Config Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Language Namespace Search Public Class SearchLoader Inherits BaseClass Private Const CUSTOM_SEARCH_DIRECTORY = "" Private ReadOnly Images As SvgImageCollection Private ReadOnly Config As ConfigManager(Of UIConfig) 'Private ReadOnly Serializer As New XmlSerializer(GetType(CustomSearch)) Public Property CustomSearches As List(Of CustomSearch) Public Sub New(pLogConfig As LogConfig, pConfig As ConfigManager(Of UIConfig), pSvgImages As SvgImageCollection) MyBase.New(pLogConfig) Images = pSvgImages Config = pConfig End Sub Private Function GetSearchDirectoryPath() As String Dim oConfigPath As String = Config.UserConfigPath Dim oConfigDirectory As String = IO.Path.Combine(IO.Path.GetDirectoryName(oConfigPath), CUSTOM_SEARCH_DIRECTORY) If IO.Directory.Exists(oConfigDirectory) = False Then Try IO.Directory.CreateDirectory(oConfigDirectory) Catch ex As Exception Logger.Error(ex) End Try End If Return oConfigDirectory End Function Public Sub CreateCustomSearch(pTitle As String, pDescription As String, pTokens As List(Of Token), pImage As String) Dim oSearch As New CustomSearch With { .Name = pTitle, .Description = pDescription, .Tokens = pTokens, .Image = Images.Item(pImage) } CustomSearches.Add(oSearch) 'Dim oDirectoryPath As String = GetSearchDirectoryPath() 'Dim oFilePath As String = IO.Path.Combine(oDirectoryPath, Utils.ConvertTextToSlug(pTitle)) 'Dim oBuffer As Byte() = SerializeSearch(oSearch) 'IO.File.WriteAllBytes(oFilePath, oBuffer) End Sub Public Function LoadSearches() As List(Of SavedSearch) Dim oSearches As New List(Of SavedSearch) Dim oCustomSearches = LoadCustomSearches() Dim oPredefinedSearches = LoadPredefinedSearches() Return oSearches. Concat(oCustomSearches). Concat(oPredefinedSearches). ToList() End Function Public Function LoadCustomSearches() As List(Of SavedSearch) Return New List(Of SavedSearch) End Function Public Function LoadPredefinedSearches() As List(Of SavedSearch) Return New List(Of SavedSearch) From { New PredefinedDateSearch() With { .Name = "Heute", .Description = "Dokumente, die heute abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.Today, .Image = Images.Item("today") }, New PredefinedDateSearch() With { .Name = "Gestern", .Description = "Dokumente, die gestern abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.Yesterday, .Image = Images.Item("yesterday") }, New PredefinedDateSearch() With { .Name = "Letzte 7 Tage", .Description = "Dokumente, die in den letzten 7 Tagen abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.Last7Days, .Image = Images.Item("week") }, New PredefinedDateSearch() With { .Name = "Dieser Monat", .Description = "Dokumente, die in diesem Monat abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.CurrentMonth, .Image = Images.Item("month") }, New PredefinedDateSearch() With { .Name = "Letzter Monat", .Description = "Dokumente, die im letzten Monat abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.LastMonth, .Image = Images.Item("month") }, New PredefinedDateSearch() With { .Name = "Dieses Jahr", .Description = "Dokumente, die in diesem Jahr abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.CurrentYear, .Image = Images.Item("year") }, New PredefinedDateSearch() With { .Name = "Letztes Jahr", .Description = "Dokumente, die im letzten Jahr abgelegt wurden", .DateConstraint = SearchRunner.DateConstraint.LastYear, .Image = Images.Item("year") } } End Function 'Private Function SerializeSearch(pSearch As CustomSearch) As Byte() ' Try ' Using oStream As New MemoryStream ' Serializer.Serialize(oStream, pSearch) ' Return oStream.ToArray() ' End Using ' Catch ex As Exception ' Logger.Error(ex) ' Return Nothing ' End Try 'End Function 'Private Function DeserializeSearch(pBytes As Byte()) As CustomSearch ' Try ' Using oStream As New MemoryStream(pBytes) ' Return Serializer.Deserialize(oStream) ' End Using ' Catch ex As Exception ' Logger.Error(ex) ' Return Nothing ' End Try 'End Function Public Class PredefinedSQLSearch Public Property SQLCommand As String End Class Public Class PredefinedDateSearch Inherits SavedSearch Public Overrides Property GroupText As String = "Vordefiniert" Public Property DateConstraint As SearchRunner.DateConstraint End Class Public Class CustomSearch Inherits SavedSearch Public Overrides Property GroupText As String = "Eigene" Public Tokens As New List(Of Token) End Class Public MustInherit Class SavedSearch Public Property Name As String Public Property Description As String Public Property Image As SvgImage Public Property Count As Integer = 0 Public Overridable Property GroupText As String = "Vordefiniert" Public ReadOnly Property DisplayName As String Get Return Name End Get End Property End Class End Class End Namespace