diff --git a/Global_Indexer/ClassWindream.vb b/Global_Indexer/ClassWindream.vb new file mode 100644 index 0000000..f2c220a --- /dev/null +++ b/Global_Indexer/ClassWindream.vb @@ -0,0 +1,1775 @@ + +Imports WINDREAMLib +Imports WINDREAMLib.WMCOMEvent +Imports WINDREAMLib.WMEntity +Imports WINDREAMLib.WMObjectEditMode +Imports WINDREAMLib.WMSearchOperator +Imports WINDREAMLib.WMSearchRelation +Imports WMOBRWSLib +Imports WMOSRCHLib +Imports System.IO +Imports System.Text.RegularExpressions + +Public Class ClassWindream + +#Region "+++++ Konstanten +++++" + Const DEBUG = AUS + Const AUS = 0 + Const WINDREAM = 1 + Const VARIABLEN = 2 + Const WMObjectStreamOpenModeReadWrite = 2 + + Const STREAM_BinaryObject = "BinaryObject" + + Public Const WMObjectVariableValueTypeUndefined = 0 + Public Const WMObjectVariableValueTypeString = 1 + Public Const WMObjectVariableValueTypeInteger = 2 + Public Const WMObjectVariableValueTypeFloat = 3 + Public Const WMObjectVariableValueTypeBoolean = 4 + Public Const WMObjectVariableValueTypeDate = 5 + Public Const WMObjectVariableValueTypeFixedPoint = 6 + Public Const WMObjectVariableValueTypeTimeStamp = 7 + Public Const WMObjectVariableValueTypeCurrency = 8 + Public Const WMObjectVariableValueTypeTime = 9 + Public Const WMObjectVariableValueTypeVariant = 10 + Public Const WMObjectVariableValueTypeMask = &HFFF + Public Const WMObjectVariableValueFlagMask = &HFFFFF000 + Public Const WMObjectVariableValueTypeVector = &H1000 + Public Const WMObjectVariableValueTypeFulltext = &H2000 + Public Const WMObjectVariableValueTypeDefaultValue = &H4000 +#End Region + +#Region "+++++ Variablen +++++" + Public Shared oConnect ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht) + Public Shared _session 'As WINDREAMLib.WMSession ' der Typ darf nicht festgelegt werden (warum auch immer... geht sonst nicht) + Public Shared oBrowser As New WMOBRWSLib.ServerBrowser + Public Shared _DocumentTypes As WINDREAMLib.WMObjects + Private _SearchController As New WMOSearchController + Public Shared _WDObjekttyp As String + Private Shared _currentWMObject As WINDREAMLib.WMObject +#End Region + + +#Region "+++++ Allgemeine Methoden und Funktionen +++++" + + ''' + ''' Konstruktor für die windream-Klasse + ''' + ''' + Sub New() + ' wenn ein Unexpected error in der Initialisierung auftrat + If Not ClassWindream.Init() Then + ' Nachricht ausgeben + MsgBox("Es trat ein Unexpected error in der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind.", MsgBoxStyle.Exclamation, "Unexpected error in Initialisierung") + + ' das Programm "abschießen" + Process.GetCurrentProcess.Kill() + End If + End Sub + Public Function GetSearchDocuments(ByVal wdfLocation As String) + + If System.IO.File.Exists(wdfLocation) Then + + Try + Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) + Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length) + + _SearchController = New WMOSearchController + + Me._SearchController.CheckSearchProfile(wdfLocation.ToLower) + Dim suchTyp = Me._SearchController.SearchProfileTargetProgID + Dim ExSettings As Object + Dim oSearch As Object + ExSettings = Me._SearchController.SearchProfileExSettings + If ExSettings = 0 Then ExSettings = 7 + + Dim srchQuick As WMOSRCHLib.WMQuickSearch = CreateObject("WMOSrch.WMQuickSearch") + Dim srchIndex As WMOSRCHLib.WMIndexSearch = CreateObject("WMOSrch.WMIndexSearch") + Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch") + + '' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments() + Select Case suchTyp.ToString.ToUpper + Case "WMOSRCH.WMQUICKSEARCH" + srchQuick.WMSession = CreateObject("Windream.WMSession", Me.GetCurrentServer) + + Me.oConnect.LoginSession(srchQuick.WMSession) + + srchQuick.ClearSearch() + srchQuick.SearchProfilePath = ProfilePath + srchQuick.LoadSearchProfile(ProfileName) + + oSearch = srchQuick.GetSearch() + + Case "WMOSRCH.WMINDEXSEARCH" + srchIndex.WMSession = CreateObject("Windream.WMSession", Me.GetCurrentServer) + + Me.oConnect.LoginSession(srchIndex.WMSession) + + srchIndex.ClearSearch() + srchIndex.SearchProfilePath = ProfilePath + srchIndex.LoadSearchProfile(ProfileName) + + oSearch = srchIndex.GetSearch() + + Case "WMOSRCH.WMOBJECTTYPESEARCH" + srchObjectType.WMSession = CreateObject("Windream.WMSession", Me.GetCurrentServer) + + Me.oConnect.LoginSession(srchObjectType.WMSession) + + srchObjectType.ClearSearch() + srchObjectType.SearchProfilePath = ProfilePath + srchObjectType.LoadSearchProfile(ProfileName) + + oSearch = srchObjectType.GetSearch() + + Case Else + MsgBox("KEIN GÜLTIGER WINDREAM-SUCHTYP") + Return Nothing + End Select + Dim WMObjects As Object + WMObjects = oSearch.Execute + Return oSearch.execute + + Catch ex As Exception + ' bei einem Fehler einen Eintrag in der Logdatei machen + MsgBox("Fehler in GetSearchDocuments: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return Nothing + End Try + + End If + + Return Nothing + + End Function + Public Function GetSearchDocuments_Objekttype(ByVal wdfLocation As String) + + If System.IO.File.Exists(wdfLocation) Then + + Try + Dim ProfileName = wdfLocation.Substring(wdfLocation.LastIndexOf("\") + 1) + Dim ProfilePath = wdfLocation.Substring(0, wdfLocation.Length - ProfileName.Length) + + + + ' Me.oController.CheckSearchProfile(wdfLocation.ToLower) + ' Dim suchTyp = Me.oController.SearchProfileTargetProgID + 'Dim ExSettings As Object + Dim oSearch As Object + 'ExSettings = Me.oController.SearchProfileExSettings + 'If ExSettings = 0 Then ExSettings = 7 + + Dim srchObjectType As WMOSRCHLib.WMObjectTypeSearch = CreateObject("WMOSrch.WMObjectTypeSearch") + + '' Der öffentliche Member CheckSearchProfile für den Typ IWMQuickSearch7 wurde nicht gefunden. [Microsoft.VisualBasic] => GetSearchDocuments() + + srchObjectType.WMSession = CreateObject("Windream.WMSession", Me.GetCurrentServer) + + Me.oConnect.LoginSession(srchObjectType.WMSession) + + srchObjectType.ClearSearch() + srchObjectType.SearchProfilePath = ProfilePath + srchObjectType.LoadSearchProfile(ProfileName) + + oSearch = srchObjectType.GetSearch() + + + Dim WMObjects As Object + WMObjects = oSearch.Execute + Return oSearch.execute + + Catch ex As Exception + ' bei einem Fehler einen Eintrag in der Logdatei machen + MsgBox("Fehler in GetSearchDocuments()" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return Nothing + End Try + + End If + + Return Nothing + + End Function + + ''' + ''' Initialisiert die statische Klasse (Login, Session starten, usw.) + ''' + ''' Liefert True wenn das Anmelden erfolgreich war, sonst False + ''' + Public Shared Function Init() As Boolean + Try + Try + ' Session-Objekt instanziieren und mit dem im Client ausgewählten Server belegen + _session = CreateObject("Windream.WMSession", GetCurrentServer) + LOGGER.Info(" ...windream-Server: '" & GetCurrentServer() & "'") + ' Connection-Objekt instanziieren + oConnect = CreateObject("Windream.WMConnect") + 'MsgBox("windrem init 'ed") + Catch ex As Exception + LOGGER.Info("Windream konnte nicht initiiert werden: " & ex.Message) + LOGGER.Error(ex.Message) + Return False + End Try + + + ' wenn windream nicht angemeldet ist + If Not IsLoggedIn() Then + + ' Art der Anmeldung an windream festlegen + ' 0x0L (also 0) = Standard windream Benutzer + ' WM_ODULE_ID_DOCTYPEEDITOR_LIC = ermöglicht Zugriff auf die windream Management Funktionen (Z.B. zur Verwaltung der windream Dokumententypen, Auswahllisten, etc.) + ' WM_MODULE_ID_INDEXSERVICE = ermöglicht der Session die Indexierungs-Events vom windream DMS-Service zu empfangen + oConnect.ModuleID = 0 + + ' setzt die minimal erwartete windream-Version + oConnect.MinReqVersion = "4" + + ' -- Impersonifizierung nur möglich mit registry-eintrag -- + ' oConnect.UserName "\schulung\windream" + ' oConnect.Password "windream" + + ' Verbindung mit Session-Objekt (und dem ausgewählten Server) aufbauen + oConnect.LoginSession(_session) + If _session.aLoggedin = False Then + MsgBox("Es konnte keine Verbindung mit dem windream-Server hergestellt werden", MsgBoxStyle.Exclamation, "Verbindung konnte nicht hergestellt werden") + Return False + End If + + 'If My.Settings.vDetailLog Then + ' LOGGER.Info(" >> windream-Version: '" & oSession.GetSystemInfo("WindreamVersion") & "'") + 'End If + + ' AUSGABE VON SYSTEMINFORMATIONEN + ' Gibt die Versionsart (Lizenztyp) also Small-Business-Edition (SBE), Small-Business-Extension (SBX) + ' oder Business-Edition (BE) aus + 'MsgBox("WindreamVersion: " & oSession.GetSystemInfo("WindreamVersion") & vbNewLine & "LicenceKey: " & oSession.GetSystemInfo("LicenceKey") & vbNewLine & _ + ' vbNewLine & "LicenceName: " & oSession.GetSystemInfo("LicenceName")) + + 'Dim WMCtrl As AISCONTROLDATACOMLib.AISControlData + 'WMCtrl = New AISCONTROLDATACOMLib.AISControlData + + '' liefert die Versionsnummer des Clients + + 'MsgBox(WMCtrl.WMWorkstationBuildNo) + 'MsgBox(WMCtrl.W + '' liefert den Servernamen des angemeldeten windreams + 'MsgBox(WMCtrl.WMServerName) + + Try + _session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False) + ' der Parameter WMEntityDocument definiert, dass nur Dokumenttypen und keine + ' Ordnertypen ausgelesen werden + _DocumentTypes = _session.GetWMObjectTypes(WINDREAMLib.WMEntity.WMEntityDocument) + Catch ex As Exception + Return False + End Try + + End If + + Return True + + Catch ex As Exception + If Err.Number = -2147220985 Then + MsgBox("Die installierte windream-Version ist nicht ausreichend für den Betrieb der Tool Collection für windream." & vbNewLine & + "Bitte kontaktieren Sie Digital Data." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & Err.Description, MsgBoxStyle.Exclamation, "Unzureichende windream-Version") + Else + MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Login an windream") + End If + Return False + End Try + + End Function + +#End Region + + + +#Region "+++++ Funktionen die für den Objekttyp relevate Informationen zurückliefern +++++" + + ''' + ''' Liefert alle Objekttypen des aktuellen Servers als windream-Objekte. + ''' + ''' Alle Objekttypen als WMObjects-Objekt + ''' + Public Shared Function GetObjecttypesAsObjects() As WMObjects + Try + Return _DocumentTypes + Catch ex As Exception + MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Auslesen der Objekttypen") + Return Nothing + End Try + End Function + + + ''' + ''' Liefert alle Indexe eines Objekttypen. + ''' + ''' Name des Objekttyps + ''' Array mit allen Objekttyp zugeordneten Indexen als String + ''' + Public Shared Function GetIndicesByObjecttype(ByVal Objecttype_name As String) As String() + Try + Dim oObjectType As WMObject + Dim oIndexAttributes As WMObjectRelation + Dim oIndexAttribute As WMObject + Dim oIndex As WMObject + Dim oRelProperties As WMObjectRelationClass + + ' den Objekttyp laden + oObjectType = _session.GetWMObjectByName(WMEntityObjectType, Objecttype_name) + + ' Beziehung zu Indizes des Objekttyp auslesen + oIndexAttributes = oObjectType.GetWMObjectRelationByName("TypeAttributes") + + ' Array für Indizes vorbereiten + Dim aIndexNames(oIndexAttributes.Count - 1) As String + + ' alle Indizes durchlaufen + For j As Integer = 0 To oIndexAttributes.Count - 1 + + ' aktuellen Index auslesen + oIndexAttribute = oIndexAttributes.Item(j) + + ' Eigenschaften des Index auslesen + oRelProperties = oIndexAttribute.GetWMObjectRelationByName("Attribute") + + ' Index aus den Eigenschaften auslesen + oIndex = oRelProperties.Item(0) + 'Dim o = oRelProperties.Item(2) + ' Indexname speichern + aIndexNames(j) = oIndex.aName + Next + 'Indexarray sortiert zurückgeben + Array.Sort(aIndexNames) + ' Indexarray zurückgeben + Return aIndexNames + + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Auslesen der windream-Indexe") + Return Nothing + End Try + End Function + + ''' + ''' Überprüft ob der angegebene Index im Objekttyp existiert + ''' + ''' Name des zu durchsuchenden Objekttyps + ''' Name des zu suchenden Indexes + ''' Liefert True wenn der Index im Objekttyp existiert, sonst False + ''' + Public Shared Function ExistIndexInObjekttyp(ByVal objekttyp As String, ByVal indexname As String) As Boolean + Try + Dim indexnamen() As String = GetIndicesByObjecttype(objekttyp) + + If indexnamen Is Nothing Then Return False + + Return indexnamen.Contains(indexname) + Catch ex As Exception + MsgBox("Beim Prüfen ob ein Index für einen Objekttypen existiert, ist ein Fehler aufgetreten." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Prüfen auf Existenz eines Index in einem Objekttyp") + End Try + + Return False + + End Function + +#End Region + + + +#Region "+++++ Allgemeine Funktionen die Informationen zurückliefern +++++" + + ''' + ''' Liefert True wenn die windream-Session angemeldet ist und False für den Fall, dass die Session nicht eingeloggt ist. + ''' + ''' Anmeldestatus als Boolean + ''' + Public Shared Function IsLoggedIn() As Boolean + Try + Return _session.aLoggedin + Catch ex As Exception + MsgBox("Es konnte nicht erfolgreich geprüft werden, ob das Programm am windream-Server angemeldted ist." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error in Loggedin-Prüfung") + End Try + + Return False + End Function + + ''' + ''' Liefert den Servernamen an dem windream aktuell angemeldet ist. + ''' + ''' Servername als String + ''' + Public Shared Function GetCurrentServer() As String + Try + Return oBrowser.GetCurrentServer 'ClassWindream.oBrowser.GetCurrentServer + Catch ex As Exception + MsgBox("Der aktuell gewählte windream-Server konnte nicht ausgelesen werden." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Unexpected error inm Auslesen des windream-Servers") + End Try + + Return "" + End Function + +#End Region + Public Shared Function Stream_File(ByVal SourceFilePath As String, ByVal NewFileName As String) + _currentWMObject = Nothing + + Dim oWindreamFilename As String = NewFileName + Dim oFileName As String = NewFileName + Dim oWDriveRegex As New Regex("^\w{1}:") + + If oWDriveRegex.IsMatch(NewFileName) Then + oFileName = oWDriveRegex.Replace(NewFileName, vWLaufwerk) + oWindreamFilename = oWDriveRegex.Replace(NewFileName, String.Empty) + Else + oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty) + End If + + 'If NewFileName.StartsWith("W:") Then + ' oFileName = NewFileName.Replace("W:", vWLaufwerk) + ' oWindreamFilename = NewFileName.Replace("W:", String.Empty) + 'Else + ' oWindreamFilename = NewFileName.Replace(vWLaufwerk, String.Empty) + 'End If + + Dim oSourceFilename As String = Path.GetFileName(SourceFilePath) + Dim oDestination As String = Path.GetDirectoryName(oFileName) + + If My.Computer.FileSystem.DirectoryExists(oDestination) = False Then + My.Computer.FileSystem.CreateDirectory(oDestination) + LOGGER.Info(" - Zielverzeichnis neu erzeugt!") + End If + + LOGGER.Info(" ...Stream_File wurde gestartet") + + ' Objekt für Datei und Zielverzeichnis anlegen + + + LOGGER.Info(" ...Quelldatei gelesen") + + If My.Computer.FileSystem.DirectoryExists(oDestination) Then + LOGGER.Info(" ...targetPath existiert") + ' Überprüfen ob der zu Kopieren notwendige Speicherplatz auf Ziellaufwerk vorhanden ist + + Dim oFileInfo As New FileInfo(SourceFilePath) + Dim oFileLength As Long = oFileInfo.Length + + + LOGGER.Info(" ...Datei kopieren von '" & SourceFilePath & "' nach '" & NewFileName & "'.") + Dim Connect + Dim Session + Dim WMObject + Dim aFileIO + Dim aWMStream + Dim wmbrwsr + Dim dmsServer As String + LOGGER.Info(" ...Connect definieren: CreateObject('Windream.WMConnect')") + Connect = CreateObject("Windream.WMConnect") + aFileIO = New WMOTOOLLib.WMFileIO + + wmbrwsr = CreateObject("WMOBrws.ServerBrowser") + '================================================================== + ' get the current DMS-server to log in + '================================================================== + dmsServer = wmbrwsr.GetCurrentServer + '================================================================== + ' create a session + '================================================================== + Session = CreateObject("Windream.WMSession", dmsServer) + '================================================================== + ' login session + '================================================================== + Connect.LoginSession(Session) + Dim LoggedIn = Session.aLoggedin + If LoggedIn Then + LOGGER.Info(" ...Login ok. You are logged in as '" & Connect.UserName & "' on Server '" & dmsServer) + 'MsgBox("Login ok. You are logged in as '" + Connect.UserName + "' on Server '" + dmsServer + "'") + Else + LOGGER.Info(" >> Login on dms-Server failed") + ' MsgBox("Login failed. ") + End If + _session = Session + Const WMCOMEventWMSessionNeedIndex = 1 + + 'windream Objekte erstellen ohne Indexierungs-Event + Session.SwitchEvents(WMCOMEventWMSessionNeedIndex, False) + '================================================================== + ' check if files exist + '================================================================== + LOGGER.Info(" ...ÜBERPRÜFTER DATEINAME => " & oWindreamFilename) + Dim wdFilexists As Boolean + LOGGER.Info(" ...Versuch auf die Datei in W: zuzugreifen und zu sperren...") + wdFilexists = Session.WMObjectExists(WMEntityDocument, oWindreamFilename, 0, 0) + Err.Clear() + If wdFilexists = False Then + LOGGER.Info(" ...Datei ist NICHT vorhanden, kann also einfach neu angelegt werden") + + '================================================================== + ' create an object + '================================================================== + WMObject = Session.GetNewWMObjectFS(WMEntityDocument, oWindreamFilename, WMObjectEditModeObject) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject + If Err.Number > 0 Then + LOGGER.Info(" FEHLER: WMObject konnte nicht erzeugt werden - Error: '" & Err.Description & "'") + 'MsgBox(Err.Description) + End If + ' MsgBox("Created file: " + windreamFilename) + Else + ' wenn auf die Datei zugeriffen werden konnte ist sie bereits vorhanden -> Datum anhängen + LOGGER.Info(" ...Es konnte zugegriffen werden -> DATEI IST BEREITS VORHANDEN") + + + Select Case CURRENT_DOKART_DUPLICATE_HANDLING + + Case "New version" + LOGGER.Info("Creating new version of file [{0}]", NewFileName) + oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2) + CURRENT_NEWFILENAME = oWindreamFilename + Case "Question" + Dim oMessage = $"Eine Datei mit identischem Namen {vbNewLine}'{NewFileName}'{vbNewLine}existiert bereits!{vbNewLine}Wollen Sie die bestehende Datei ersetzen?" + If USER_LANGUAGE <> "de-DE" Then + oMessage = $"There is already a file with the name {NewFileName}!{vbNewLine}Would You like to replace the file?" + End If + + Dim oResult = MessageBox.Show(oMessage, "File exists", MessageBoxButtons.YesNo, MessageBoxIcon.Question) + + If oResult = DialogResult.No Then + oWindreamFilename = ClassFilehandle.Versionierung_Datei(NewFileName).ToString.Substring(2) + Else + If Delete_WDFile(oWindreamFilename) = False Then + Return False + End If + End If + Case Else + If Delete_WDFile(oWindreamFilename) = False Then + Return False + End If + End Select + + WMObject = Session.GetNewWMObjectFS(1, oWindreamFilename, 31) 'WMEntityDocument, windreamFilename, WMObjectEditModeObject + If Err.Number > 0 Then + LOGGER.Info(" FEHLER: Neues WMObject (Kopie) konnte nicht erzeugt werden - Error: '" & Err.Description & "'") + 'MsgBox(Err.Description) + End If + LOGGER.Info(" ...WMObject zugewiesen") + End If + LOGGER.Info(" ...ENDGÜLTIGER DATEINAME => " & oWindreamFilename) + If WMObject IsNot Nothing Then + 'NewFileName = vWLaufwerk & ":" & oWindreamFilename + ' lock object for file system access (to change the file itself) + WMObject.lock() + ' set fileIO the local source file + aFileIO.bstrOriginalFileName = SourceFilePath + If Err.Number > 0 Then + LOGGER.Info(" FEHLER: fileIO konnte nicht gesetzt werden - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + LOGGER.Info(" HINWEIS: Überprüfen Sie den Verweis auf die Bibliotheken 'WMOTool.WMFileIO' UND 'WMOTOOLLib.WMFileIO' und ändern diese in den Anwendungseinstellungen (DLL_WMOTOOL)'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + + Return False + ' MsgBox(Err.Description) + End If + ' open the windream object's file stream for writing + aWMStream = WMObject.OpenStream(STREAM_BinaryObject, WMObjectStreamOpenModeReadWrite) + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in OpenStream - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + 'MsgBox(Err.Description) + End If + LOGGER.Info(" ...oWMStream erzeugt") + ' give fileIO helper object the windream stream + aFileIO.aWMStream = aWMStream + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in Zuweisen aWMStream zu aFileIO - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + 'MsgBox(Err.Description) + End If + ' let fileIO object import the original file into windream + aFileIO.ImportOriginal(True) + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in FileIO.ImportOriginal(True) - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + ' MsgBox(Err.Description) + End If + LOGGER.Info(" ...Inhalt der Datei konnte übertragen werden") + ' close the windream file stream + aWMStream.Close() + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in aWMStream.Close() - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + 'MsgBox(Err.Description) + End If + ' save new windream object + WMObject.save() + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in WMObject.save - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + 'MsgBox(Err.Description) + End If + LOGGER.Info(" ...Datei konnte gespeichert werden") + ' unlock the windream object + WMObject.unlock() + If Err.Number > 0 Then + LOGGER.Info(" Unexpected error in WMObject.unlock - Datei wird wieder gelöscht - Error: '" & Err.Description & "'") + WMObject.Unlock() + Delete_WDFile(oWindreamFilename) + Return False + 'MsgBox(Err.Description) + End If + 'DATEI GRÖSSE ERMITTELN - MANCHMAL KOMMT ES VOR DAS DATEIGRÖße 0 ist + Dim info2 As New FileInfo(oFileName) + Dim length1 As Long = info2.Length + LOGGER.Info(" ...Length der Zieldatei: " & length1.ToString) + If oFileLength > 0 And Err.Number = 0 Then + + 'Dim p As String + 'If oWindreamFilename.StartsWith("\") Then + ' If oWindreamFilename.StartsWith("\\") Then + ' p = oWindreamFilename.Replace("\\", "\") + ' Else + ' p = oWindreamFilename + ' End If + 'Else + ' p = "\" & oWindreamFilename + 'End If + 'CURRENT_NEWFILENAME = vWLaufwerk & ":" & p + + CURRENT_NEWFILENAME = oFileName + + LOGGER.Info(" >> Datei '" & CURRENT_NEWFILENAME & "' wurde erfolgreich importiert!") + _currentWMObject = WMObject + Return True + Else + Delete_WDFile(oWindreamFilename) + LOGGER.Info("Error Number: [{0}]", Err.Number) + LOGGER.Info(" Unexpected error in Datei-Übertragen - FileLength ist 0, Übertragene Datei wurde gelöscht") + Return False + End If + Else + LOGGER.Info(" Could not create a WMObject for file:'" & oWindreamFilename) + If Not Err() Is Nothing Then + If Not Err.Description Is Nothing Then + LOGGER.Info(Err.Description) + End If + End If + Return False + End If + Else + LOGGER.Info("...targetPath existiert NICHT") + Return False + End If + + End Function + Public Shared Function Delete_WDFile(ByVal WD_File As String) + Try + If Not WD_File.StartsWith("\") Then + WD_File = WD_File.Substring(2) + End If + Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject + Try + WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) 'WINDREAMLib.WMEntity.WMEntityDocument + Catch ex As Exception + LOGGER.Info(">> Could not create WMObject for file '" & WD_File & "' - so it is not existing") + LOGGER.Error(ex.Message) + Return False + End Try + + LOGGER.Info(" >> Deleting started - Object created") + WMObject.Delete() + Return True + Catch ex As Exception + MsgBox("Unexpected Error in Delete_WDFile: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) + LOGGER.Info("Unexpected Error in Delete_WDFile: " & ex.Message) + Return False + End Try + End Function + ''' + ''' Übergibt einer in windream gespeicherten Datei Indexwerte + ''' + ''' Name der zu indexierenden Datei + ''' neuer Name der zu indexierenden Datei + ''' Liefert True wenn das Indexieren erfolgreich war, sonst False + ''' + Public Shared Function DateiIndexieren(ByVal WD_File As String, ByVal _Indexname As String, ByVal _Value As String) + Try + + LOGGER.Info(" ...DateiIndexieren wurde aufgerufen") + WD_File = WD_File.Substring(2) + Dim WMObject As WINDREAMLib.WMObject '= CreateObject("WINDREAMLib.WMObject") 'New WINDREAMLib.WMObject + 'MsgBox("DateiIndexieren:" & vbNewLine & ClassDateiimportWindream.GetWindreamDriveLetter & filenameZiel & vbNewLine & Me.selectedProfile.DokumenttypString) + ' den Dokumenttyp schreiben + LOGGER.Info(" ## Indexieren wird gestartet ##") + ' ein windream-Objekt der Datei anlegen + WMObject = _currentWMObject 'oSession.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, WD_File) + Try + LOGGER.Info(" ...Datei wird gesperrt") + ' die Datei sperren + WMObject.lock() + Catch ex As Exception + LOGGER.Info(" ...Datei ist bereits gesperrt") + ' nichts tun (Datei ist bereits gesperrt) + End Try + + If IsNothing(WMObject) Then + LOGGER.Info(" ...Windream Object ist nothing, Indexierung wird abgebrochen") + Return False + End If + + If IsNothing(WMObject.aObjectType) Then + LOGGER.Info(" ...Kein Objekttyp gesetzt, Indexierung wird abgebrochen") + Return False + End If + + LOGGER.Info($" ...Objekttyp wird gesetzt: " & _WDObjekttyp) + ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde + If WMObject.aObjectType.aName = "Standard" Then + + ' ihr den entsprechenden Dokumenttyp zuweisen + WMObject.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) + ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp + LOGGER.Info(" ...Objekttyp wurde gesetzt") + Else + LOGGER.Info(" ...Objekttyp war bereits gesetzt") + End If + + Try + WMObject.Save() + Catch ex As Exception + ' wenn es einen Unexpected error inm speichern gab, dann konnte auch kein Dokumenttyp gesetzt werden -> es kann also auch keine + ' Indexierung stattfinden und die Indexierung muss nicht fortgesetzt werden + Return False + End Try + + Try + WMObject.unlock() + Catch ex As Exception + ' wenn das entsperren nicht geklappt hat, dann war die Datei auch nicht gesperrt + End Try + LOGGER.Info(" ...Datei wurde gespeichert / Unlock wurde durchgeführt") + ' wenn bis hierher alles geklappt hat wurde ein Dokumenttyp übergeben + + LOGGER.Info(" ...Objekttyp: " & _WDObjekttyp) + + + ' wenn keine Werte vorhanden sind, soll wenigstens der Dokumenttyp eingetragen werden + + Dim indexe As String = "" + + LOGGER.Info(" ...Indexname: '" & _Indexname & "'") + Dim werte = New ArrayList + If (GetTypeOfIndexAsIntByName(_Indexname) = WMObjectVariableValueTypeVector) Or GetTypeOfIndexAsIntByName(_Indexname) = 4097 Then + LOGGER.Info(" ...Es handelt sich um ein Vektor-Feld") + + + 'Am 04.08.2014 aktualisiert: um zu verhindern das die vorangegangene Versionierung "Tilde-Werte" schreibt + LOGGER.Info(" ...Wert vor Überprüfung: " & _Value) + _Value = CheckIndexValue(_Value) + 'Ausstieg da Fehler in der Überprüfung + If _Value Is Nothing Then + Return False + End If + LOGGER.Info(" ...Value für Indexierung: " & _Value) + werte.Add(_Value) + + LOGGER.Info(" ...Werte zu Array hinzugefügt!") + Else + 'Am 04.08.2014 aktualisiert: um zu verhindern das die vorangegangene Versionierung "Tilde-Werte" schreibt + LOGGER.Info(" ...Value vor Überprüfung: " & _Value) + _Value = CheckIndexValue(_Value) + 'Ausstieg da Fehler in der Überprüfung + If _Value Is Nothing Then + Return False + End If + LOGGER.Info(" ...Value für Indexierung: " & _Value) + werte.Add(_Value) + + End If + + Dim arrIndex() As String = Nothing + Dim arrValue() As String = Nothing + ReDim Preserve arrIndex(0) + ReDim Preserve arrValue(0) + arrIndex(0) = _Indexname + arrValue(0) = _Value + Return RunIndexing(WMObject, arrIndex, arrValue) + + Catch ex As Exception + LOGGER.Info("Hinweis: Die Datei " & WD_File & " konnte nicht indexiert werden.") + LOGGER.Error(ex.Message) + LOGGER.Info("Fehler: " & ex.Message) + ' Me.TreeNodeInfos.Add(temp) + Return False + End Try + End Function + Private Shared Function RunIndexing(ByVal oDocument As WMObject, ByVal Indizes() As String, ByVal aValues() As Object) + Dim vektInsState As Integer = 1 + Try + If Indizes IsNot Nothing And aValues IsNot Nothing Then + If Not oDocument.aLocked Then + oDocument.lock() + Dim i As Integer = 0 + Dim indexname As String + If aValues.Length = 1 And aValues(0) = "" Then + LOGGER.Info(" ...Indexwert ist leer/Nothing - Keine Nachindexierung") + End If + ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde + If oDocument.aObjectType.aName <> _WDObjekttyp Then + ' ihr den entsprechenden Dokumenttyp zuweisen + oDocument.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) + ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp + LOGGER.Info(" ...Objekttyp '" & oDocument.aObjectType.aName & "' wurde in '" & _WDObjekttyp & "' geändert.") + Else + LOGGER.Info(" ...Objekttyp war bereits gesetzt") + End If + + Try + oDocument.Save() + Catch ex As Exception + ' wenn es einen Unexpected error inm speichern gab, dann konnte auch kein Dokumenttyp gesetzt werden -> es kann also auch keine + ' Indexierung stattfinden und die Indexierung muss nicht fortgesetzt werden + Return False + End Try + + 'Jetzt jeden Indexwert durchlaufen + For Each aName As String In Indizes + indexname = aName + If LogErrorsOnly = False Then + LOGGER.Info(" ") + LOGGER.Info(" >> Indexierung von Index '" & indexname & "'") + End If + ' das entsprechende Attribut aus windream auslesen + Dim oAttribute = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, Indizes(i)) + ' den Variablentyp (String, Integer, ...) auslesen + Dim vType = oAttribute.getVariableValue("dwAttrType") + ' wenn in aValues an Position i ein Wert steht + If IsNotEmpty(aValues(i)) Then + Dim _int As Boolean = False + Dim _date As Boolean = False + Dim _dbl As Boolean = False + Dim _bool As Boolean = False + 'If indexname = "Tournr" Then + ' MsgBox("Index: " & indexname & vbNewLine & "wert: " & aValues(i), MsgBoxStyle.Information, "Index: " & aName.ToString) + 'End If + + + 'MsgBox(oDocument.aName & vbNewLine & aValues(i) & vbNewLine & vType, MsgBoxStyle.Exclamation, "Zeile 87") + Dim value = aValues(i) + Dim convertValue + Dim vektor As Boolean = False + 'Den Typ des Index-Feldes auslesen + 'MsgBox(value.GetType.ToString) + Select Case (vType) + 'Case WMObjectVariableValueTypeUndefined + Case WMObjectVariableValueTypeString + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeString") + convertValue = CStr(value) + Case WMObjectVariableValueTypeInteger + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeInteger") + value = value.ToString.Replace(" ", "") + If IsNumeric(value) = False Then + LOGGER.Info(" ...Achtung: Value '" & value & "' kann nicht in Zahl konvertiert werden!") + End If + value = value.ToString.Replace(" ", "") + convertValue = CInt(value) + _int = True + Case WMObjectVariableValueTypeFloat + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeFloat") + value = value.ToString.Replace(" ", "") + convertValue = CDbl(value) + Case WMObjectVariableValueTypeFixedPoint + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeFixedPoint") + value = value.ToString.Replace(" ", "") + convertValue = CDbl(value) + _dbl = True + Case WMObjectVariableValueTypeBoolean + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeBoolean") + convertValue = CBool(value) + _bool = True + Case WMObjectVariableValueTypeDate + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeDate") + _date = True + 'Dim _date As Date = value + convertValue = value + Case WMObjectVariableValueTypeTimeStamp + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeTimeStamp") + convertValue = value + Case WMObjectVariableValueTypeCurrency + LOGGER.Info(" - Typ des windream-Indexes: WMObjectVariableValueTypeCurrency") + 'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden + Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(value)) + convertValue = aValueWrapper + Case WMObjectVariableValueTypeTime + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeTime") + 'If ((value)) Then + ' convertValue = CDate(value) + 'Else + ' convertValue = "" + 'End If + 'Dim _date As Date = value + convertValue = convertValue '*_date.ToShortTimeString + Case WMObjectVariableValueTypeFloat + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeFloat") + convertValue = CStr(value) + Case WMObjectVariableValueTypeVariant + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeVariant") + convertValue = CStr(value) + Case WMObjectVariableValueTypeFulltext + LOGGER.Info(" ...Typ des windream-Indexes: WMObjectVariableValueTypeFulltext") + convertValue = CStr(value) + Case 4097 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4097 Vektor alphanumerisch") + 'Vektor alphanumerisch + convertValue = CStr(value) + Case 4098 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4098 Vektor Numerisch") + 'Vektor Numerisch + convertValue = CStr(value) + Case 4099 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4099 Vektor Kommazahl") + 'Vektor Kommazahl + convertValue = CStr(value) + Case 4100 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4100 Vektor Boolean") + 'Vektor Kommazahl + convertValue = ToBoolean(value) + Case 4101 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4101 Vektor Date") + 'Vektor Kommazahl + convertValue = CStr(value) + Case 4103 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4103 Vektor DateTime") + 'Vektor DateTime + convertValue = CStr(value) + Case 4107 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 4107 Integer 64bit") + convertValue = CStr(value) + Case 36865 + vektor = True + LOGGER.Info(" ...Typ des windream-Indexes: 36865 Vektor alphanumerisch") + 'Vektor Kommazahl + convertValue = CStr(value) + Case Else + LOGGER.Info(" ...Typ des windream-Indexes konnte nicht bestimmt werden!") + LOGGER.Info(" ...Versuch des Auslesens (vType): " & vType) + 'MsgBox(vType & vbNewLine & CStr(value), MsgBoxStyle.Exclamation, "Marlon-Case Else") + convertValue = "" + End Select + If vektor = False Then + If convertValue.ToString Is Nothing = False Then + LOGGER.Info(" ...Konvertierter Wert: '" & convertValue.ToString & "'") + End If + End If + '############################################################################################ + '####################### Der eigentliche Indexierungsvorgang ################################ + '############################################################################################ + If vektor = False Then + If convertValue.ToString Is Nothing = False Then + LOGGER.Info(" ...Versuch dem Dok einen Index zuzuweisen: oDocument.SetVariableValue(" & aName & ", " & convertValue & ")") + If _int = True Then + convertValue = convertValue.ToString.Replace(" ", "") + oDocument.SetVariableValue(aName, CInt(convertValue)) + ElseIf _date = True Then + oDocument.SetVariableValue(aName, CDate(convertValue)) + ElseIf _bool Then + oDocument.SetVariableValue(aName, CBool(convertValue)) + ElseIf _dbl Then + convertValue = convertValue.ToString.Replace(" ", "") + oDocument.SetVariableValue(aName, CDbl(convertValue)) + Else + oDocument.SetVariableValue(aName, convertValue) + End If + 'Die Datei speichern + oDocument.Save() + + If LogErrorsOnly = False Then + LOGGER.Info(" ...Index '" & aName & "' wurde geschrieben") + LOGGER.Info("") + End If + Else + LOGGER.Info(" >> Kein Indexwert vorhanden") + End If + Else + 'VEKTORFELDER, ALSO ÜBERPRÜFEN OB ERGEBNIS-ARRAY GEFÜLLT IST + LOGGER.Info(" >> VEKTORFELD: Vorbereiten des Arrays") + + Dim myArray() + + + + 'For Each row As DataRow In DT.Rows + 'MsgBox(aName & vbNewLine & row.Item("Indexname") & vbNewLine & CStr(row.Item("Wert"))) + 'Next + Dim Anzahl As Integer = aValues.Length + 'Vektorfeld wird mit EINEM Wert gefüllt + If Anzahl = 1 Then + LOGGER.Info(" >> Vektorfeld wird mit EINEM Wert gefüllt ") + ReDim myArray(0) + Select Case vType + Case 36865 + 'Umwandeln in String + myArray(0) = CStr(value) + Case 4097 + 'Umwandeln in String + myArray(0) = CStr(value) + Case 4098 + 'Umwandeln in Integer + value = value.ToString.Replace(" ", "") + myArray(0) = CInt(value) + Case 4099 + Dim Str As String = value + Str = Str.ToString.Replace(" ", "") + 'Umwandeln in Double + myArray(0) = CDbl(Str.Replace(".", ",")) + + Case 4100 + ' Umwandeln in Boolean + myArray(0) = ToBoolean(value) + Case 4101 + 'Umwandeln in Date + myArray(0) = CDate(value) + Case 4107 + myArray(0) = Convert.ToInt64(value) + Case 4103 + 'Umwandeln in Datum Uhrzeit + myArray(0) = value + Case Else + 'Umwandeln in String + myArray(0) = CStr(value) + End Select + + 'Jetzt überprüfen ob Werte in Vektorfeld angefügt oder überschrieben werden sollen + LOGGER.Info(" >> Konvertierter Wert: " & myArray(0).ToString) + + Dim VektorArray() + + 'Immer anfügen + LOGGER.Info(" >> Check Existing Vektorvalues") + + Dim indicies As New List(Of Object) + + For Each element In myArray + If TypeOf element Is String Then + Dim splitted = element.ToString.Split(ClassConstants.VECTORSEPARATOR) + For Each s In splitted + indicies.Add(s) + Next + Else + indicies.Add(element) + End If + Next + + myArray = indicies.ToArray() + + VektorArray = Return_VektorArray(oDocument, aName, myArray) + + If VektorArray Is Nothing = False Then + ReDim myArray(VektorArray.Length - 1) + Array.Copy(VektorArray, myArray, VektorArray.Length) + + 'Jetzt die Nachindexierung für Vektor-Felder + oDocument.SetVariableValue(aName, myArray) + 'myArray) + LOGGER.Info(" >> 'SetVariableValue' für VEKTOR mit einem Wert erfolgreich") + + 'Die Änderungen festsschreiben/speichern + oDocument.Save() + + End If + Else + LOGGER.Info(" >> Vektorfeld wird mit MEHREREN Werten gefüllt ") + ' das ausgewählte Profil in _selectedProfile laden + + + 'Die Größe des Arrays festlegen + ReDim myArray(Anzahl - 1) + Dim i1 As Integer = 0 + 'Die Datatable durchlaufen und Werte für den Index in Array schreiben + For Each obj In myArray + myArray(i1) = CStr(obj) + LOGGER.Info(" >> Wert (" & i1 & ") aus Datatable: '" & myArray(i1).ToString & "'") + i1 = i1 + 1 + Next + LOGGER.Info(" >> Array wurde erfolgreich erzeugt") + + + Dim VektorArray() + + VektorArray = Return_VektorArray(oDocument, aName, myArray) + + If VektorArray Is Nothing = False Then + 'Das Array wieder anpassen + ReDim myArray(VektorArray.Length - 1) + 'Array.Copy(VektorArray, myArray, VektorArray.Length) + i1 = 0 + For Each _value As Object In VektorArray + Select Case vType + Case 36865 + myArray(i1) = CStr(_value) + Case 4097 + myArray(i1) = CStr(_value) + Case 4098 + Dim v As String = _value.ToString.Replace(" ", "") + myArray(i1) = CInt(v) + Case 4099 + 'Vektroryp Double + Dim Str As String = _value + Str = Str.ToString.Replace(" ", "") + myArray(i1) = CDbl(Str.Replace(".", ",")) + Case 4101 + 'Vektortyp DATE + Dim dat As String = _value + myArray(i1) = CDate(dat.Replace(".", ",")) + Case 4107 + myArray(i1) = Convert.ToInt64(_value) + Case Else + 'Vektortyp ALPHANUMERISCH + 'Die Größe des Arrays festlegen + myArray(i1) = CStr(myArray(0)) + End Select + LOGGER.Info(" >> Konvertierter Wert (" & i1 & ") : '" & myArray(i1).ToString & "'") + i1 += 1 + Next + 'Jetzt die Nachindexierung für Vektor-Felder + Try + oDocument.SetVariableValue(aName, myArray) + Catch ex As Exception + LOGGER.Info("RunIndexing -Unexpected error in indexing Vectorfield: " & ex.Message) + LOGGER.Error(ex.Message) + oDocument.Save() + oDocument.unlock() + Return False + End Try + + LOGGER.Info(" >> 'SetVariableValue' für VEKTOR erfolgreich") + + ' oDocument.LockRights() + + 'Die Änderungen festsschreiben/speichern + oDocument.Save() + LOGGER.Info(">> Indexierung erfolgreich beendet (Save ...") + Else + LOGGER.Info(" - Achtung: VektorArray Is NOTHING") + oDocument.Save() + Return True + End If + End If + End If + End If + + i += 1 + + Next + oDocument.unlock() + If LogErrorsOnly = False Then + LOGGER.Info(">> ...und Unlock durchgeführt)") + LOGGER.Info("") + End If + Return True + Else + LOGGER.Info(" >> Dokument ist gesperrt, Indexierung erst im nächsten Durchlauf!") + 'oDocument.unlock() + Return False + End If + End If + Catch ex As Exception + LOGGER.Info("ClassNiWindream.RunIndexing: " & ex.Message) + LOGGER.Error(ex.Message) + oDocument.Save() + oDocument.unlock() + Return False + End Try + End Function + Private Shared Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object) + Try + Dim missing As Boolean = False + Dim Anzahl As Integer = 0 + Dim ValueArray() + 'Jeden Wert des Vektorfeldes durchlaufen + Dim wertWD = oDocument.GetVariableValue(vktIndexName) + If wertWD Is Nothing = False Then + 'Nochmals prüfen ob wirklich Array + If wertWD.GetType.ToString.Contains("System.Object") Then + 'Keine Duplikatprüfung also einfach neues Array füllen + LOGGER.Info(" >> Duplikatprüfung soll durchgeführt werden.") + 'Duplikat Prüfung an, also nur anhängen wenn Wert <> + For Each WDValue As Object In wertWD + If WDValue Is Nothing = False Then + 'Erst einmal die ALten Werte schreiben + ReDim Preserve ValueArray(Anzahl) + 'Den Wert im Array speichern + ValueArray(Anzahl) = WDValue.ToString + Anzahl += 1 + End If + Next + 'Jetzt die Neuen Werte auf Duplikate überprüfen + For Each NewValue As Object In NIIndexe + If NewValue Is Nothing = False Then + If ValueArray.Contains(NewValue) = False Then + 'Das Array anpassen + ReDim Preserve ValueArray(Anzahl) + 'Den Wert im Array speichern + ValueArray(Anzahl) = NewValue.ToString + Anzahl += 1 + Else + LOGGER.Info(" >> Value '" & NewValue.ToString & "' bereits in Vektorfeld enthalten") + End If + End If + Next + + End If + Else + LOGGER.Info(" >> Vektorfeld ist noch leer....") + 'Den/die Neuen Wert(e) anfügen + For Each NewValue As Object In NIIndexe + If NewValue Is Nothing = False Then + + If ValueArray Is Nothing = False Then + If ValueArray.Contains(NewValue) = False Then + 'Das Array anpassen + ReDim Preserve ValueArray(Anzahl) + 'Den Wert im Array speichern + ValueArray(Anzahl) = NewValue '.ToString + Anzahl += 1 + Else + LOGGER.Info(" >> Value '" & NewValue.ToString & "' bereits in Array enthalten") + End If + Else 'Dererste Wert, also hinzufügen + 'Das Array anpassen + ReDim Preserve ValueArray(Anzahl) + 'Den Wert im Array speichern + ValueArray(Anzahl) = NewValue '.ToString + Anzahl += 1 + + End If + + End If + Next + End If + + Return ValueArray + Catch ex As Exception + LOGGER.Info("Unexpected Error in ClassWindream.Return_VektorArray: " & ex.Message) + LOGGER.Error(ex.Message) + End Try + + + End Function + Private Shared Function IsNotEmpty(ByVal aValue As Object) + + If aValue IsNot Nothing Then + Dim itsType As Type = aValue.GetType + If itsType Is GetType(String) Then + + If Not aValue = "" Then + Return True + End If + + Return False + Else + Return True + End If + Else + Return False + End If + + End Function + ''' + ''' Führt das eigendliche Indexieren aus + ''' + ''' + ''' der zu indexierenden Datei + ''' Name des zu indexierenden Indexfeldes + ''' Der Wert/die Werte die dem Index zugewiesen werden sollen + ''' Liefert True wenn das Indexieren erfolgreich war, sonst False + ''' + Public Shared Function Indexiere(ByVal filenameZiel As String, ByVal index As String, ByVal werte As Object) As Boolean + LOGGER.Info(" - In Indexierungsvorgang für: " & filenameZiel) + Try + Dim WMObject As WINDREAMLib.WMObject = Nothing '= CreateObject("WINDREAMLib.WMObject") '= New WINDREAMLib.WMObject 'CreateObject("WINDREAMLib.WMObject") + 'MsgBox("Indexiere: " & vbNewLine & filenameZiel) + 'werte Is Nothing Or _ + ' überprüfen ob alle notwendigen Informationen angegeben wurden (sonst abbrechen) + If filenameZiel Is Nothing Or + filenameZiel = "" Or + index Is Nothing Or + index = "" Or + Not ExistIndexInObjekttyp(_WDObjekttyp, index) Then + LOGGER.Info("=> Hinweis: Die Datei wurde auf Grund eines Problems in der Initialisierung nicht vollständig indexiert.") + Return False + End If + + Dim fileExists As Boolean + + ' prüfen ob die zu indexierende Datei existiert + fileExists = My.Computer.FileSystem.FileExists(vWLaufwerk & ":" & filenameZiel) '_windream.GetWindreamDriveLetter + + Dim an As Integer = 0 + Do While My.Computer.FileSystem.FileExists(vWLaufwerk & ":" & filenameZiel) = False + If an > 500 Then + fileExists = False + Exit Do + Else + LOGGER.Info(" Achtung: Datei exisitiert noch nicht: " & My.Computer.Clock.LocalTime) + End If + an = an + 1 + Loop + ' wenn die Datei existiert + If fileExists Then + WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel) + + ' eine Variable für den umgewandelten Indexwert anlegen (kein Typ, da noch unklar ist was reingeschrieben wird) + 'Dim convertValue = Nothing + + ' den Typ des Zielindexes auslesen + Dim TypDesIndexes As Integer + + Try + + ' ein windream-Objekt der Datei anlegen + WMObject = _session.GetWMObjectByPath(WINDREAMLib.WMEntity.WMEntityDocument, filenameZiel) + If LogErrorsOnly = False Then + LOGGER.Info(" - windream-Objekt der Datei erzeugt") + LOGGER.Info(" - Ziel: W:\" & filenameZiel) + End If + + 'Me.singleInfoNode.Add("Ziel: " & ClassDateiimportWindream.GetWindreamDriveLetter & filenameZiel) + + Try + ' die Datei sperren + WMObject.lock() + + 'WMObject.LockFor(WINDREAMLib.WMObjectEditMode.WMObjectEditModeObject) + Catch ex As Exception + + End Try + + ' wenn der Datei noch kein Dokumenttyp zugewiesen wurde + If WMObject.aObjectType.aName = "Standard" Then + ' ihr den entsprechenden Dokumenttyp zuweisen + WMObject.aObjectType = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityObjectType, _WDObjekttyp) + ' WMObject.aObjectType = Me.selectedProfile.Dokumenttyp + End If + + + ' wenn keine Werte vorhanden sind, soll wenigstens der Dokumenttyp eingetragen werden + If werte Is Nothing Then + + Try + WMObject.Save() + WMObject.unlock() + Catch ex As Exception + + End Try + + Return Nothing + End If + + ' den Typ des Zielindexes auslesen + TypDesIndexes = GetTypeOfIndexAsIntByName(index) + + ' wenn es sich bei dem Index NICHT um ein Vektorfeld handelt + If TypDesIndexes < WMObjectVariableValueTypeVector Then + LOGGER.Info(" - Bei dem Zielindex handelt es sich um einen Einzelindex.") + Else + LOGGER.Info(" Bei dem Zielindex handelt es sich um ein Vektorfeld.") + ' ein Backup der Indexwerte anlegen + Dim temp As Object = werte + ' und die eigendliche Variable zurücksetzen + werte = Nothing + ' dann soll nur der letzte Wert des Arrays übernommen werden, damit nicht versucht wird ein + ' Array in einen Einzelindex zu speichern + werte = temp + LOGGER.Info(" - Array geleert und erneuert!") + End If + Catch ex As Exception + LOGGER.Info("Hinweis: Beim Initialisieren der Datei auf dem windream-Laufwerk ist ein Fehler aufgetreten.") + LOGGER.Error(ex.Message) + Return False + End Try + + + 'Try + ' den Typ des Zielindexes + LOGGER.Info(" - Typ des Indexes: " & TypDesIndexes.ToString) + Select Case (TypDesIndexes) + Case WMObjectVariableValueTypeUndefined ' zu klären !!!! + 'convertValue = vbEmpty + Case WMObjectVariableValueTypeString + ''Führende Nullen Entfernen + 'If werte.ToString.StartsWith("0") Then + ' Dim wert As String = CStr(CInt(werte.ToString)) + ' convertValue = wert + ' LOGGER.Info(" - Führende Nullen wurden entfernt") + 'Else + ' Dim wert As String = CStr(CInt(werte.ToString)) + ' convertValue = wert + 'End If + 'If convertValue.ToString.Contains("~1") Then + ' convertValue = convertValue.ToString.Replace("~1", "") + 'End If + 'If convertValue.ToString.Contains("~2") Then + ' convertValue = convertValue.ToString.Replace("~2", "") + 'End If + 'If convertValue.ToString.Contains("~3") Then + ' convertValue = convertValue.ToString.Replace("~3", "") + 'End If + 'If convertValue.ToString.Contains("~4") Then + ' convertValue = convertValue.ToString.Replace("~4", "") + 'End If + + Case WMObjectVariableValueTypeInteger + ' convertValue = CInt(werte) + Case WMObjectVariableValueTypeFloat + werte = werte.ToString.Replace(".", ",") + 'convertValue = CDbl(werte) + + Case WMObjectVariableValueTypeBoolean + Try + ' convertValue = CBool(werte) + Catch ex As Exception + ' Nothing zuweisen damit SetVariableValue nicht ausgeführt wird + 'convertValue = Nothing + End Try + Case WMObjectVariableValueTypeDate + If (IsDate(werte)) Then + ' convertValue = CDate(werte) + Else + ' convertValue = vbEmpty + End If + + Case WMObjectVariableValueTypeFixedPoint + werte = werte.ToString.Replace(".", ",") + ' convertValue = CDbl(werte) + + Case WMObjectVariableValueTypeTimeStamp + Dim timestamp As Integer = GetTimestamp(werte) + If timestamp > 0 Then + ' convertValue = timestamp + Else + ' convertValue = vbEmpty + End If + + Case WMObjectVariableValueTypeCurrency + Dim aValue As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(werte) + ' convertValue = aValue + + Case WMObjectVariableValueTypeTime + If (IsDate(werte)) Then + ' convertValue = CDate(werte) ' ggf. aber nur die Zeit + Else + ' convertValue = vbEmpty + End If + + Case WMObjectVariableValueTypeVariant + ' convertValue = werte + + Case WMObjectVariableValueTypeMask ' zu klären !!!! + ' convertValue = vbEmpty + + Case WMObjectVariableValueFlagMask ' zu klären !!!! + ' convertValue = vbEmpty + + + Case WMObjectVariableValueTypeFulltext + 'convertValue = CStr(werte) + + Case WMObjectVariableValueTypeDefaultValue ' zu klären !!!! + ' convertValue = vbEmpty + + Case Else + ' wenn es sich um einen TypVektorIndex handelt + If TypDesIndexes >= 4096 And TypDesIndexes < 8192 Then + LOGGER.Info("- Es handelt sich um einen Vektorindex") + 'Dim temp_arr As New ArrayList + + Dim arrayIndex = 0 + Dim temp_arr As Object + Dim arrayLength As Integer = 0 + For Each element In werte + arrayLength = arrayLength + 1 + Next + + ReDim temp_arr(arrayLength - 1) + + Select Case (TypDesIndexes - WMObjectVariableValueTypeVector) + 'VektorIndex vom Typ String 64' + Case 1 + LOGGER.Info("- VektorIndex vom Typ String 1") + + For Each wert As Object In werte + 'Führende Nullen Entfernen + If werte.ToString.StartsWith("0") Then + Dim werteString As String = CStr(CInt(wert.ToString)) + wert = werteString + temp_arr(arrayIndex) = CStr(wert) + LOGGER.Info("- Führende Nullen wurden entfernt") + Else + temp_arr(arrayIndex) = CStr(wert) + + End If + + arrayIndex = arrayIndex + 1 + + LOGGER.Info("- Wert " & CStr(wert) & " konvertiert") + Next + Case WMObjectVariableValueTypeUndefined + ' convertValue = "" + + Case WMObjectVariableValueTypeString + LOGGER.Info("- VektorIndex vom Typ String 2") + For Each wert As Object In werte + 'Führende Nullen Entfernen + If werte.ToString.StartsWith("0") Then + wert = CInt(wert) + temp_arr(arrayIndex) = CStr(wert) + LOGGER.Info("- Führende Nullen wurden entfernt") + Else + temp_arr(arrayIndex) = CStr(wert) + End If + + arrayIndex = arrayIndex + 1 + + LOGGER.Info("- Wert " & CStr(wert) & " konvertiert") + Next + + Case WMObjectVariableValueTypeInteger + LOGGER.Info("- VektorIndex vom Typ Integer") + For Each wert As Object In werte + temp_arr(arrayIndex) = CInt(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeFloat + For Each wert As Object In werte + wert = wert.ToString.Replace(".", ",") + temp_arr(arrayIndex) = CDbl(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeBoolean + For Each wert As Object In werte + Try + temp_arr(arrayIndex) = CBool(wert) + Catch ex As Exception + ' Nothing zuweisen damit SetVariableValue nicht ausgeführt wird + temp_arr = Nothing + End Try + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeDate + For Each wert As Object In werte + 'wert = + temp_arr(arrayIndex) = CDate(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeFixedPoint + For Each wert As Object In werte + temp_arr(arrayIndex) = CDbl(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeTimeStamp + For Each wert As Object In werte + temp_arr(arrayIndex) = CInt(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeCurrency + For Each wert As Object In werte + Dim aValue As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(werte) + temp_arr(arrayIndex) = aValue + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeTime + For Each wert As Object In werte + temp_arr(arrayIndex) = CDate(wert) + arrayIndex = arrayIndex + 1 + Next + + Case WMObjectVariableValueTypeVariant + ' dann bleiben alle Werte wie sie sind + + End Select + + werte = temp_arr + + LOGGER.Info("- Werte erfolgreich konvertiert") + Else + ' convertValue = vbEmpty + End If + + End Select + + 'Catch ex As Exception + ' ' einen Hinweis über einen aufgetretenen Fehler an das Array für den TreeView-Log anhängen + ' LOGGER.Info("Unexpected error in Auswerten/Konvertieren des Typs!", ex.Message) + ' ' die Indexierungsinformationen für den TreeView-Log zurückgeben + ' Return False + 'End Try + + + ' Try + ' ***** Anmerkung: das Nachindexieren mit vbEmpty ist möglich (siehe oben) jedoch nicht ***** + ' ***** das Indexieren mit einem Nothing-Wert !!! ***** + ' wenn das Konvertieren soweit gut gelaufen ist (also kein Nothing-Wert zugewiesen wurde) + ' If (convertValue Is Nothing) = False Then + ' den konvertierten Indexwert dem entsprechenden Index zuweisen + WMObject.SetVariableValue(index, werte) + If LogErrorsOnly = False Then + LOGGER.Info(" - den konvertierten Indexwert dem entsprechenden Index zuweisen") + LOGGER.Info(" - Indexname: " & index.ToString) + LOGGER.Info(" - Indexwert: " & werte.ToString) + End If + 'End If + + ' die Indexinformationen des Dokuments speichern + WMObject.Save() + LOGGER.Info(" - die Indexinformationen des Dokuments speichern") + ' Unlock in einem unbehandelten Try-Block um Fehler abzufangen, + ' wenn eine Datei nicht gesperrt ist + Try + ' die Sperrung des Dokuments aufheben + WMObject.unlock() + LOGGER.Info(" - die Sperrung des Dokuments aufheben") + Catch ex As Exception + + ' nichts tun (Datei war nicht gesperrt) + End Try + + ' die Indexierungsinformationen für den TreeView-Log zurückgeben + Return True + Else + ' die Indexierungsinformationen für den TreeView-Log zurückgeben + LOGGER.Info(" Hinweis: Die Datei hat zum Zeitpunkt der Indexierung noch nicht auf dem windream-Laufwerk existiert.") + End If + + Catch ex As Exception + LOGGER.Info(" Hinweis: Unbekannter Unexpected error inm Indexieren der Datei.") + LOGGER.Error(ex.Message) + LOGGER.Info(ex.Message) + End Try + + Return True + + End Function + + ''' + ''' Diese Funktion überprüft ob eine Variable ein Array ist, oder nicht. + ''' + ''' Variable die überprüft werden soll + ''' Liefert True wenn es sich um ein Array handelt, sonst False + ''' + Private Shared Function IsArray(ByVal arrayOrNot As Object) + + Dim arrayType As String = UCase(arrayOrNot.GetType.ToString) + + ' überprüft an welcher Stelle sich ein '['-Zeichen befindet + Dim position = InStr(arrayType, "[") + + ' existiert ein '['-Zeichen, so handelt es sich um ein Array (GetType wäre System.Object[]) + If Not position = 0 Then + Return True + Else + Return False + End If + End Function + + + ''' + ''' Diese Funktion überprüft ob eine Variable eine ArrayList ist, oder nicht. + ''' + ''' Variable die überprüft werden soll + ''' Liefert True wenn es sich um eine ArrayList handelt, sonst False + ''' + Private Shared Function IsArrayList(ByVal arrayOrNot As Object) + + Dim arrayType As String = UCase(arrayOrNot.GetType.ToString) + + ' überprüft an welcher Stelle sich ein '['-Zeichen befindet + Dim position = InStr(arrayType, "[") + + ' existiert ein '['-Zeichen, so handelt es sich um ein Array (GetType wäre System.Object[]) + If arrayOrNot.GetType.ToString = "System.Collections.ArrayList" Then + Return True + Else + Return False + End If + End Function + ''' + ''' Diese Funktion errechnet aus einem Datum den Unix-Timestamp + ''' + ''' Datum, für das der Timestamp errechnet werden soll + ''' Liefert den Timestamp als Integer + ''' + Private Shared Function GetTimestamp(ByVal FromDateTime As DateTime) As Integer + + If IsDate(FromDateTime) Then + Dim Startdate As DateTime = #1/1/1970# + Dim Spanne As TimeSpan + + ' vom Datum das Datum des "Beginns der Zeitrechnung" abziehen + Spanne = FromDateTime.Subtract(Startdate) + + ' die Zeitspanne in einen Integer umwandeln + Return CType(Math.Abs(Spanne.TotalSeconds()), Integer) + Else + Return 0 + End If + End Function + ''' + ''' Liefert den Typen eines Indexes als Integer. + ''' + ''' Name des zu überprüfenden Indexfeldes + ''' Liefert eine Zahl, die einen Typen beschreibt + ''' + Public Shared Function GetTypeOfIndexAsIntByName(ByVal indexname As String) As Integer + Try + Dim oAttribute = _session.GetWMObjectByName(WINDREAMLib.WMEntity.WMEntityAttribute, indexname) + Dim vType = oAttribute.getVariableValue("dwAttrType") + Return vType + Catch ex As Exception + Return Nothing + End Try + End Function + Private Shared Function CheckIndexValue(ByVal input) + Try + 'Ersetzt die Versionierungen Tilde(~) und Klammern ((1)) + For i As Integer = 1 To 20 + If input.ToString.EndsWith("~" & i.ToString) Then + input = input.ToString.Replace("~" & i.ToString, "") + ElseIf input.ToString.EndsWith("(" & i.ToString & ")") Then + input = input.ToString.Replace("(" & i.ToString & ")", "") + End If + + Next + + Return input + Catch ex As Exception + LOGGER.Info("Fehler in CheckIndexValue: " & ex.Message) + LOGGER.Error(ex.Message) + Return Nothing + End Try + + End Function + + Private Shared Function ToBoolean(input As String) As Boolean + If String.IsNullOrEmpty(input) Then Return False + Return (input.Trim().ToLower() = "true") OrElse (input.Trim() = "1") + End Function + +End Class diff --git a/Global_Indexer/My Project/AssemblyInfo.vb b/Global_Indexer/My Project/AssemblyInfo.vb index b4ec23b..f613f92 100644 --- a/Global_Indexer/My Project/AssemblyInfo.vb +++ b/Global_Indexer/My Project/AssemblyInfo.vb @@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + \ No newline at end of file diff --git a/Global_Indexer/frmAdministration.Designer.vb b/Global_Indexer/frmAdministration.Designer.vb index 601054d..e85e15e 100644 --- a/Global_Indexer/frmAdministration.Designer.vb +++ b/Global_Indexer/frmAdministration.Designer.vb @@ -118,10 +118,6 @@ Partial Class frmAdministration Me.BarButtonItem26 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem27 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem28 = New DevExpress.XtraBars.BarButtonItem() - Me.RibbonPageUserGroups = New DevExpress.XtraBars.Ribbon.RibbonPage() - Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.RibbonPageEmail = New DevExpress.XtraBars.Ribbon.RibbonPage() - Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageStart = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -129,6 +125,8 @@ Partial Class frmAdministration Me.RibbonPageGroupManualIndexFunctions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupAutoIndex = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupProfileRegex = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageEmail = New DevExpress.XtraBars.Ribbon.RibbonPage() + Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.Label12 = New System.Windows.Forms.Label() Me.XtraTabControl3 = New DevExpress.XtraTab.XtraTabControl() @@ -525,7 +523,7 @@ Partial Class frmAdministration resources.ApplyResources(Me.RibbonControl1, "RibbonControl1") Me.RibbonControl1.MaxItemId = 38 Me.RibbonControl1.Name = "RibbonControl1" - Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPageUserGroups, Me.RibbonPageEmail}) + Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPageEmail}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] Me.RibbonControl1.ShowToolbarCustomizeItem = False Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1 @@ -747,35 +745,6 @@ Partial Class frmAdministration Me.BarButtonItem28.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem28.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.BarButtonItem28.Name = "BarButtonItem28" ' - 'RibbonPageUserGroups - ' - Me.RibbonPageUserGroups.Appearance.BackColor = System.Drawing.Color.SeaGreen - Me.RibbonPageUserGroups.Appearance.Options.UseBackColor = True - Me.RibbonPageUserGroups.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3}) - Me.RibbonPageUserGroups.Name = "RibbonPageUserGroups" - resources.ApplyResources(Me.RibbonPageUserGroups, "RibbonPageUserGroups") - ' - 'RibbonPageGroup3 - ' - Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem6) - Me.RibbonPageGroup3.Name = "RibbonPageGroup3" - resources.ApplyResources(Me.RibbonPageGroup3, "RibbonPageGroup3") - ' - 'RibbonPageEmail - ' - Me.RibbonPageEmail.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup4}) - Me.RibbonPageEmail.Name = "RibbonPageEmail" - resources.ApplyResources(Me.RibbonPageEmail, "RibbonPageEmail") - ' - 'RibbonPageGroup4 - ' - Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem9) - Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem10) - Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem11) - Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem12) - Me.RibbonPageGroup4.Name = "RibbonPageGroup4" - resources.ApplyResources(Me.RibbonPageGroup4, "RibbonPageGroup4") - ' 'RibbonPageStart ' Me.RibbonPageStart.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2, Me.RibbonPageGroup1, Me.RibbonPageGroupManualIndex, Me.RibbonPageGroupManualIndexFunctions, Me.RibbonPageGroupAutoIndex, Me.RibbonPageGroupProfileRegex}) @@ -839,6 +808,21 @@ Partial Class frmAdministration Me.RibbonPageGroupProfileRegex.Name = "RibbonPageGroupProfileRegex" resources.ApplyResources(Me.RibbonPageGroupProfileRegex, "RibbonPageGroupProfileRegex") ' + 'RibbonPageEmail + ' + Me.RibbonPageEmail.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup4}) + Me.RibbonPageEmail.Name = "RibbonPageEmail" + resources.ApplyResources(Me.RibbonPageEmail, "RibbonPageEmail") + ' + 'RibbonPageGroup4 + ' + Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem9) + Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem10) + Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem11) + Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem12) + Me.RibbonPageGroup4.Name = "RibbonPageGroup4" + resources.ApplyResources(Me.RibbonPageGroup4, "RibbonPageGroup4") + ' 'RibbonStatusBar1 ' Me.RibbonStatusBar1.ItemLinks.Add(Me.txtStatus) @@ -2925,8 +2909,6 @@ Partial Class frmAdministration Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents RibbonPageUserGroups As DevExpress.XtraBars.Ribbon.RibbonPage - Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents BarButtonItem6 As DevExpress.XtraBars.BarButtonItem Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl Friend WithEvents Label12 As Label diff --git a/Global_Indexer/frmAdministration.resx b/Global_Indexer/frmAdministration.resx index 25c778b..d179874 100644 --- a/Global_Indexer/frmAdministration.resx +++ b/Global_Indexer/frmAdministration.resx @@ -841,12 +841,6 @@ Profil-Verwaltung - - Gruppenzuordnung - - - Profil-Zuordnung - E-Mail Indexierung @@ -7500,30 +7494,6 @@ Die erhaltenen Werte können in Indizes geschrieben oder zur Benennung der Datei DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - RibbonPageUserGroups - - - DevExpress.XtraBars.Ribbon.RibbonPage, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - RibbonPageGroup3 - - - DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - RibbonPageEmail - - - DevExpress.XtraBars.Ribbon.RibbonPage, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - - RibbonPageGroup4 - - - DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - RibbonPageStart @@ -7566,6 +7536,18 @@ Die erhaltenen Werte können in Indizes geschrieben oder zur Benennung der Datei DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + RibbonPageEmail + + + DevExpress.XtraBars.Ribbon.RibbonPage, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + RibbonPageGroup4 + + + DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + viewAssignedGroups diff --git a/Global_Indexer/frmStart.Designer.vb b/Global_Indexer/frmStart.Designer.vb index 6afc7c8..a51498b 100644 --- a/Global_Indexer/frmStart.Designer.vb +++ b/Global_Indexer/frmStart.Designer.vb @@ -1,9 +1,9 @@ - _ + Partial Class frmStart Inherits DevExpress.XtraEditors.XtraForm 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then @@ -20,7 +20,7 @@ Partial Class frmStart 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ + Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmStart)) @@ -52,7 +52,6 @@ Partial Class frmStart Me.TBHOTKEY_USER_PROFILETableAdapter = New Global_Indexer.MyDatasetTableAdapters.TBHOTKEY_USER_PROFILETableAdapter() Me.TableAdapterManager = New Global_Indexer.MyDatasetTableAdapters.TableAdapterManager() Me.btnChoosefiles = New System.Windows.Forms.Button() - Me.Button1 = New System.Windows.Forms.Button() Me.MenuStrip1.SuspendLayout() Me.StatusStrip1.SuspendLayout() CType(Me.MyDataset, System.ComponentModel.ISupportInitialize).BeginInit() @@ -221,24 +220,18 @@ Partial Class frmStart Me.btnChoosefiles.Name = "btnChoosefiles" Me.btnChoosefiles.UseVisualStyleBackColor = True ' - 'Button1 - ' - resources.ApplyResources(Me.Button1, "Button1") - Me.Button1.Name = "Button1" - Me.Button1.UseVisualStyleBackColor = True - ' 'frmStart ' Me.AllowDrop = True + Me.Appearance.Options.UseFont = True resources.ApplyResources(Me, "$this") Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.BackColor = System.Drawing.SystemColors.ControlLight - Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.btnChoosefiles) Me.Controls.Add(Me.LabelControl1) Me.Controls.Add(Me.StatusStrip1) Me.Controls.Add(Me.MenuStrip1) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle + Me.IconOptions.Icon = CType(resources.GetObject("frmStart.IconOptions.Icon"), System.Drawing.Icon) Me.MaximizeBox = False Me.Name = "frmStart" Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide @@ -280,5 +273,4 @@ Partial Class frmStart Friend WithEvents LabelLoggedIn As DevExpress.XtraBars.BarStaticItem Friend WithEvents LabelVersion As DevExpress.XtraBars.BarStaticItem Friend WithEvents RibbonMiniToolbar1 As DevExpress.XtraBars.Ribbon.RibbonMiniToolbar - Friend WithEvents Button1 As Button End Class diff --git a/Global_Indexer/frmStart.resx b/Global_Indexer/frmStart.resx index efd9f6b..4e15bef 100644 --- a/Global_Indexer/frmStart.resx +++ b/Global_Indexer/frmStart.resx @@ -121,43 +121,6 @@ 400, 17 - - 0, 0 - - - 295, 24 - - - - 5 - - - MenuStrip1 - - - MenuStrip1 - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - 108, 20 - - - Konfiguration - - - 221, 22 - - - Administration - 232, 22 @@ -170,6 +133,12 @@ Hotkey - Einstellungen + + 221, 22 + + + Administration + 218, 6 @@ -197,9 +166,49 @@ Info + + 108, 20 + + + Konfiguration + + + 0, 0 + + + 295, 24 + + + + 5 + + + MenuStrip1 + + + MenuStrip1 + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + 515, 17 + + 133, 17 + + + FolderWatch ist aktiv + + + False + 0, 137 @@ -224,15 +233,6 @@ 2 - - 133, 17 - - - FolderWatch ist aktiv - - - False - 1072, 17 @@ -639,7 +639,7 @@ auf dieses Fenster oder... Segoe UI, 8.25pt - + AAABAAEAgIUAAAEAGAD4zwAAFgAAACgAAACAAAAACgEAAAEAGAAAAAAAAAAAAEgAAABIAAAAAAAAAAAA AAAAAABGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqpGHqoA @@ -1682,6 +1682,6 @@ auf dieses Fenster oder... frmStart - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a \ No newline at end of file