281 lines
13 KiB
VB.net
281 lines
13 KiB
VB.net
Imports System.IO
|
|
Imports DD_LIB_Standards
|
|
Public Class frmWM_EntityImport
|
|
Private LOCAL_IMPORTFILE As String
|
|
Private LOCAL_NEWFILESTRING As String
|
|
Private LOCAL_TARGET_PATH As String
|
|
Private LOCAL_COUNTFILES As Integer
|
|
Private Sub frmWD_EntityImport_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
My.Settings.Save()
|
|
End Sub
|
|
|
|
Private Sub frmWD_EntityImport_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Me.txtEntityString.Text = CURRENT_ENTITYSTRING
|
|
If WMMOD.SessionReconnect Then
|
|
ObjektTypenEintragen()
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
Private Sub ObjektTypenEintragen()
|
|
Try
|
|
' Combobox leeren
|
|
Me.cmbObjekttyp.Items.Clear()
|
|
' alle Objekttypen durchlaufen
|
|
For Each oDokumentTyp As String In WMMOD.ObjectTypes
|
|
' und in die Combobox eintragen
|
|
Me.cmbObjekttyp.Items.Add(oDokumentTyp)
|
|
Next
|
|
Catch ex As Exception
|
|
MsgBox("Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Eintragen der Objekttypen")
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub btnopenfolder_Click(sender As Object, e As EventArgs) Handles btnopenfolder.Click
|
|
Dim fbdia As New FolderBrowserDialog
|
|
If fbdia.ShowDialog() = DialogResult.OK Then
|
|
txtpath.Text = fbdia.SelectedPath
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnpathWD_Click(sender As Object, e As EventArgs) Handles btnpathWD.Click
|
|
Dim fbdia As New FolderBrowserDialog
|
|
If fbdia.ShowDialog() = DialogResult.OK Then
|
|
txtwindreamPath.Text = fbdia.SelectedPath
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnrunImport.Click
|
|
If txtpath.Text <> "" And txtwindreamPath.Text <> "" Then
|
|
LOCAL_COUNTFILES = 0
|
|
Dim searchoption As New System.IO.SearchOption
|
|
ListBox2.Items.Clear()
|
|
If rbsubdirectoriesFiles.Checked Or rbSubdirectoriesFolders.Checked Then
|
|
searchoption = IO.SearchOption.AllDirectories
|
|
Else
|
|
searchoption = IO.SearchOption.TopDirectoryOnly
|
|
End If
|
|
Dim filesarray = GetFiles(Me.txtpath.Text, Me.txtFilter.Text, txtFilter_exclude.Text, searchoption)
|
|
For Each f As String In filesarray
|
|
Work_File(f)
|
|
Next
|
|
MsgBox("Insgesamt wurden " & LOCAL_COUNTFILES.ToString & " Dateien nach windream importiert!", MsgBoxStyle.Information)
|
|
End If
|
|
|
|
End Sub
|
|
Private Sub chkImportoptionenBackup_CheckedChanged(sender As Object, e As EventArgs) Handles chkImportoptionenBackup.CheckedChanged
|
|
If chkImportoptionenBackup.Checked Then
|
|
Me.txtBackupordner.Enabled = True
|
|
Me.btnBackupordner.Enabled = True
|
|
Else
|
|
Me.txtBackupordner.Enabled = False
|
|
Me.btnBackupordner.Enabled = False
|
|
End If
|
|
End Sub
|
|
Public Shared Function GetFiles(path As String, searchPattern As String, excludePattern As String, searchOption As SearchOption) As String()
|
|
Dim searchPatterns As String() = searchPattern.Split("|"c)
|
|
Dim allFiles As New List(Of String)()
|
|
For Each sp As String In searchPatterns
|
|
allFiles.AddRange(System.IO.Directory.GetFiles(path, sp, searchOption))
|
|
Next
|
|
'allFiles.Sort()
|
|
Dim filesToExclude As New List(Of String)()
|
|
searchPatterns = excludePattern.Split("|"c)
|
|
For Each sp As String In searchPatterns
|
|
filesToExclude.AddRange(System.IO.Directory.GetFiles(path, sp, searchOption))
|
|
Next
|
|
|
|
Dim wantedFiles = allFiles.Except(filesToExclude)
|
|
|
|
Return wantedFiles.ToArray()
|
|
End Function
|
|
Sub Work_File(Filepath As String)
|
|
LOCAL_IMPORTFILE = Filepath
|
|
Dim filestring As String
|
|
|
|
If rbSubdirectoriesFolders.Checked = False Then
|
|
filestring = Path.GetFileName(Filepath)
|
|
Else
|
|
filestring = Filepath.Replace(Me.txtpath.Text, "")
|
|
End If
|
|
If rbsubdirectoriesFiles.Checked Then
|
|
filestring = Path.GetFileName(Filepath)
|
|
End If
|
|
Dim target As String = txtwindreamPath.Text & "\" & filestring
|
|
|
|
Dim version As Integer = 2
|
|
Dim Dateiname As String = Path.GetFileNameWithoutExtension(target)
|
|
Dim extension As String = Path.GetExtension(target)
|
|
|
|
Dim folder_Base As String = Path.GetDirectoryName(target)
|
|
If rbSubdirectoriesFolders.Checked Then
|
|
If Not IO.Directory.Exists(folder_Base) Then
|
|
' Nein! Jetzt erstellen...
|
|
Try
|
|
IO.Directory.CreateDirectory(folder_Base)
|
|
' Ordner wurde korrekt erstellt!
|
|
Catch ex As Exception
|
|
' Ordner wurde nich erstellt
|
|
End Try
|
|
End If
|
|
End If
|
|
Dim Stammname As String = folder_Base & "\" & Dateiname
|
|
Dim _neuername As String = folder_Base & "\" & Dateiname
|
|
LOCAL_TARGET_PATH = folder_Base
|
|
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
|
|
'Überprüfen ob File existiert
|
|
|
|
Do While File.Exists(_neuername & extension)
|
|
_neuername = Stammname & "~" & version
|
|
LOCAL_NEWFILESTRING = _neuername
|
|
version = version + 1
|
|
Loop
|
|
LOCAL_NEWFILESTRING = _neuername & extension
|
|
WINDREAM_IMPORT()
|
|
LOCAL_COUNTFILES += 1
|
|
End Sub
|
|
Private Function WINDREAM_IMPORT()
|
|
Try
|
|
WMOBJECTTYPE = Me.cmbObjekttyp.Text
|
|
Dim streamresult = clsWD_SET.Stream_File(LOCAL_IMPORTFILE, LOCAL_TARGET_PATH)
|
|
'Dim type = streamresult.GetType
|
|
If streamresult = True Then
|
|
Dim indexierung_erfolgreich As Boolean = False
|
|
|
|
'den Entity-Key auslesen
|
|
Dim sql As String = "Select Top 1 * from TBPMO_WD_OBJECTTYPE where Upper(object_type) = Upper('" & WMOBJECTTYPE & "')"
|
|
Dim dt As DataTable = MYDB_ECM.GetDatatable(sql)
|
|
If Not dt Is Nothing Then
|
|
If dt.Rows.Count = 1 Then
|
|
Dim indexname = dt.Rows(0).Item("IDXNAME_ENTITYID").ToString
|
|
Dim idxvalue = CURRENT_ENTITY_ID
|
|
LOGGER.Debug("Entity-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = clsWD_SET.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue, WMOBJECTTYPE)
|
|
If indexierung_erfolgreich = False Then
|
|
MsgBox("Error in indexing file Entity - See log", MsgBoxStyle.Critical)
|
|
End If
|
|
indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString
|
|
idxvalue = CURRENT_PARENT_ENTITY_ID
|
|
LOGGER.Debug("Parent-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = clsWD_SET.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue, WMOBJECTTYPE)
|
|
If indexierung_erfolgreich = False Then MsgBox("Error in indexing file Parent-ID - See log", MsgBoxStyle.Critical)
|
|
'###
|
|
'den Record-Key auslesen
|
|
indexname = dt.Rows(0).Item("IDXNAME_PARENTID").ToString
|
|
idxvalue = CURRENT_RECORD_ID
|
|
LOGGER.Debug("Record-ID: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = clsWD_SET.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue, WMOBJECTTYPE)
|
|
If indexierung_erfolgreich = False Then MsgBox("Unexpected Error in indexing file Record-ID - See log", MsgBoxStyle.Critical)
|
|
|
|
'den Doctype-Key auslesen
|
|
indexname = dt.Rows(0).Item("IDXNAME_DOCTYPE").ToString
|
|
idxvalue = CURRENT_DOKARTSTRING
|
|
LOGGER.Debug("Doctype: " & idxvalue.ToString, False)
|
|
indexierung_erfolgreich = clsWD_SET.IndexFile(CURRENT_FILEIN_WD, indexname, idxvalue, WMOBJECTTYPE)
|
|
If indexierung_erfolgreich = False Then MsgBox("Unexpected Error in indexing file Doctype - See log", MsgBoxStyle.Critical)
|
|
'####
|
|
End If
|
|
End If
|
|
If indexierung_erfolgreich = True Then
|
|
Dim error_Occured = False
|
|
If chkImportoptionenBackup.Checked And txtBackupordner.Text <> String.Empty Then
|
|
error_Occured = Create_Copy()
|
|
End If
|
|
'Die Originaldatei löschen
|
|
If error_Occured = False Then
|
|
File.Delete(LOCAL_IMPORTFILE)
|
|
End If
|
|
|
|
Else
|
|
MsgBox("Es gab ein Problem bei der Indexierung der Datei. Bitte prüfen sie das Log!", MsgBoxStyle.Exclamation, "Achtung:")
|
|
End If
|
|
Else
|
|
MsgBox("Unexpected Error in Stream2windream. Please check logfile!", MsgBoxStyle.Exclamation)
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Windream-Import:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Function
|
|
Private Function Create_Copy()
|
|
Try
|
|
Dim filestring As String
|
|
If rbSubdirectoriesFolders.Checked = False Then
|
|
filestring = Path.GetFileName(LOCAL_IMPORTFILE)
|
|
Else
|
|
filestring = LOCAL_IMPORTFILE.Replace(Me.txtpath.Text, "")
|
|
End If
|
|
If rbsubdirectoriesFiles.Checked Then
|
|
filestring = Path.GetFileName(LOCAL_IMPORTFILE)
|
|
End If
|
|
Dim target As String = txtBackupordner.Text & "\" & filestring
|
|
|
|
Dim version As Integer = 2
|
|
Dim Dateiname As String = Path.GetFileNameWithoutExtension(target)
|
|
Dim extension As String = Path.GetExtension(target)
|
|
|
|
Dim folder_Base As String = Path.GetDirectoryName(target)
|
|
|
|
If Not IO.Directory.Exists(folder_Base) Then
|
|
' Nein! Jetzt erstellen...
|
|
Try
|
|
IO.Directory.CreateDirectory(folder_Base)
|
|
' Ordner wurde korrekt erstellt!
|
|
Catch ex As Exception
|
|
' Ordner wurde nich erstellt
|
|
End Try
|
|
End If
|
|
|
|
Dim Stammname As String = folder_Base & "\" & Dateiname
|
|
Dim _neuername As String = folder_Base & "\" & Dateiname
|
|
LOCAL_TARGET_PATH = folder_Base
|
|
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
|
|
'Überprüfen ob File existiert
|
|
Dim COPY_STRING As String
|
|
Do While File.Exists(_neuername & extension)
|
|
_neuername = Stammname & "~" & version
|
|
COPY_STRING = _neuername
|
|
version = version + 1
|
|
Loop
|
|
COPY_STRING = _neuername & extension
|
|
File.Copy(LOCAL_IMPORTFILE, COPY_STRING)
|
|
Return False
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Create-Copy:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return True
|
|
End Try
|
|
|
|
|
|
End Function
|
|
Private Sub cmbObjekttyp_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbObjekttyp.SelectedIndexChanged
|
|
If cmbObjekttyp.SelectedIndex <> -1 Then
|
|
Load_Indices(cmbObjekttyp.Text)
|
|
End If
|
|
End Sub
|
|
Sub Load_Indices(Objecttype As String)
|
|
|
|
'den Entity-Key auslesen
|
|
Dim Sql = "Select Top 1 * from TBPMO_WD_OBJECTTYPE where Upper(object_type) = Upper('" & Objecttype & "')"
|
|
Dim DT As DataTable = MYDB_ECM.GetDatatable(sql)
|
|
Dim count As Integer = 0
|
|
If Not DT Is Nothing Then
|
|
If DT.Rows.Count = 1 Then
|
|
ListView1.Items.Clear()
|
|
ListView1.Items.Add(DT.Rows(0).Item("IDXNAME_ENTITYID").ToString)
|
|
ListView1.Items(count).SubItems.Add(CURRENT_ENTITY_ID)
|
|
ListView1.Items.Add(DT.Rows(0).Item("IDXNAME_PARENTID").ToString)
|
|
ListView1.Items(count + 1).SubItems.Add(CURRENT_PARENT_ENTITY_ID)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub frmWD_EntityImport_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
If My.Settings.WD_ENTITYIMP_OBJECTTYPE <> String.Empty Then
|
|
Load_Indices(My.Settings.WD_ENTITYIMP_OBJECTTYPE)
|
|
End If
|
|
If My.Settings.WD_ENTITYIMP_SAFETYPATH <> String.Empty Then
|
|
Me.chkImportoptionenBackup.Checked = True
|
|
End If
|
|
End Sub
|
|
End Class |