Bewerbung.Dublette

Eine Bibliothek und Kommandozeilenapplikation um Dubletten innerhalb einer Ordnerstruktur zu identifizieren.

Verwendung

Instanzierung

Im u.g. Beispiel sieht man die Instanzierung einer DublettenprüfungFactory

sequenceDiagram
    actor Aufrufer
    participant DublettenprüfungFactory
    participant Dublettenprüfung
    Aufrufer->>DublettenprüfungFactory: Build()
    DublettenprüfungFactory-->>Aufrufer: DublettenprüfungFactory
    Note left of DublettenprüfungFactory: Ggf. eigene Algorithmen / Prüfmethoden überladen
    Aufrufer->>DublettenprüfungFactory: Create()
    DublettenprüfungFactory-->>Aufrufer: Default: Dublettenprüfung
    Aufrufer->>+Dublettenprüfung: Hier kann nun auf das Dublettenprüfung-Objekt zugegriffen werden
Loading

Vergleiche

Ist die Dublettenprüfung-Klasse instanziert, beinhaltet sie folgende Aufrufe zur Ausführung der Vergleichslogik:

---
title: Aufbau IDublettenprüfung
---
classDiagram
    class IDublettenprüfung
    <<Interface>> IDublettenprüfung
        IDublettenprüfung : SammleKandidaten(string pfad) IReadOnlyCollection~IDublette~
        IDublettenprüfung : SammleKandidaten(string pfad, Vergleichsmodi modus) IReadOnlyCollection~IDublette~
        IDublettenprüfung : Prüfe_Kandidaten(IEnumerable~IDublette~ kandidaten) IReadOnlyCollection~IDublette~
    class IDublette{
        <<Interface>>
        +IReadOnlyCollection~string~ Dateipfade
    }
    class Vergleichsmodus{
        <<Enumeration>>
        Größe_und_Name
        Größe
    }
     
Loading

Kommandozeilenprogramm:

Das Programm Dublette.exe kapselt die Logik der Klasse IDublettenprüfung und ist wie folgt definiert:

Eine Kommandozeilenapplikation um Dubletten innerhalb eines Dateisystems zu identifizeren.

SYNTAX:
    [-fm:FindModus] [-p:Pfad]

Pflichtfeld:
    -p:Pfad          Der Pfad zur Dateistruktur die nach Dubletten durchsucht werden soll.

Optional:
    -fm:FindModus    Der Modus, der für die Erstidentfikation von gleichen Dateien genutzt werden soll. [Standard: 'GN' ]
                FindModus (GN = Größe und Name / G = Größe)
    
AUSGABE:
    Die Rückgabe ist eine Liste von Dubletten, die über den primären FindModus gefunden werden und per MD5-Hashvergleich identisch sind.

Onlinedokumentation

Ein Dokumentationsmarkdown befindet sich hier

Weitere Vorschläge:

  • Zusätzlich zur MD5-Prüfung bei Gleichheit noch einen Binärvergleich ermöglichen (ggf. optional, ebenfalls über Modi) um false positives bei Hashvergleichen auszuschließen
  • Korrespondierende Async-Methoden damit, während die Sammlung aufgebaut oder validiert wird, im Hauptprogramm weiter gearbeitet werden kann und per await das Hauptprogramm wieder zum Ausführungsfluss zurückkehrt
  • Implementation von Cancellationtoken um die Prozesse anhaltbar zu machen
  • Vergleichsmodi als Flags umsetzen, da es ja vll später erweitert werden kann. So könnte ich ein Flag aus Size / Name / Drittem Attribut in beliebiger Reihenfolge umsetzen
  • Func<string> oder Func<IStatusProgress> in Factory übergeben, damit bei der Prüfung (die ja länger dauern kann) ein Status mitgegeben wird
  • Umlaute im Interface vermeiden