Hallo,
ich baue gerade eine kleine Dokumentenverwaltung (Auflistung von Dokumenten in einer JTable). Dabei bin ich nun auf folgendes Problem gestoßen:
Es werden automatisch Dateien mit bestimmten Endungen gesucht (kein Problem). Nun wird der Dateiname geparst und diese Informationen werden weggespeichert.
Die Dateien haben im großen und ganzen eine einheitliche Benennung. Das Problem ist, das:
Ich versuche das einmal an ein paar Beispielen zu verdeutlichen
Max Mustermann - Firma Mustermann - 2011 - Rechnung - bezahlt - Haushalt.doc
Max Mustermann - 2011 - Gutschrift - unbezahlt - Haushalt.doc
Max Mustermann - Firma Mustermann - Gutschrift - bezahlt - Auto.doc
<Name> - <Firma> - <Jahr> - Gutschrift/Rechnung - bezahlt/unbezahlt - Kategorie
Nun ist es so das Gutschrift/Rechnung, bezahlt/unbezahlt und Kategorie fest sind und Name und Firma immer Variabel. Das Jahr ist immer eine 4-stellige Ziffer.
Nun ist es so das die Trenner bzw. die Reihenfolge Benutzerdefiniert ist. Deshalb habe ich Platzhalter für den Benutzer eingebaut. Der Benutzer gibt also in einem Feld z.B. folgendes an:
%name% - %company% - %year% - soll Dateien finden und parsen können wo die z.B. wie folgt sind: Max Mustermann - Musterfirma - 2011.doc
oder auch
%name% - %company% - %year% - %typelist% - %payedlist% - %category%
Max Mustermann - Musterfirma - 2011 - Gutschrift - bezahlt - Auto.doc
Dies wurde dann im Programm automatisch zu einem Regex:
(.*)? - (.*)? - ([0-9]{4})
bzw
(.*)? - (.*)? - ([0-9]{4}) - (Gutschrift|Rechnung) - (bezahlt|unbezahlt) - (Auto|Haushalt|etc.)
Jetzt soll der Benutzer aber ja auch nicht bei z.B. 100 verschiedenen Reihenfolgen alles umbenennen müssen oder für alles einen Eintrag in der Liste machen. Was passiert wenn der Firmennahme eine Jahreszahl ist? Wird das dann ignoriert und der Firmenname wird zum Jahr?
Nun war mein Gedanke das der Benutzer nur Trenner angibt. Aber was ist wenn der Benutzer nicht am "-" trennt, sondern an einem Punkt?
Max Mustermann.Musterfirma.2011
Dann gibt es nicht so was wie:
Dr. Max Mustermann, weil dann am Dr. getrennt wird.
Dann war meine Idee das der Benutzer nur den Anfang bestimmt, und festgelegt ist dass das erste bzw die ersten beiden Name und Firma ist. Der Rest wird dann für jeden Teil mit den Listen verglichen. Aber das ist ja auch nicht performant, wenn man davon ausgeht das man ja nicht nur 1-10 Dokumente hat.
Habt ihr irgendwelche anderen Lösungsvorschläge für das Problem oder Tipps wie ich das mit meiner Lösung und kleinen Änderungen sinnvoll umsetzte?
Ich danke euch schon einmal für eure Mühen
ich baue gerade eine kleine Dokumentenverwaltung (Auflistung von Dokumenten in einer JTable). Dabei bin ich nun auf folgendes Problem gestoßen:
Es werden automatisch Dateien mit bestimmten Endungen gesucht (kein Problem). Nun wird der Dateiname geparst und diese Informationen werden weggespeichert.
Die Dateien haben im großen und ganzen eine einheitliche Benennung. Das Problem ist, das:
- Nicht alle Felder müssen vorhanden sein
- Die Reihenfolge ist nicht immer die gleiche
Ich versuche das einmal an ein paar Beispielen zu verdeutlichen
Max Mustermann - Firma Mustermann - 2011 - Rechnung - bezahlt - Haushalt.doc
Max Mustermann - 2011 - Gutschrift - unbezahlt - Haushalt.doc
Max Mustermann - Firma Mustermann - Gutschrift - bezahlt - Auto.doc
<Name> - <Firma> - <Jahr> - Gutschrift/Rechnung - bezahlt/unbezahlt - Kategorie
Nun ist es so das Gutschrift/Rechnung, bezahlt/unbezahlt und Kategorie fest sind und Name und Firma immer Variabel. Das Jahr ist immer eine 4-stellige Ziffer.
Nun ist es so das die Trenner bzw. die Reihenfolge Benutzerdefiniert ist. Deshalb habe ich Platzhalter für den Benutzer eingebaut. Der Benutzer gibt also in einem Feld z.B. folgendes an:
%name% - %company% - %year% - soll Dateien finden und parsen können wo die z.B. wie folgt sind: Max Mustermann - Musterfirma - 2011.doc
oder auch
%name% - %company% - %year% - %typelist% - %payedlist% - %category%
Max Mustermann - Musterfirma - 2011 - Gutschrift - bezahlt - Auto.doc
Dies wurde dann im Programm automatisch zu einem Regex:
(.*)? - (.*)? - ([0-9]{4})
bzw
(.*)? - (.*)? - ([0-9]{4}) - (Gutschrift|Rechnung) - (bezahlt|unbezahlt) - (Auto|Haushalt|etc.)
Jetzt soll der Benutzer aber ja auch nicht bei z.B. 100 verschiedenen Reihenfolgen alles umbenennen müssen oder für alles einen Eintrag in der Liste machen. Was passiert wenn der Firmennahme eine Jahreszahl ist? Wird das dann ignoriert und der Firmenname wird zum Jahr?
Nun war mein Gedanke das der Benutzer nur Trenner angibt. Aber was ist wenn der Benutzer nicht am "-" trennt, sondern an einem Punkt?
Max Mustermann.Musterfirma.2011
Dann gibt es nicht so was wie:
Dr. Max Mustermann, weil dann am Dr. getrennt wird.
Dann war meine Idee das der Benutzer nur den Anfang bestimmt, und festgelegt ist dass das erste bzw die ersten beiden Name und Firma ist. Der Rest wird dann für jeden Teil mit den Listen verglichen. Aber das ist ja auch nicht performant, wenn man davon ausgeht das man ja nicht nur 1-10 Dokumente hat.
Habt ihr irgendwelche anderen Lösungsvorschläge für das Problem oder Tipps wie ich das mit meiner Lösung und kleinen Änderungen sinnvoll umsetzte?
Ich danke euch schon einmal für eure Mühen