@startuml CompleteActivityDiagram
header
generated on 09/04/2024 14:50:33
end header
title CompleteActivityDiagram
start
note right:  Program.Main
#LightGreen:Params(string[] args);
#LightSkyBlue:string fileName\nstring logo = File.ReadAllText(LOGO_FILE, Encoding.Default);
#WhiteSmoke:PrintLine(logo);
#WhiteSmoke:fileName = GetFileName();
#WhiteSmoke:CreateBackup(fileName);
#LightSkyBlue:bool finished;
repeat
        #WhiteSmoke:finished = PerformOperation(ref fileName);
repeat while (finished == false) is (<color:green>yes)
#WhiteSmoke:PrintLine("Vielen Dank, dass ich Dir helfen durfte!");
#WhiteSmoke:Thread.Sleep(3000);
stop
start
note right:  Program.GetFileName
#LightSkyBlue:string result = string.Empty\nstring input;
repeat
        #WhiteSmoke:Print("Welche Datei soll ich öffnen?: ");
        #WhiteSmoke:input = ReadLine();
        if (File.Exists(input)) then (<color:green>yes)
                #WhiteSmoke:result = input;
            else (<color:red>no)
                    #WhiteSmoke:PrintLine("Diese Datei existiert nicht!");
        endif
repeat while (string.IsNullOrEmpty(result)) is (<color:green>yes)
#Lavender:return result;
stop
start
note right:  Program.PerformOperation
#LightGreen:Params(ref string fileName);
#LightSkyBlue:string input;
#WhiteSmoke:PrintLine();
#WhiteSmoke:PrintLine("Was kann ich für dich tun?");
#WhiteSmoke:Console.ForegroundColor = ConsoleColor.Yellow;
#WhiteSmoke:PrintLine($"FileName: {fileName}");
#WhiteSmoke:Console.ForegroundColor = DefaultColor;
#WhiteSmoke:PrintLine();
#WhiteSmoke:PrintLine("(1) Datei am Bildschirm ausgeben");
#WhiteSmoke:PrintLine("(2) Zeilennummern hinzufügen");
#WhiteSmoke:PrintLine("(3) Zeilen reversieren");
#WhiteSmoke:PrintLine("(4) Zeichenketten ersetzen");
#WhiteSmoke:PrintLine("(5) Neue Datei einlesen");
#WhiteSmoke:PrintLine("(0) Ende");
#WhiteSmoke:PrintLine();
#WhiteSmoke:Print("Deine Wahl: ");
#WhiteSmoke:input = ReadLine();
switch (input)
    case( "1" )
    #WhiteSmoke:PrintFile(fileName);
    case( "2" )
    #WhiteSmoke:AddLineNumbers(fileName);
    case( "3" )
    #WhiteSmoke:ReverseLines(fileName);
    case( "4" )
    #WhiteSmoke:ReplaceCharacters(fileName);
    case( "5" )
    #WhiteSmoke:fileName = GetFileName();
    #WhiteSmoke:CreateBackup(fileName);
    case( "0" )
    case ( default )
    #WhiteSmoke:PrintLine("Ungültige Eingabe!");
endswitch
#Lavender:return input == "0";
stop
start
note right:  Program.CreateBackup
#LightGreen:Params(string fileName);
#LightSkyBlue:int counter = 1\nstring backupExtension = ".bak"\nstring backupFileName = $"{fileName}{backupExtension}";
while (File.Exists(backupFileName)) is (<color:green>yes)
        #WhiteSmoke:backupFileName = $"{fileName}{backupExtension}{counter}";
        #WhiteSmoke:counter++;
endwhile (<color:red>no)
if (File.Exists(fileName)) then (<color:green>yes)
        #WhiteSmoke:File.Copy(fileName, backupFileName);
        #WhiteSmoke:Console.ForegroundColor = ConsoleColor.Yellow;
        #WhiteSmoke:PrintLine($"Die Sicherungskopie '{backupFileName}' wurde erstellt.");
        #WhiteSmoke:Console.ForegroundColor = DefaultColor;
    else (<color:red>no)
            #WhiteSmoke:PrintLine($"Die Datei '{fileName}' existiert nicht!");
endif
stop
start
note right:  Program.ReverseLines
#LightGreen:Params(string fileName);
if (File.Exists(fileName)) then (<color:green>yes)
        #LightSkyBlue:string[] lines = File.ReadAllLines(fileName);
        #WhiteSmoke:Array.Reverse(lines);
        #WhiteSmoke:File.WriteAllLines(fileName, lines);
    else (<color:red>no)
            #WhiteSmoke:PrintLine($"Die Datei '{fileName}' existiert nicht!");
endif
stop
start
note right:  Program.AddLineNumbers
#LightGreen:Params(string fileName);
if (File.Exists(fileName)) then (<color:green>yes)
        #LightSkyBlue:string[] lines = File.ReadAllLines(fileName);
        #LightSkyBlue:List<string> numberedLines = new List<string>();
        #LightSkyBlue:int i = 0;
        while (i < lines.Length) is (<color:green>yes)
                #WhiteSmoke:numberedLines.Add($"{i + 1}: {lines[i]}");
        :i++;
        endwhile (<color:red>no)
        #WhiteSmoke:File.WriteAllLines(fileName, numberedLines);
    else (<color:red>no)
            #WhiteSmoke:PrintLine($"Die Datei '{fileName}' existiert nicht!");
endif
stop
start
note right:  Program.ReplaceCharacters
#LightGreen:Params(string fileName);
if (File.Exists(fileName)) then (<color:green>yes)
        #LightSkyBlue:string content = File.ReadAllText(fileName);
        #WhiteSmoke:Print("Welche Zeichenkette soll ersetzt werden?:       ");
        #LightSkyBlue:string oldString = Console.ReadLine();
        #WhiteSmoke:Print("Durch welche Zeichenkette soll ersetzt werden?: ");
        #LightSkyBlue:string newString = Console.ReadLine();
        #WhiteSmoke:content = content.Replace(oldString, newString);
        #WhiteSmoke:File.WriteAllText(fileName, content);
    else (<color:red>no)
            #WhiteSmoke:PrintLine($"Die Datei '{fileName}' existiert nicht!");
endif
stop
start
note right:  Program.PrintFile
#LightGreen:Params(string fileName);
if (File.Exists(fileName)) then (<color:green>yes)
        #LightSkyBlue:string[] lines = File.ReadAllLines(fileName);
        :iterator = lines.GetIterator();
        while (iterator.MoveNext()) is (<color:green>yes)
        :line = iterator.Current();
                            #WhiteSmoke:PrintLine(line);
        endwhile (<color:red>no)
    else (<color:red>no)
            #WhiteSmoke:PrintLine($"Die Datei '{fileName}' existiert nicht!");
endif
stop
footer
generated with the DiagramCreator by Prof.Gehrer
end footer
@enduml
