Added README.txt and GPL Header to Source Files
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / README.txt
diff --git a/app/src/main/java/de/dhbwloe/campusapp/README.txt b/app/src/main/java/de/dhbwloe/campusapp/README.txt
new file mode 100644 (file)
index 0000000..0be5a3e
--- /dev/null
@@ -0,0 +1,74 @@
+Die gesamte App wurde auf Basis einer einzigen Activity,
+auf welcher dynamisch Fragmente ausgetauscht werden aufgebaut.
+
+Wichtige Java Klassen der App:
+* CampusApp
+ Die Klasse der haupt Activity.
+ In dieser Klasse befindet sich die initialisierung des Grundgerüsts der App.
+ Dazu gehören die Headerleise inklusive Such-Eingabe, die Navigationsleiste sowie
+ der Platzhalter für spätere Fragmente.
+ Die Klasse bildet den haupt Einstiegspunkt der App (Launcher) und erstellt beim start
+ eine global verfügbare Instanz der Klasse CampusAppContext
+
+* CampusAppContext
+ Der "Kontext" der App, ein einzelnes zentrales Objekt,
+ was zur Laufzeit für alle weiteren teile der App zur verfügung steht.
+ Innerhalb der Klasse CampusAppContext werden instanzen zum Navigations Manager,
+ Datenbank Manager und der App Activity bereitgestellt.
+
+* NavigationManager
+ Der Navigationsmanager (instanziert durch CampusAppContext) verwaltet die auf der
+ App Activity angezeigten Fragmente und dient zur App internen Navigation.
+ z.B.  AppContext.getNavigationManager().navigatePage("Dashboard")
+ Die einzelnen Fragmente der App müssen in CampusAppContext eingetragen werden.
+
+* fragments/*
+ Fragmentspezifischer Code. Jedes Fragment der App wird im Hintergrund von einer
+ eigenen Klasse verwaltet, welche hier zu finden ist.
+ Fragmente, welche auf der App Activity angezeigt werden sollen müssen
+ die Klasse CampusAppFragment erweitern.
+ Die Klassen wurden dabei stets nach dem prinzip
+  <FragmentName>(<Unterfragment>)*(ListAdapter/ListItem)
+ benannt.
+
+* database/*
+ Datenbankspezifischer Code. Sämmtliche Datenbankabfragen werden durch die Klasse
+ DatabaseManager verwaltet. Je nach Abfrage werden hierbei die entsprechenden Hilfsklassen
+ MensaplanDatabaseHelper, NewsDatabaseHelper, VorlesungsplanDatabaseHelper genutzt.
+ Auch die Struktur der Datenbank wird vom DatabaseManager beim ersten Start der App erstellt
+ und bietet eine einfache Möglichkeit für spätere Updates der Struktur.
+
+* mensaplan/*
+ Beinhaltet Code zum Herungerladen, Einlesen und Speicherung der durch die
+ XML Schnittstelle bereitgestellten Daten.
+ Die Klasse MensaTagesplan repräsentiert ein einzelnes Menü der Mensa.
+ Diese Klasse dient als Transportobjekt sowohl vom XML Parser zur Datenbank
+ als auch von der Datenbank an andere Teile der App.
+
+* news/*
+ Selbes Prinzip wie mensaplan/*, jedoch fürs Einlesen der News (XML Parser)
+
+* vorlesungen/*
+ Selbes Prinzip wie mensaplan/*, jedoch fürs Einlesen der Vorlesungsdaten (ICAL Parser)
+
+* nfcreader/*
+ Code zum einlesen der Mensakarte. Dieser Code ist zu großen Teilen nicht selbst erstellt.
+ Bereitgestellt durch: https://git.sterul.com/student-projects/dhbw-card-reader
+
+* search/*
+ Beinhaltet Code zur Verwaltung der App Suche.
+ Auch die entsprechenden HTTP Clients zur weiterleitung der Sucheingaben an die DHBW/STUV Webseite
+ befinden sich hier (DhbwSearchHelper, StuvSearchHelper)
+ Die App interne Suche besteht im grunde aus einem haufen von der App selbst erstellter
+ Search Indices (Klasse SearchIndices) welche in der Datnebank gespeichert werden.
+ Mithilfe der Klasse SearchTarget werden die teilweise mit Parametern bestückten
+ Ziel Seiten dekodiert und aufgerufen. (z.B. #Vorlesungsplan#groupid=15 )
+
+* network/*
+ Beinhaltet Hilfsklassen für den XML/ISC Parser
+
+* wifi/*
+ Beinhaltet Hilfsklassen für die automatische WLAN Konfiguration.
+ Unter anderem sind ist hier auch der von der DHBW Bereitgestellte
+ "Secure Login" für das dhbw-wlan realisiert.
+