182 lines
6.9 KiB
VB.net
182 lines
6.9 KiB
VB.net
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
|