Entwicklungsdokumentation

= = =Allgemein=

IDEs zur Entwicklung der Applikation
Die Entwicklung der Applikation kann mit allen gängigen Entwicklungsumgebungen durchgeführt werden. Zu empfehlen sind an dieser Stelle Eclipse, IntelliJ Idea (kostenpflichtig) und Netbeans.

Quellcodeverwaltung
Für die Quellcodeverwaltung existiert ein Subversion Repository, das bei Googlecode gehostet ist. In diesem Repository müssen sämtliche Sourcen, die im Rahmen der Entwicklung entstehen, eingecheckt werden.

Die URL zum Repository lautet:

Für den Zugriff wird ein Google-Account benötigt. Das Repository kann in der jeweiligen Entwicklungsumgebung mit Hilfe von entsprechenden SVN Plugins konfiguriert werden. Des Weiteren kann das Programm TortoiseSVN (http://tortoisesvn.tigris.org/) genutzt werden. Dies erweitert den normalen WIndows Explorer um den direkten Zugriff auf ein Repository. =Android Client= =Frontend=

Entwicklung nach MVC Prinzip
Entwickelt wird nach dem Model-View-Controller (MVC) Prinzip. Die View Klassen übernehmen alle Operationen für die Darstellung. Best Practice in Android ist die Darstellung in XML Dateien auszulagern, welche sich im /res Ordner befinden. Ist die Darstellung jedoch dynamisch, so müssen Operationen welche die Darstellung ändern in die Controllerklassen implementiert werden. Die Controllerklasse ist meist von der Klasse Activity abgeleitet. Um nach Themengebieten zu strukturieren kann man Operationen in gesonderte Klassen auslagern, die von der Activity-Controllerklasse eingebunden werden. Die Model Klassen übernehmen die Speicherung der Daten.

Entwicklungsumgebung
Als Entwicklungsumgebung wird Elipse mit Android SDK verwendet. Das Android SDK ist entsprechend der Anleitung http://developer.android.com/sdk/index.html zu installieren und zu konfigurieren. Für UML Modelierung wird UML2 AddOn für Eclipse verwendet. Für die anschließende Codegenerierung wird EMF verwendet.

Anbindung Facebook
Für die Anbindung der Applikation an Facebook wird die Android SDK von Facebook verwendet. Diese ist von der Seite https://github.com/facebook/facebook-android-sdk herunterzuladen und in das bestehende Android Projekt anzubinden. Weiterhin ist ein Facebook Account für die Anbindung der Facebook API notwenidig. Daher wird ein Accout - AppFahrt- hierfür erstellt. Zum erstellen des Hash Keys (Keytool) ist die Installation von OpenSSL notwendig, da sich sonst der openssl Befehl nicht ausführen lässt.

Kartendarstellung
Für die Kartendarstellung wird OpenStreetMap verwendet. OpenStreetMap hat im Gegensatz zu GoogleMaps den Vorteil, dass es sich hierbei um eine OpenSource Applikation handelt. Das Kartenmaterial wird durch die OpenSource Gemeinde gepfelgt und erweitert. Durch entsprechende Tools ist man ebenfalls in der Lage das Kartenmaterial selbstständig zu erweitern bzw zu verfeinern. Für das Integrieren der OpenStreetMap wird das Projekt osmdroid (http://code.google.com/p/osmdroid/) verwendet und für die AppFahrt weiter angepasst. Das Projekt osmdroid ersetzt die Google Maps Klassen und bietet darüber hinaus bereits weitere Optionen, die für die AppFahrt von Vorteil sind. =Backend=

Eingesetzte Frameworks

 * JavaServer Faces: Mögliche Integration von Oberflächen
 * Spring: Ermöglich die einfache Deklaration von Services, Webservices, etc. über Annotationen, Relaisierung des Transaktionsmanagement.
 * Hibernate: Persistenzframework zur einfachen Abbildung von Entitäten und Generierung entsprechender Tabellen in der Datenbank
 * Apache CXF: Erzeugung von Webservices mittels Annotationen

Build Management
Die Backend Applikation wird das Build Tool Maven (http://maven.apache.org/) benötigt. Dies ist für die Konfiguration und dem Build Management der gesamten Backend Applikation erforderlich. Es bietet sich an eine entsprechende Umgebungsvariable in seinem Betriebssystem zu setzen, um direkt in der Kommandozeile mit dem Tool arbeiten zu können.

Folgende Befehle sind für das Deployment im Web-Projekt notwending:


 * mvn clean install --> Baut das komplette Projekt, lädt die eingebundenen Frameworks aus dem Internet und erstellt ein WAR-File (Dies kann später direkt in einem Applikationsserver installiert werden).
 * mvn tomcat:run ---> Deployt das aktuelle WAR-File auf dem Tomcat Applikationsserver, deployt die Webservices und fährt die Datenbank samt Schema/Tabellenerzeugung hoch.

Datenbank
Als Datenbank wird eine Oracle Express Edition 10g verwendet. Diese Datenbank muss lokal installiert werden: > mvn install:install-file -Dfile=./ojdbc14.jar -DgroupId=ojdbc -DartifactId=ojdbc -Dversion=14 -Dpackaging=jar
 * Download: http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
 * Installation des Installers (Passwörter können beliebig vergeben werden, ich habe "ride" gewählt)
 * Download des JDBC-Treibers, Datei: ojdbc14.jar: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc101040-094982.html
 * JDBC-Treiber dem Projekt hinzufügen: Kommandozeile öffnen und in das Verzeichnis des Treibers wechseln.
 * Folgendes Kommando ausführen:
 * Unter Windows: Start --> Programme --> Oracle Database... --> Gehe zu DB Homepage
 * Einloggen mit System und dem vorher vergebenen Passwort
 * Administration --> Database Users --> Create User (name=ride, pw=ride)
 * Server starten (mvn tomcat:run) Anschließend sind die Tabellen über den Object Browser von Oracle Express sichtbar.

Aufruf der Applikation
Grundsätzlich werden zunächst Webservices nach außen zur Verfügung gestellt, die stets weiter ergänzt werden:


 * UserWebService: WSDL: http://localhost:8081/ride/UserWebService?wsdl Methode: createUser(String username, String password)

Grundsätzlich sind alle Webservices über die URL http://localhost:8081/ride/ gelistet und einsehbar.

Um die Webservices testen zu können, kann das Tool Soap-UI (http://sourceforge.net/projects/soapui/files/) verwendet werden. Mit diesem Tool können beispielhaft Webservice-Requests anhand von WSDLs erstellt werden. Es muss zunächst ein neues Projekt erstellt werden. Anschließend muss dem Projekt über das Kontextmenu eine neue WSDL hinzugefügt werden (s. oben). Daraufhin werden die Möglichen Operationen des jeweiligen Webservices angezeigt. Wieder über das Kontextmenu kann dann ein neuer Request erstellt werden. Dort müssen dann die entsprechenden Parameter angegeben werden bis der Request abschließend abgesendet werden kann.