ToolCollection/ToolCollection/ClassDIRegel.vb
Jonathan Jenne 688f53a74a jj 31.05
2017-05-31 12:17:35 +02:00

310 lines
12 KiB
VB.net

Public Class ClassDIRegel
#Region "***** Variablen *****"
'Public xmlConfigFile As String = My.Settings.vConfigDatei
Public _profilname As String = ""
Public _zielindex As String = ""
Public _indexieren_aus As String = ""
Public _art As String = ""
Public _aktiv As Boolean = True
Public _id As Integer = 0
Public _trennzeichen As String = ""
Public _dateiendung As String = ""
Public _text As String = ""
Public _anzahl As Integer = 0
Public _position As Integer = 0
Public _position_von As Integer = 0
Public _position_bis As Integer = 0
Public _mit_endung As Boolean = False
Public _datum_format As String = ""
Public _ordner_ebene As Object = Nothing
Public _removeZeros As Boolean = False
Public _beschreibung As String = ""
' Private _parentClass As ClassDateiimport = ClassDateiimport.GetInstance
#End Region
#Region "***** Konstruktoren *****"
''' <summary>
''' Konstruktor für KOMPLETT
''' </summary>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal datum_format As String, ByVal mit_endung As Boolean, Optional ByVal ordner_ebene As Object = Nothing)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._mit_endung = mit_endung
Me._indexieren_aus = indexieren_aus
Me._art = "KOMPLETT"
If ordner_ebene IsNot Nothing Then Me._ordner_ebene = ordner_ebene
If datum_format IsNot Nothing Then Me._datum_format = datum_format
End Sub
''' <summary>
''' Konstruktor für TRENNZEICHEN
''' </summary>
''' <param name="indexieren_aus"></param>
''' <param name="trennzeichen"></param>
''' <param name="position"></param>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal datum_format As String, ByVal trennzeichen As String, ByVal position As Integer, ByVal mit_endung As Boolean, Optional ByVal ordner_ebene As Object = Nothing, Optional remove0 As Boolean = True)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._indexieren_aus = indexieren_aus
Me._art = "TRENNZEICHEN"
Me._trennzeichen = trennzeichen
Me._position = position
Me._removeZeros = remove0
If ordner_ebene IsNot Nothing Then Me._ordner_ebene = ordner_ebene
If datum_format IsNot Nothing Then Me._datum_format = datum_format
End Sub
''' <summary>
''' Konstruktor für BEREICH
''' </summary>
''' <param name="indexieren_aus"></param>
''' <param name="position_von"></param>
''' <param name="anzahl"></param>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal datum_format As String, ByVal position_von As Integer, ByVal anzahl As Integer, Optional ByVal ordner_ebene As Object = Nothing, Optional remove0 As Boolean = True)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._indexieren_aus = indexieren_aus
Me._art = "BEREICH"
Me._position_von = position_von
Me._anzahl = anzahl
Me._removeZeros = remove0
If ordner_ebene IsNot Nothing Then Me._ordner_ebene = ordner_ebene
If datum_format IsNot Nothing Then Me._datum_format = datum_format
End Sub
''' <summary>
''' Konstruktor für REST
''' </summary>
''' <param name="indexieren_aus"></param>
''' <param name="position_von"></param>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal datum_format As String, ByVal position_von As Integer, ByVal mit_endung As Boolean, Optional ByVal ordner_ebene As Object = Nothing, Optional remove0 As Boolean = True)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._indexieren_aus = indexieren_aus
Me._art = "REST"
Me._position_von = position_von
If ordner_ebene IsNot Nothing Then Me._ordner_ebene = ordner_ebene
If datum_format IsNot Nothing Then Me._datum_format = datum_format
Me._removeZeros = remove0
End Sub
''' <summary>
''' Konstruktor für DATEIENDUNG
''' </summary>
''' <param name="indexieren_aus"></param>
''' <param name="dateiendung"></param>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal datum_format As String, ByVal dateiendung As String, ByVal text As String)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._indexieren_aus = indexieren_aus
Me._art = "DATEIENDUNG"
Me._dateiendung = dateiendung
Me._text = text
If datum_format IsNot Nothing Then Me._datum_format = datum_format
End Sub
''' <summary>
''' Konstruktor für FEST
''' </summary>
''' <remarks></remarks>
Sub New(ByVal id As Integer, ByVal zielindex As String, ByVal aktiv As Boolean, ByVal indexieren_aus As String, ByVal _value As String, ByVal datum_format As String, Optional ByVal ordner_ebene As Object = Nothing)
Me._id = id
Me._zielindex = zielindex
Me._aktiv = aktiv
Me._mit_endung = False
Me._indexieren_aus = indexieren_aus
Me._art = _value
If ordner_ebene IsNot Nothing Then Me._ordner_ebene = ordner_ebene
If datum_format IsNot Nothing Then Me._datum_format = datum_format
End Sub
#End Region
Private Sub beschreibungAuslesen()
End Sub
''' <summary>
''' Liefert an Hand einer übergebenen Zeichenkette, abhängig der Regelart, einen Teilstring zurück
''' </summary>
''' <param name="zuZerlegenderString">die zu zerlegende Zeichenkette</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetTeilstring(ByVal zuZerlegenderString As String) As String
Dim ergebnis As String = ""
If Me._indexieren_aus = "ORDNER" Then
Select Case Me._art.ToUpper
Case "KOMPLETT"
ergebnis = zuZerlegenderString
Case "BEREICH"
'MsgBox(dateinameOhneEndung & vbNewLine & "Bereich: " & Me._position_von - 1 & "-" & Me._anzahl + 1 & vbNewLine & vbNewLine & dateinameOhneEndung.Length & " >= " & Me._position_von + Me._anzahl)
If Me._position_von > 0 Then
If zuZerlegenderString.Length >= Me._position_von - 1 + Me._anzahl Then
ergebnis = zuZerlegenderString.Substring(Me._position_von - 1, Me._anzahl)
Else
If zuZerlegenderString.Length >= Me._position_von - 1 Then
ergebnis = zuZerlegenderString.Substring(Me._position_von - 1)
Else
ergebnis = ""
End If
End If
End If
Case "REST"
If Me._position_von > 0 And Me._position_von < zuZerlegenderString.Length Then
ergebnis = zuZerlegenderString.Substring(Me._position_von - 1)
End If
Case "TRENNZEICHEN"
Dim temp As String = zuZerlegenderString
Dim nichtVorhanden As Boolean = False
For i As Integer = 1 To Me._position - 1
If temp.Contains(Me._trennzeichen) Then
temp = temp.Substring(temp.IndexOf(Me._trennzeichen) + 1)
Else
nichtVorhanden = True
ergebnis = ""
Exit For
End If
Next
If Not nichtVorhanden Then
If temp.Contains(Me._trennzeichen) Then
temp = temp.Substring(0, temp.IndexOf(Me._trennzeichen))
End If
ergebnis = temp
End If
End Select
ElseIf Me._indexieren_aus = "DATEI" Then
Dim dateinameMitEndung As String = zuZerlegenderString.Substring(zuZerlegenderString.LastIndexOf("\") + 1)
Dim dateinameOhneEndung As String = ""
If dateinameMitEndung.Contains(".") Then dateinameOhneEndung = dateinameMitEndung.Substring(0, dateinameMitEndung.LastIndexOf("."))
Select Case Me._art.ToUpper
Case "KOMPLETT"
If Me._mit_endung Then
ergebnis = dateinameMitEndung
Else
ergebnis = dateinameOhneEndung
End If
Case "BEREICH"
'MsgBox(dateinameOhneEndung & vbNewLine & "Bereich: " & Me._position_von - 1 & "-" & Me._anzahl + 1 & vbNewLine & vbNewLine & dateinameOhneEndung.Length & " >= " & Me._position_von + Me._anzahl)
If Me._position_von > 0 Then
If dateinameOhneEndung.Length >= Me._position_von - 1 + Me._anzahl Then
ergebnis = dateinameOhneEndung.Substring(Me._position_von - 1, Me._anzahl)
Else
If dateinameOhneEndung.Length >= Me._position_von - 1 Then
ergebnis = dateinameOhneEndung.Substring(Me._position_von - 1)
Else
ergebnis = ""
End If
End If
End If
Case "REST"
If Me._position_von > 0 And Me._position_von < zuZerlegenderString.Length Then
ergebnis = dateinameOhneEndung.Substring(Me._position_von - 1)
End If
Case "TRENNZEICHEN"
Dim temp As String = dateinameOhneEndung
Dim nichtVorhanden As Boolean = False
For i As Integer = 1 To Me._position - 1
If temp.Contains(Me._trennzeichen) Then
temp = temp.Substring(temp.IndexOf(Me._trennzeichen) + 1)
Else
nichtVorhanden = True
ergebnis = ""
Exit For
End If
Next
If Not nichtVorhanden Then
If temp.Contains(Me._trennzeichen) Then
temp = temp.Substring(0, temp.IndexOf(Me._trennzeichen))
End If
ergebnis = temp
End If
Case "DATEIENDUNG"
If dateinameMitEndung.Contains(".") Then
'Console.WriteLine(dateinameMitEndung & " enthält einen Punkt an Position (letzte) " & dateinameMitEndung.LastIndexOf("."))
Dim dateiEndung As String = dateinameMitEndung.Substring(dateinameMitEndung.LastIndexOf(".") + 1)
'Console.WriteLine("Die ausgelesene Dateiendung ist " & dateiEndung)
If dateiEndung.ToUpper = Me._dateiendung.ToUpper Then
ergebnis = Me._text
End If
Else
'Console.WriteLine(dateinameMitEndung & " enthält keinen Punkt.")
ergebnis = ""
End If
End Select
End If
Return ergebnis
End Function
''' <summary>
''' Setzt eine Regel sowohl im Objekt, als auch in der XML-Datei auf (de-)aktiviert
''' </summary>
''' <param name="aktivieren">True für aktiv, False für inaktiv</param>
''' <remarks></remarks>
Public Sub SetRegelAktiv(ByVal aktivieren As Boolean)
Dim xml As New Xml.XmlDocument()
' XML-Datei öffnen und laden
xml.Load(My.Settings.vDIConfigDatei)
' Anzahl der Regelelemente in der XML-Datei zählen
Dim xmlRegel As Xml.XmlElement = xml.SelectSingleNode("Settings/Profile/Profil[@profilname='" & Me._profilname & "']/Regel[@id='" & Me._id & "']")
If xmlRegel IsNot Nothing Then
xmlRegel.SetAttribute("aktiv", aktivieren)
xml.Save(My.Settings.vDIConfigDatei)
End If
End Sub
End Class