Code Monkey home page Code Monkey logo

tm's Introduction

HowTo

Windows

  • have Java JDK version 8 or higher
  • get and unzip gradle
  • add gradle/bin to PATH
  • clone this repo: git clone https://github.com/steffanossa/tm.git
  • execute gradlew run in cloned dir

Linux & Mac

  • have Java JDK version 8 or higher
  • get and unzip gradle
  • Unzip the distribution zip file in the directory of your choosing, e.g.:
  mkdir /opt/gradle
  unzip -d /opt/gradle gradle-8.5-bin.zip
  • add to path: export PATH=$PATH:/opt/gradle/gradle-8.5/bin
  • clone this repo: git clone https://github.com/steffanossa/tm.git
  • execute gradle run in cloned dir

Anforderungen 

(click to show/hide image)
  • Anbindung zu Datenbank mit JDBC
  • Graphische Benutzeroberfläche mit JavaFX
  • Darstellung von Studentendaten
  • Auswählen von Studenten zum Kopieren der Daten in die Zwischenablage mit wählbarem Trennzeichen
  • Auswählen von relevanten Spalten
  • Freie Anordnung der Spalten
  • Hinzufügen & Löschen einzelner bzw. mehrerer Studenten

Datenbank: SQLite

  • gemeinfreie (public domain) Programmbibliothek
  • keine Client-Server-Architektur
  • keine Verwaltung von Nutzer- und Zugriffsrechten
  • weit verbreitet12
  • leichtgewichtig3

Datenbankschnittstelle: JDBC

Einzelne Schnittstelle für verschiedene Datenbanktypen ermöglicht unkomplizierte Wechsel ebendieser.

Gradle

Gradle ist ein open source Build-Management-Tool. Es vereinfacht die Entwicklung, das Testen und die Bereitstelung von Anwendungen verschiedener Programmiersprachen. Alternativ hätte Maven genutzt werden können. Maven arbeitet allerdings mit XML.

DAO, DTO

Zur Trennung der persistenten Daten- von der Anwendungsschicht, wurde das Konzept des Data Access Object (DAO) genutzt. Dadurch ist es für die Anwendungsschicht irrelevant, welche Art von Datenbank zum Einsatz kommt. Jegliche Kommunikation findet über die DAO-Schnittstelle statt. Sollte zukünftig von SQLite auf MongoDB o.ä. gewechselt werden, bliebe die Anwendungsschicht davon unberührt. Lediglich Anpassungen am DAO würden nötig.

Die in der Anwendung gezeigten Daten sind keine Live-Daten, sondern Transferobjekte (Data Tranfer Objects). Diese Daten wurden einmalig aus der Datenbank herausgelesen und in DTOs umgewandelt. Operationen können an ihnen durchgeführt werden, ohne dass eine Datenbankverbindung permanent erforderlich ist.

MVP-Architektur 

Business Logic im Model (M), GUI-Elemente im View (V), der Presenter (P) agiert als Vermittler. Alle Interaktionen mit der Nutzeroberfläche werden vom Presenter verarbeitet. Die zugehörigen Methoden des Models werden von ihm aufgerufen, die Rückgaben im Anschluss verarbeitet und die Nutzeroberfläche aktualisiert. Durch diese strikte Trennung von Nutzeroberfläche und Geschäftslogik wird eine Modularität erreicht, durch die Änderungen an einzelnen Komponenten möglich sind, ohne dadurch Änderungen an anderen Stellen nötig werden zu lassen (lose Kopplung).4

(click to show/hide image)

NOsxJiGm44LxVyNWQXVa5RGq92K5We97RUmB6ScFO8z9WVXteYGGYNREkMUwAhP8Yq6ToO08YbPGs2fX2Q2-k845hXNGeN8S0xyn_56vO6kbXuAA92ZqfIxebPD_OVyEUSoz4yxfSBocpyn-XctqLl1qkns-rPQuonvXcTUFS3-YsD_XpIuzCwRPCJGj-PNjp_NbwNHEch8nXlILNgF_X


Dem Start des Programms folgt die Anzeige eines Dialogfensters, über das die zu öffnende Datenbank selektiert werden kann.

(click to show/hide image)

image

Die Auswahl einer inkompatiblen Datei löst ein weiteres Dialogfenster aus, das über die fehlerhafte Auwahl informiert. Anschließend wird das vorige Fenster erneut angezeigt.

(click to show/hide image)

image

Ist eine gültige Auswahl getroffen worden, wird das Hauptfenster geöffnet.

(click to show/hide image)

image

Die Daten der Studententabelle werden in einem TableView-Objekt angezeigt. Die Spaltenreihenfolge lässt sich per Drag-And-Drop der jeweiligen Spaltenüberschriftfelder anpassen. Über das mit einem Rechtsklick in den TableView erreichbare Kontextmenü lassen sich die Spalten einzeln de- oder aktivieren, d.h. un- bzw. sichtbar machen. Einzelne Zeilen lassen sich mithilfe der Checkboxen aus- und abwählen. Für das Hinzufügen, Editieren und Entfernen von Einträgen gibt es jeweils einen Button oberhalb der Tabelle. Ein Klick auf den Add-Button öffnet ein Dialogfenster, in dem die Daten des hinzuzufügenden Studenten eingegeben werden können.

(click to show/hide image)

image

Das Kreuz und der Cancel-Button beenden den Vorgang. Das Klicken des OK-Buttons fügt die Daten nach Überprüfung auf formelle Richtigkeit der Tabelle und der Datenbank hinzu, es sei denn in der Datenbank befindet sich bereits eine Beobachtung mit der eingegebenen Matrikulationsnummer und/oder FH-Kennung. Der Nutzer wird über jegliche fehlerhafte Eingabe nach Betätigung des OK-Buttons mittels Dialog-Fenster informiert und kann die Eingaben daraufhin erneut prüfen.

(click to show/hide image)

image image

Der Edit-Button ist nur klickbar, wenn genau eine Zeile ausgewählt ist. Er löst ebenfalls ein Dialogfenster aus, nur dass die Textfelder jetzt die Daten des Studenten enthalten, der zuvor ausgewählt wurde. Der weitere Ablauf ist analog zum Hinzufügen.

(click to show/hide image)

image

Der Remove-Button nur, wenn mindestens eine Zeile ausgewählt ist. Über ihn lassen sich die ausgewählten Zeilen aus Tabelle und Datenbank entfernen, bevor dies geschieht wird jedoch mit einem Dialogfenster eine Bestätigung abgefragt.

(click to show/hide image)

image

Unterhalb der Tabelle befindet sich der Previewstring. Durch ihn wird beispielhaft dargestellt, wie die Daten später ausgegeben würden. Die Reihenfolge der Spalten sowie die Information, welche Spalten aktiviert sind, finden sich hier wieder. Dazu wird das Trennzeichen, das über ein Auswahlfeld selektiert werden kann mit dargestellt. Über dieses Auswahlfeld lässt sich eines von vier festgelegten Trennzeichen auswählen.

(click to show/hide image)

image

Die Daten der ausgewählten Spalten können mit dem Clipboard-Button in die Zwischenablage kopiert werden. Die Formatierung folgt der Spaltenreihenfolge und dem gewählten Trennzeichen. Der Button ist nur aktiv, sollte mindestens eine Zeile ausgewählt sein. Die Daten der ausgewählten Spalten können ebenso als Reintext in einer Datei gespeichert werden. Hierzu dient der Save-Button. Ein Klick öffnet ein Dialogfenster, über das Ort und Name der zu speichernden Datei festgelegt werden kann.

(click to show/hide image)

image

Hilfe

(click to show/hide image)

image

Über

(click to show/hide image)

image

Der Scenebuilder wurde nicht verwendet, da er mit (F)XML arbeitet. XML ist Mist.

ToDos, Bugs 

  • mock db in test dir
  • unit tests
    • studentDAO
    • sqlitebuddy
    • mainmodel
    • inputdialogmodel
  • custom exceptions MEH
  • edit window umbennenen
  • bad input sprache
  • uniquenessmessage sprache
  • DAO Interface
  • Edit-Button
  • bilder updaten
  • menubar mit reload data, help und about
  • about view
  • help view
  • howTo schreiben
  • testen unter linux / mac (debian 12 workde)
  • uml gedöns
    • mvp
    • dao
    • add process
    • class diagram
  • datenbank interaktionen minimieren
    • remove
    • edit
    • add
  • generic alert for any errors
  • checkbox column
    • adds to selected
    • not in preview
    • not in reordering -> setReorderable=false still allows "passive reordering" :(
    • not hideable
    • not in clipboard & saveTo
    • update what happens after exception alert
  • fix toggleAll (disabled)
  • fix cancelling add-process unselects everything
  • add screenshot of exception alert
  • redo alerts, enum for image selection => reduced to single malleable alert

Footnotes

  1. Reference: https://www.statista.com/statistics/809750/worldwide-popularity-ranking-database-management-systems/

  2. Reference: https://sqlite.org/mostdeployed.html

  3. Reference: https://sqlite.org/about.html

  4. Reference: https://support.touchgfx.com/docs/development/ui-development/software-architecture/model-view-presenter-design-pattern

tm's People

Contributors

steffanossa avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.