# Datenauswertungen visualisieren, aber wie?



## fishy (11. Jan 2006)

Hallo Community,

ich brauche eure Hilfe.

Folgendes habe ich vor:

Also ich habe einen Datenbestand mit Personen-Daten auf einem SQL-Server liegen. Auf diesem Datenbestand möchte ich Auswertungen und Analysen laufen lassen und diese dann z.B. in Tabellenform, als Tortendiagramm, Balkendiagramm etc. grafisch darstellen. 

Einfaches Beispiel: Tortendiagramm mit % Anzahl Personen unter 18 Jahre und % Anzahl Personen über 18 Jahre.

Der Datenbestand wächst ständig und ändert sich. Die Auswertungen sollen den jeweils aktuellen Stand der Daten wiedergeben wenn ich das Programm aufrufe.
Die Auswertungen sollen statisch sein und z.B. über ein ScrollPane auswählbar. Wurde eine Auswertung ausgewählt so soll die Grafik dazu erscheinen. 

Ich würde das gerne komplett in Java lösen.

Für ein Einzelsystem stell ich mir das so vor: Per JDBC die Daten in mein Programm holen, auswerten (bzw. bei dem obigen Beispiel mit ner SQL-Anfrage die Prozentzahlen ermitteln per JDBC) und dann mit Graphics2D Tortendiagramme etc. basteln und die Ergebnisse über Swing (oder AWT?) visualisieren.

Ist das sinnvoll so oder gibt es eine bessere, sauberere Lösung dafür?

Noch besser wäre es wenn das ganze als Webapplikation läuft, also ich einen Webserver habe der die Daten bereit hält und die Auswertungen erzeugt. Man soll von einem beliebigen Rechner im Netzwerk auf diesen Server mit einem Browser zugreifen können, dann wie oben beschrieben die Auswertung z.B. über ein ScrollPane auswählen können und bekommt dann das zugehörige Diagramm angezeigt.

Was wäre hierfür die einfachste und sauberste Lösung?

Ich danke euch.

Gruß,

fishy


----------



## krey (11. Jan 2006)

Machs doch mit MVC (Model View Controller) Dann trennst du das Layout von dem eigentlichen rechnen und Daten holen. Somit kannst du dir dann später einfach noch eine Sicht auf die Sachen mit einem Servlet (oder anderen J2EE Komponenten bauen). Ich denke das beste ist es so etwas modular zu halten da das Frontend wechselt (Application / Website ...) und das Backend gleich bleibt (Daten holen und berechnen. Also für die Diagramme hätte ich zwei Lösungsansätze (Jetzt für die Applikation) Also du kannst ja speichern wieviele Datensätze es gibt und wieviele schon bearbeitet wurden und somit eine Fortschrittsanzeige programmieren. Damit die Benutzer nicht denken dass das Programm hängt. Dann lässt du alle Daten auswerten und wenn du damit fertig bist kannst die Liste der Auswertungen anzeigen lassen. Einzelne Diagramme anhand von Prozentzahlen zu zeichnen kannst du zur Laufzeit machen. Am ende kannst du das Frontend dann nurnoch das zeichnen übernehmen lassen. Wenn du für das ganze ein Web interface schreibst ist es höchstwarscheinlich sinnvoll die Bilder temporär zu speichern und diese dann per <img... einzubinden. In welchem Format liegen die Auswertungen die der Webserver erzeugt denn vor? Und welcher Webserver wird benutzt? Welche Sprache erzeugt die Auswertungen die der Webserver bereitstellt?


----------



## Bleiglanz (11. Jan 2006)

http://jasperreports.sourceforge.net/


----------



## fishy (11. Jan 2006)

@krey:

Noch benutze ich keinen Webserver. Ich bin ja noch am planen wie ich das alle machen werde. Es wär halt nur schönen einen zu haben da dann nicht alle Benutzer sich die Applikation installieren müssen sonder einfach den Webserver anbrowsen können.

Welchen Webserver ich dafür nehmen soll weiss ich noch nicht, habe mehrmals erfolglos versucht den Java Application Server als Teil der J2EE zu installieren, aber die Installation schlug fehl.
Das J2EE scheint ja eh, dem offiziellen Tutorial nach, seeehr komplex zu sein und ich weiss nicht ob es nicht evtl. zu overpowered ist für mein doch sehr simples Vorhaben.
So richtig trau ich mich da nicht ran obwohl ich schon Erfahrung mit JSP und Servlets habe. Habe damals einen Apache Tomcat genutzt.
Damals hab ich allerdings "nur" Tabellen dargestellt und keine Grafiken. Jetzt brauche ich ja Grafiken.

Ist es denn möglich mit z.B. Graphics2D ein Bild zu generieren z.B. im JPEG Format und das dann über ein JSP ausgeben zu lassen? Du sprichst in deinem Posting von "temporär speichern", wie ist das gemeint?
Wo würde denn die Generierung des Bildes im MVC stattfinden?
Im Controller, oder? Modell ist in meinem Fall doch die Datenbank, Controller die Programmlogik die auf die Datenbank zugreift und die Daten holt und auswertet (und dann auch das Bild generiert?) und View dann halt flexibel, also entweder ein JFrame oder über den Browser...

Mal über ein starres Bild hinausgedacht:
Wenn ich (um bei meinem Beispiel zu bleiben) ein Tortendiagramm habe mit Unterteilung minderjährig/volljährig und ich will es so haben dass ich das Tortenstück mit den Volljährigen anklicke und mir dann eine Tabelle mit den Namen der volljährigen Personen angezeigt wird, wie müsste ich das lösen?
Dann komme ich mit einem JPEG ja nicht mehr weit.


----------



## fishy (19. Jan 2006)

So, das mit den Diagrammen ist jetzt nicht mehr interessant, deshalb sind die jasperreports auch nix für mich, aber danke trotzdem.

Also ich will jetzt aus meinen Daten eigene Grafiken generieren die auch anklickbare Elemente besitzen die den Benutzer zu einer anderen Ansicht führen.
Wie kann ich das mit dem J2EE lösen?


----------



## Bleiglanz (19. Jan 2006)

siehe deinen anderen Post

a) programmatisch GIFs oder PNG oder JPEG erzeugen 

b) programmatisch html imagemaps dazu schreiben

c) saufen bis zu umfallen wenn du a und b von hand gemacht hast

oder

programmatisch SVG erzeugen (Browserplugin nötig) 

oder

programmatisch SVG erzeugen und mit Batik in Graphik umwandeln



aber achtung, das ist alles hakelig: ein HTTP Response ist ja iA eine HTML Datei, die dann ein <img src= enthalten soll

dieses wird von einem zweiten Response erzeugt

und da gibts dann schöne Verwicklungen






oder

CrystalReports oder List+Labels kaufen und die paar becknackten Reports in 5 Minuten zusammenklicken


----------



## AlArenal (19. Jan 2006)

Bleiglanz hat gesagt.:
			
		

> CrystalReports oder List+Labels kaufen und die paar becknackten Reports in 5 Minuten zusammenklicken



Leider unterstützen die Damen und Herren von List & Label Java nicht, d.h. man muss sich den ganzen Driss selbst mit JNI zusammenstricken. Laut Entwickler gibt es Kunden, die das gemacht haben, aber die rücken deren Wrapper nicht raus und bei LL im Haus gibts keine solche Wrapper.

Und bei CR wirste ja arm.. wenn man mal im Netz nach Reporting Tools sucht, ist es auch immer wieder interessant, dass eigentlich jeder Hersteller behauptet Marktführer zu sein


----------



## Bleiglanz (19. Jan 2006)

ja, stimmt 

Bin natürlich VisualStudio geschädigt, das dabei mitgelieferte CrystalReports reicht aus, um in kurzer Zeit eine ASP.NET mit Klicki-Bunti Diagrammen zu füllen

gibt auch noch das BIRT Unterprojekt in Eclipse, aber damit machst man natürlich eine neue Baustelle auf...

oder ILOG

aber komplexe grafische Auswertungen von Hand nachzuprogrammieren ist wirklich kein Fun ...


----------

