News Modul Überblick und Erweiterung

Slides:



Advertisements
Ähnliche Präsentationen
GWT - google Web Toolkit
Advertisements

Object Relational Mapping
Object Relational Mapping
Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
JPQL Java Persistence Query Language
Objekt – Relationales – Modell Tomasz Makowski IN
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
DOM (Document Object Model)
XINDICE The Apache XML Project Name: Jacqueline Langhorst
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Command Pattern Karola Schäuble,
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Einführung MySQL mit PHP
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Einführung und Überblick
JDBC: JAVA Database Connectivity
Ein Textadventure AIP Aufgabe Fabian Bergfeld Patrick Boeckhoven Christian Haberland Benjamin Jochheim Liem Nguyen.
Herzlich Willkommen… welcome… soyez la bienvenue….
Wir bauen uns eine Webapplikation!
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
SharePoint 2010 for Information Architects
SQL Server 2005 CLR-Integration
Projektarbeit PHP 5.3 / MySQL & Content Management Systems
Mahmoud Zoabi Khaled Isa
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 2013 Kapitel 6 Folie 2 WCF Data Services (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Uwe Habermann Venelina Jordanova Übernahme der Visual FoxPro Geschäftslogik.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
HORIZONT 1 XINFO ® Das IT - Informationssystem Assembler HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
Einführung in Datenbankmodellierung und SQL
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
Von Isabelle Spörl und Simon Schausberger
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Objectives Verstehen was unterDelegate verstanden wird
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
SQLite und XML in PHP 5.
Hibernate (OR-Mapping)
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Datenbankanbindung mit
Structured Query Language
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
Haupttitel der Präsentation
 Präsentation transkript:

News Modul Überblick und Erweiterung Benjamin Koppe DVA-Seminar WS 2012/2013

Was erwartet uns heute? News Modul Aktualisierung der Daten Kommunikation mit dem CMS Aktualisierung der Daten Implementierung eines AsyncTask Datenhaltung SQLite GreenDAO

News Modul

News Modul

News Modul Infopark CMS Fiona (https://cms.hs-augsburg.de/) Kommunikation über XML Schnittstelle Content Retrieval and Update Language (CRUL)

News Modul

Aktualisierung der Daten

Aktuelle Situation Aktualisierung findet momentan im UI-Thread statt Nachteile: UI-Thread wird blockiert App wird schlimmstenfalls beendet Erweiterung: Auslagerung in einen AsyncTask

AsyncTask - Definition gedacht für die Ausführung kurzer Aufgaben „Berechnung” läuft im Hintergrund Ergebnis wird an den UI-Thread geschickt (ohne selbst Handler oder Threads verwenden zu müssen) AsyncTask ermöglicht also die richtige Verwendung des UI-Threads AsyncTask versteht sich nicht als Threading- Framework, sondern als Hilfsklasse

AsyncTask - Definition private class OurAsyncTask extends AsyncTask<Void, Void, Void> {…} Params: Typ der zu berechnenden Parameter Progress: Typ des Fortschritts Result: Ergebnistyp der „Berechnung”

AsyncTask - Definition onPreExecute() wird im UI-Thread aufgerufen, bevor der eigentliche Task startet wird normalerweise verwendet um das GUI vorzubereiten (z.B. Fortschrittsanzeige einblenden) doInBackground(Params) wird im Hintergrund ausgeführt Aufruf findet unmittelbar nach onPreExecute() statt hier findet die eigentliche „Berechnung“ statt publishProgress(Progress…) kann verwendet werden um den Fortschritt anzuzeigen mittels onProgressUpdate() kann nun wiederum der UI-Thread manipuliert werden onProgressUpdate() wird im UI-Thread ausgeführt wenn publishProgress() aufgerufen wird die Berechnung im Hintergrund wird weiterhin ausgeführt onPostExecute(Result) wird im UI-Thread ausgeführt sobald die Aufgabe im Hintergrund abgeschlossen ist

AsyncTask muss als Kindklasse von AsyncTask implementiert werden doInBackground() muss vorhanden sein die Ausführung gestaltet sich sehr simpel new DemoTask().execute(url1, url2, url3);

AsyncTask - Cancelling Ein Task kann durch Aufruf von cancel() auch abgebrochen werden isCancelled() gibt dann TRUE zurück anstatt onPostExecute() wird onCancelled() aufgerufen sobald doInBackground() terminiert nach Möglichkeit sollte isCancelled() in der doInBackground()-Methode ständig überprüft werden, um sicherzustellen, dass der Task schnellst möglich abgebrochen wird

Datenhaltung

Aktuelle Situation Daten werden nicht gespeichert Nachteile: Nachrichten werden bei jedem Öffnen des Moduls erneut geladen Internetverbindung ist Voraussetzung Erweiterungen: Caching der Nachrichten in einer Datenbank Einführung eines Update-Intervalls

Datenbankzugriff mit Android Beispiel: Kontakte Kontakt muss als (Java)-Objekt verwendet werden können Implementierung einer Model-Klasse mit getter- und setter-Methoden Datenbank Handler Klasse (SQLiteOpenHelper) onCreate() – enthält create table statements. Wird aufgerufen, wenn die DB erstellt wird. onUpgrade() – wird aufgerufen wenn die DB verändert wird.

GreenDAO - Überblick Open-Source-Projekt Mapping von Java-Objekten zu Datenbanktabellen create, read, update, delete über einfache API Vorteile: Performance leicht verständliche API speziell für Android minimaler Speicherverbrauch kleine Library

GreenDAO - Verwendung

GreenDAO – Generator Projekt Schema erstellen (mit Version und Package) Schema schema = new Schema(1, "de.hsa.greendaoexample"); Entity erstellen Entity contact = schema.addEntity(“Contact"); contact.addIdProperty(); contact.addStringProperty("name"); contact.addStringProperty(“phoneNumber"); Code generieren DaoGenerator daoGenerator = new DaoGenerator(); daoGenerator.generateAll(schema, “../Example/src-gen");

GreenDAO – Android Projekt DaoMaster Startpunkt für GreenDAO hält SQLiteDatabase-Objekt kümmert sich um die DAO-Klassen (nicht Objekte!) statische Methoden zum Erstellen und Löschen von Tabellen DaoSession kümmert sich um alle verfügbaren DAO-Objekte in einem Schema Zugriff erfolgt über die getter-Methoden DAOs Data Access Object kapselt den Zugriff auf eine Datenquelle Folge: Datenquelle kann ausgetauscht werden kann, ohne dass der aufrufende Code geändert werden muss Entities Persistente Objekte Repräsentieren einen Datensatz als POJO

GreenDAO – Initialisierung helper = new DaoMaster.DevOpenHelper(this, „contacts.db", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); contactDao = daoSession.getContactDao();

GreenDAO – QueryBuilder Abfragen können mittels SQL abgesetzt werden Alternative: QueryBuilder API Abfrage aller User mit Vornamen Joe, sortiert nach Nachnamen List joes = contactDao.queryBuilder() .where(Properties.Name.eq(“DVA")) .orderAsc(Properties.PhoneNumber) .list();

Vielen Dank für eure Aufmerksamkeit!

Quellen Satya Komatineni, Dave MacLean, Sayed Hashimi: Pro Android 3. Apress, 2011 http://developer.android.com http://greendao-orm.com/ http://www.androidhive.info/ http://www.vogella.com/ http://www.infopark.de/cms