Mein Endspurt

Kleine Berichtigung meines Kollegen: Fundament der Bewertungssache wurde von mir erstellt. Soweit bis eine Beziehungsfressende Bewertungsfunktion implementiert war. Tja. Dann kam die helfende Hand, aber wie gesagt.

Kleinere Bugfixes, testen der Use Cases, Datenproduktion waren so die meinen in den letzten zwei Tagen. Seltsamerweise läuft das System seit längerem nun ohne Probleme, so dass ich versucht bin, alles was passiert ist, auf Vista abzuwälzen.

Sei es drum.

Reticulum: Endspurt V2.0

Also ich habe heute die Bewertungssache soweit implementiert.
Außerdem sind die Beziehungsgraphen im Profil auch soweit visualisiert.

Folgendes Feintuning würde ich euch jetzt noch bitten, zu machen:
a.) Bewertungskonzept testen – und schöner visualisieren – am Besten so, dass man für jeden Typen, zu dem man ne Beziehung hat, in ein eigenes Kastl steckt, wo folgendes angezeigt wird – Bsp.:
Kastl-Titel: Zeus (Hyperlink zur Profilseite von Zeus)
Deine Bewertung: <JETZT BEWERTEN | Sternchen und Kommentar>
Bewertung von Zeus: <JA|NEIN – oder man kann wenn mans mit Anonymität nicht so hat, auch Kommentar und Sternchen anzeigen – ich denke, aber man sollt es bei JA oder NEIN belassen.

b.) Beziehungsgraph testen und Visualisierung verbessern.

c.) Noch ein paar User registrieren, ein paar Beziehungen schließen, Profil bearbeiten und Sichtbarkeiten ändern, Nachrichten senden/empfangen.

d.) Anwendungsfälle überlegen und aufschreiben, die wir dann bei der Präsentation durchführen.

—-
Ich werde mich heut noch einem minimalen Bug beim Nachrichtenmanagement widmen – und dann versuchen, die Sache mit den Arbeitsplätzen anzugehen.

lG
Andy

Endspurt: Verschnaufpause

A: PROFIL BEARBEITEN / SICHTBARKEITSREGELN
B: FIXING HALLO USERNAME – du HAST 6666 NACHRICHTEN.

A und B sind erledigt. Bei B musste ich noch die Unterscheidung GELESENE NACHRICHT / UNGELESENE NACHRICHT in System und Datenbank implementieren.

Jetzt werd ich mal über HCI-Stoff drüberfliegen und evt. dann noch weitermachen mit C.

Zeitaufwand: ca. 8 Stunden (gestern und heute)

lG

AKA

Was wir tun.

Nach einer kompletten Neuinstallation meines Computers konnte ich auch wieder endlich richtig und ohne Einschränkungen am Porjekt mitarbeiten. Meine Blogtätigkeit habe ich leider etwas vernachlässigt, darum möchte ich nun kurz Zusammenfassen und Nachholen.

- Komplette Systeminstallation meines Computers (das Einrichten von Eclipse mit der Verwendung eines SVN Repositorys und Tomcat ist mittlerweile eine Routinetätigkeit für mich.)

- Neugestaltung des CSS um die Ansicht auch für Firefox kompatibel zu machen, ohne ein zweites CSS zu benötigen

- einige kleinere Handgriffe am Design selbst

Die nächsten Arbeitsschritte werden die Beziehungsbewertungen sein. Da stellt sich noch die Frage der genauen Implementierung, da die Beziehungen immer noch nur in eine Richtung gehen.

Endspurt

Ausschnitt aus meiner Mail von gestern (damit man nicht den Eindruck bekommt, wir planen nicht vor).  Im Übrigen ist unser Mail-Verkehr mittlererweile ziemlich umfangreich geworden und kann bei Bedarf der LV-Leitung zugänglich gemacht werden.

—————————————

Ich habe gestern die Qualifikations-hinzufügen-Sache komplettiert. Bei dieser Gelegenheit hab ich gleich mal was mit AJAX versucht – ist gar nicht sooo schwer wie erwartet, also da könnte man noch viele coole Sachen machen, wenn man Zeit hätte.

Uns geht es aber erstmal darum, dass wir die notwendigen Punkte fertigmachen. Ich möchte die nächsten 3-4 Tage den Großteil der Dinge erledigt haben, weil danach habe ich (und ihr sicher auch) nicht mehr großartig Zeit, etwas zu programmieren.

Ich stelle deswegen mal nen Plan auf, mit den Dingen, die wir noch machen sollten und mache auch nen Vorschlag, wer das am Besten machen könnte:

1. Projekthomepage auf Vordermann bringen – das heißt eine genaue Erklärung der grundlegenden Features auf der Hauptseite (WIKI-Startseite). Conny, machst du das?

2. Projektdokumentation: Wir sollten den Großteil der Klassen sowie der Methoden darin dokumentieren, im Bezug darauf, was die Klasse / Methode macht. Gerhard, willst du das übernehmen?

3. Profil ändern + Sichtbarkeitsregeln: Endlich mal die Profil-ändern-Page sowie zumindest ein paar grundlegende Sichtbarkeitsdinge. Mach ich.

4. Namensauswahl bei der Mailbox (AJAX-Beispiel dafür: http://www.torsten-horn.de/techdocs/javascript-ajax.htm#Beispiel-Autovervollstaendigung). Kann ich machen, außer jemand anders, erklärt sich dafür bereit. Priorität gering.

5. FIXING: Hallo „Username“. Sie haben „666″ neue Nachrichten.

6. FIXING: Beziehungen bei Beziehungen anzeigen :) Bewertungen hinzufügen. Conny möchtest du das machen? Hat sich ja schon länger angekündigt :P

7. Lebenslauf-Konzept (siehe Mails vor vielen Tagen) implementieren. Kann ich machen, wenn ihr wollt.

8. Dann bietet es sich an, das Arbeitsverhältnis etwas komplexer zu gestalten, sodass es mit dem Lebenslauf und den Arbeitsstellen der Firma verlinkt werden kann. Das würde ich schrittweise tun:
8.a.) FEATURE1: Arbeitsstellen hinzufügen / löschen beim Firmenprofil (und bei Beziehungen verwalten)
8.b.) FEATURE2: Benachrichtigung (per Nachricht *g*) an den HERREN, wenn ein Sklave ein Arbeitsverhältnis herstellen will.
8.c.) FEATURE3: Will ein Sklave ein Arbeitsverhältnis herstellen, hat er die Möglichkeit, den Lebenslauf + seine Qualifiaktionen (Checkboxen) zusätzlich zur Anfrage hinzuzufügen. Will ein Herr einen Sklaven anwerben, wird er wohl eine Auswahl der offenen Stellen mitschicken wollen.

9. FIXING: Falls ein Sklave eine Firma registrieren will, wird er automatisch zum Herren. Conny, möchst du das machen (Vorschlag kommt auch von dir *g*).

10. Den Netzwerk-Button mit Inhalt füllen. Das heißt: Beziehungsgraphen. Ich habe dafür schon etwas AJAX-basiertes gefunden – wo ich mir mit der Erklärung, dass wir Studenten sind, eine 30-Tage-Testversion geholt habe. Diese tolle Visualisierung ist aber erst der zweite Schritt:
10a.) Die Rohdaten (Beziehungsrelationen) entsprechend aus der Datenbank kitzeln und in eine normale Tabelle schreiben.
10b.) (Wenn zeit bleibt): Visualisieren mit yFiles AJAX (coole Beispiele siehe hier: http://www.yworks.com/de/products_yfilesajax_about.html –> COLLAPSABLE TREE z.B.)

11. Treffpunkt + GUIStartseite: SKLAVE / Herr des Monats.
Wenn Zeit bleibt, richtig implementieren. Ansonsten nur faken und bei der Demonstration einfach nicht erwähnen. Es sollte evt. auch noch ein „10 neuesten USER“-Widget im Treffpunkt vorhanden sein (faken oder implementieren).

12. Ich hab echt keinen Plan, wieviel Aufwand wir für das Projekt hatten (hab leider verabsäumt, das zu zählen). OB 400 Stunden stimmen, weiß ich wirklich nicht – ich weiß nur, dass es auf jeden Fall ausreichend ist :)

Ja, also wenn wir das alles haben, sind wir fertig (wenn ich nix vergessen habe). Meine Prioritäten sind folgendermaßen:
A: PROFIL BEARBEITEN / SICHTBARKEITSREGELN
B: FIXING HALLO USERNAME – du HAST 6666 NACHRICHTEN.
C: ROHDATEN VON BEZIEHUNGSGRAPHEN (tabellarisch) im Userprofil und im Beziehungsmenü.
D: FEATURE 1 + 2 von (8)Arbeitsverhältnis.
E: LEBENSLAUF-KONZEPT

Das möchte ich bis Sonntag-abend hinbekommen.

Was in der Zwischenzeit passiert ist…

Im laufe der Zeit hat sich bei unserem Projekt einiges getan, wobei allerdings das Tagebuch etwas vernachlässigt wurde.
Wir haben bis jetzt sehr erfolgreich gearbeitet, was die Funktionalität von Reticulum angeht. Viele Dinge sind schon implementiert. Von unseren sechs UseCases sind schon fünf soweit funktionsfähig. Aber dabei darf man nicht außer Acht lassen, dass unter UseCases nicht „Login“, oder „Registrieren“ gehört (das muss jede SocialNetworkingPlattform können).

Reticulum ist Momentan für den IE optimiert, wobei wir daran arbeiten, damit das ganze auch auf Firefox schön aussieht.

Ich möchte kurz auf die schon vorhandenen Funktionen eingehen:

  • Im Profil sind die Herren, und Sklaven, sowie die Freunde von einem User sichtbar. Weiters kann man all seine Qualifikationen sehen, und wenn man neue erwirbt auch gleich eintragen.
  • Bei Firma lässt sich eine, oder sogar mehrere Firmen gründen. Allerdings nur dann, wenn man selber schon ein User ist.
  • In der Mailbox lassen sich Nachrichten an andere User schicken, und empfangene Nachrichten ansehen. Das ganze nennt sich RMS (Reticulum Message Service). Am Layout muss noch gefeilt werden.
  • Ein ganz zentraler Punkt ist die Suche. Hier lässt sich sowohl nach der „Daseinsform“ suchen, als auch nach dem Benutzernamen. Dieser sogar, wenn er nicht vollständig bekannt ist.
    Nach erfolgreicher Suche lässt sich selbstverständlich auch gleich das Profil des gesuchten Users ansehen, und damit das eigene Netzwerk erweitern.l
  • Unter dem Punkt Beziehungen werden sämtliche Beziehungen, die man als User hat, dargestellt.

Des weiteren sind in unseren Klassen schon sehr viele Dinge implementiert, die weitergehend sind, aber noch nicht benutzt wurden. Diese Dinge sind dadurch entstanden, dass man sich gedacht hat: „Das könnten wir vielleicht irgendwann mal brauchen, bauen wir das gleich ein, dann haben wir später weniger Arbeit“.

Was auch noch zu erwähnen ist:
Sehr viel Zeit ist darin aufgegangen, dass genau die gleichen Programme und Plungins (trotz selber Konfiguration) nicht auf allen Computern der Teammitgliedern funktionieren. Conny hat gestern sogar ihren PC neu aufgesetzt, und momentan scheint alles zu laufen. Bei mir funktioniert das Omondoplugin nach wie vor nicht vollständig. Inzwischen habe ich auch noch „StarUML“ und „Dia“ als UML- Tools.

Der Zeitaufwand ist nicht so leicht abzuschätzen, allerdings denke ich dass für uns alle in Summe in etwa 400 Stunden bis jetzt für das Projekt geflossen sind. (@Conny & Andy: bitte korregieren, wenn ihr glaubt es sind mehr oder weniger ;-) )

Sequenzdiagramm: Notation

Es wurde heute in der Design II-Abgabe unter Anderem beanstandet, dass unser Syntax für das Sequenzdiagramm nicht korrekt wäre.

In einem Beispiel-Diagramm von dem Hersteller unseres Tools ist es aber genauso verwendet:

http://www.forum-omondo.com/documentation_eclipseuml_2008/diagrams/sequenceDiagram/SequenceDiagramExample/index.html

Der Focus of Control / Aktivierungsbalken zeigt ja im Prinzip nur an, ob:
„ein Objekt über den Kontrollfluss verfügt, und aktiv an Interaktionen beteiligt ist“ (Wikipedia)

Im Tool selbst gibt es leider keine Möglichkeit, den Aktivierungsbalken irgendwie zu deaktivieren. Was ich aber einsehe ist, dass der Aktivitätsbalken nicht unterbrochen werden sollte. Werde deshalb die Sequenzdiagramme neu machen und die Notiz hinzufügen, dass Aufrufe von eigenen Methoden mit unserem Tool nicht anders als durch übereinander liegenden Aktivitätsbalken dargestellt werden können.

Außerdem werde ich die Klassendiagramme der Use-Case-Realisierung nur auf die wirklich relevanten einschränken, so wie es gewünscht ist ;) .

Gerhard hat mir heute zugesichert, dass er sich um ein übersichtliches Übersichtsdiagramm bemühen und eine Kurzzusammenfassung der bisherigen Aktivitäten und Geschehnisse hier im Blog vornehmen wird.

—————

Ich werde mich in eine der nächsten Wochenenden den Beziehungsgraphen widmen und einen gescheiten Ansatz suchen, der eventuell ohne Applets auskommt und trotzdem nicht zu viel Aufwand ist.

Probleme mit Eclipse und Tomcat

Zehn Stunden reine Arbeit für nichts und wieder nichts. Gestern Abend nach der Übung gab es immer wieder einen NumberFormatException, die angeblich daraus resultiertte, dass die IntegerClass nicht in der vorgesehenen .jar war.

Vorgenommene Maßnahmen:

-zwei verschiedene Neuinstallationen von Java (1.6.5 und 1.6.6)

- neuer Download von Eclipse, Neuinstallierung von Eclipse

- neuer Download von Tomcat, Versionen 5 und 6

- Versuche mit verschiedensten SVN Repositories

- Versuche mit verschiedenen Configurationen

Am Ende gibt es fast den gleichen Fehler wieder, nur mit einer anderen Klasse. Seltsamerweise in der gleichen .jar, warum auch immer.

Momentan ist eine Arbeit mit dem Tomcat unmöglich und somit keine weitere Java Entwicklung am Projekt von meiner Seite. Die nächste Maßnahme wird ein Versuch auf einem anderen Betriebssystem.

Das restliche Entwicklungsteam arbeitet an den Fehlern, die eine implementierung am Almighty verhindern.

Hartes Stück Einarbeitung für den 1. Prototyp

Also die Inter-Servlet-Kommunikation ist schon ein anspruchsvolles Thema. Die letzten 2 Tage habe ich größtenteils damit verbracht, eben damit vertraut zu werden. Der 1. Prototyp soll 2 der 3 Use-Cases realisieren bzw. zumindest simulieren.

Ich habe am Anfang meinen Schwerpunkt, wie wirs im Meeting besprochen haben, auf die Basisfunktionalität beschränkt, das heißt: Login, Registrierung, Session-Handling. Im Großen und Ganzen kann ich sagen, dass das nun funktioniert – und zwar, und deswegen war es so anspruchsvoll, unter Einhaltung der Trennung von Code und Ansicht.

Das machte Arbeitsteilung möglich, insofern die Conny das Designen der JSPs und das Erstellen eines CSS übernommen hat und ich mich auf die Programmlogik gestürzt habe. Das sagt sich leichter, als man denkt. Beim Entwickeln der Programmlogik muss man zumindest wissen, wie man dann die Daten in die JSP bringt, ohne zuviel Code zu schreiben.

Die Antwort: JSTL (Java Standard Tag Libraries), Expression Language sowie Controller-Servlets. Es hat einiges an Versuche gekostet, bis ich draufgekommen bin, dass die Controller am Besten Servlets sein sollten, denn damit lassen sich Anfragen leicht verarbeiten. Man schickt z.B. ein Formular mit <form action=“Servlet“ method=“post“> an ein Servlet. Die Verarbeitung im Servlet erfolgt über die Klasse HttpRequest, wo die Formulardaten gekapselt und über getParameter(String name) verfügbar sind.

Man kann dort ganz normal Java-Code-mäßig abarbeiten und das Ergebnis dann entweder an ein anderes Servlet weiterleiten oder aber an ein JSP, wo dann über JSTL die Ergebnisse ausgelesen werden. Das hört sich jetzt leicht an, bis man das alles verinnerlicht hat, vergeht aber eine Weile. Es ist in einem Servlet außerdem möglich, Methoden von anderen Servlets oder normalen Java-Klassen aufzurufen, und sogar die HttpRequest und HttpResponse-Objekte zu verändern, was ganz parkatisch sein kann.

.::WAS IST NOCH ZU TUN::.

Damites nicht wieder zu weitschweifig wird, gehe ich konkret darauf ein, was für das Erfüllen der Anforderungen des Prototyp1 noch fehlt:

Grunsätzlich: Was wir nicht mehr implementieren können, müssen wir wenigstens schön im JSP darstellen = faken.

  • Use-Case: Profil bearbeiten / Qualifikation hinzufügen:
    - Im editprofile.jsp den String „Hier stehen dann die Qualifikationen“ mit ein paar Beispielhaften Qualifikationen versehen. Die addquali.jsp wäre gut wenn man die auch noch stylen könnte, damit man das Pattern-Prinzip besser erklären kann.
    - Implementiert: 10% (nämlich: Profil wird mit Namen und Beziehungen angezeigt) , Gestylt: 65%
  • Menü:
    - Überall wo das Menü vorkommt, die Buttons verlinken, das man beim Herzeigen schön durchnavigieren kann.
    - Eventuell das Menü ausklinken in eine eigene menu.jsp – die man dann leicht überall, wo man es braucht, dazuladen kann. page include wenn, ich mich recht erinnere.
    - die einzelnen Links+Buttons dürfen nur dargestellt werden, wenn es für den eingeloggeten (oder nicht eingeloggten) Sklaven/herren/Gott sinnvoll ist. Vielleicht kann sich dazu mal jemand etwas überlegen, also für alle 3 Usergruppen die möglichen Fälle zusammenschreiben und dann im googleCode-Wiki veröffentlichen, damit wir das einsehen/verändern können.
  • Use-Case: Beziehungsgraphen anzeigen:
    - da hätten wir die relations.jsp, die eigentlich ausreicht für Iteration1 ist.
    - Implementierung wird aufwändiger, das dürfte dann die Krone unseres Projektes sein, gehört also ans Filmende.
    - implementiert: 0%, gestylt: werden-wir-sehen%
  • Use-Case: Bewertungen hinzufügen (requires: Beziehungen hinzufügen)
    - Das wäre halt toll, wenn man das schon implementieren könnte. Also falls jemand ust hat, kann er mal versuchen, ähnlcih wie ich es bei der Registrierung gemacht habe, fürs Beziehungs-Insert so einen Pathweg durch die nötigen Controller zu schreiben.
    - Von wo aus soll man Beziehungen/Bewertugnen hinzufügen können? Direkt von der Profilpage aus, wenn es ein fremdes Profil ist? Und für Bewertungen: Wenn der Herr/Sklave mit mir in einem Arbeitsverhältnis steht? Das ist wenig Programmieraufwand und lässt sich im Zusammenspiel mit dem Sessions-User-Objekt und der Profilanfrage über JSTSL+EL realisieren.
    - Auf jeden Fall sollten wir für Dienstag etwas anschaubares (Buttons oder eigene JSPs) in Puncto Beziehung + Bewertung herzeigen können.
  • Eigene / Fremde Profilseite
    _ Zur Zeit hab ich nurmal die Beziehungen vom Typ A (Arbeitsverhältnis) ausgelesen – mit den anderen Typen gehts aber genauso (da braucht man gar ncihts mehre programmieren, sondern einfach nur die JSTL+EL-Tags entsprechend einfügen wie ichs für A-Typen gemacht habe.
    - Zur Zeit liegt die Implementation im Ctrl_BeziehungsAbfrage, wobei die Ctrl_Profilabfrage später die gesamte Aufgabe übernehmen soll: Auslesen der Profilinformationen, die man darstellen möchte und unterscheiden zwischen eigener und fremder Profilseite, sodass man unterschiedliche Buttons plazieren kann. Die Ctrl_Profilabfrage soll dabei auf die anderen Abfragetypen zugreifen und die Ergebnisse nur noch sammeln. Bei der eigenen Profilabfrage soll das Session-User-Objekt davon profitieren, indem Qualifikationen und (jetzt schon) Beziehungen im User-Objekt verlinkt werden, sodass man bei Profiländerung etc. leicht darauf zugreifen kann.
    - Was eben noch fehlt sind Qualifikationen und die anderen Dinge, die man noch anzeigen will.
    _ Implemenierung: 35-40%, Darstellung: 60%
    - Dem Problem der verschiedenen Auflösungen und unterschiedlichen Darstellungen in versch. Browsern sollten wir auch Beachtung schenken.

.::FÜR SPÄTER::.

  • Use-Cases für Treffpunkt überlegen?
    - Was ist der Treffpunkt und was kann man da machen?
  • Nachrichten-Handling
  • Firmen-Registrierung, Zusammenhänge zwischen Herr + Firma. Sollen
    - solche Zshg. auf der Profilseite der Firma und d. Herrn dargestellt werden?
  • Log4j-File-Logging zum Laufen bringen (so kann man auch gut debuggen)
  • Iteratoren (oder besser: Colections) für User, die gerade Online sind (kann man evt. im Treffpunkt darstellen) Dafür gibt es das Scope(=Gültigkeitsbereich) ServletContext, wo man solche Dinge ablegen kann.
  • Braucht man sonst noch solche Iteratoren oder /Collections? Hier mal zum Konstrukt Collection: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html
  • Ah – GANZ WICHTIG: SUCHE von Usern, Beziehungen, Qualifikationen, Arbeitsstellen, etc.
    - Macht man das alles über SQL-Abfragen oder hält man sich eine Art Cache in Form von Iteratoren im Servlet-Context

Also fad wird uns sicher ned. ^^

Gn8!

Java und Datenbanken Nr. 1

Bis Sonntag sollte das Backbone unseres Projektes, die Datenbank in ihrer ersten Version stehen. Dazu wird die Oracle Datenbank auf dem Almighty verwendet. Dafür müssen vorher bis Freitag alle Entity Klassen mit allen ihren Attributen definiert worden sein.

Der Zugriff auf die Datenbank sollte eventuell über eine eigene Controller Klasse erfolgen..

Bis jetzt habe ich keine Ahnung wie man mit Java auf Oracle Datenbanken zugreift, damit werde ich mich bis Freitag beschäftigen.