README pour P@thFinder

Marc van Leeuwen (mvanleeu@clio.unice.fr)
Eric del Gatto   (edelgatt@clio.unice.fr)


Information complementaires par rapport a la page web disponible a l'adresse http://www-mips.unice.fr/~edelgatt/P@thFinder/P@thFinder.html
Nous vous conseillons de lire d'abords les informations sur cette page, et ensuite continuer a lire le present document.

P@thFinder est donc comme un remake d'ICQ (www.mirabilis.com) dans une version simplifiee et en Java.
Nous avons ecrit la partie serveur et la partie client en JDK 1.2, et obligatoirement 1.2 car nous avons utilise des classes non disponibles sous 1.1.






Les sources de notre projet sont organisees de la maniere suivante.

japie/
contient des classes passe partout, qui n'ont rien de specifique 
a notre projet, miment l'arborescence de java.* et javax.*

miniSQL/
Drivers jdbc pour miniSQL a mettre dans le CLASSPATH

PothFinderCommon/
Les fichiers communs aux Serveurs et au Client

PothFinderClient/ et PothFinderServer/
devinez....




Les aspects suivants du JDK ont ete exploites:

- RMI (toutes les communication client<->serveur et serveur<->serveur sont sur ce modele. A noter que le client et lui aussi "serveur" car le vrai serveur P@thFinder fait des appels au client. Les RMI nous ont donnes bien du fil a retordre, enfin on a eu et on a encore du mal a faire marcher l'appli a cause des RMI. Il manque un vrai tutorial en francais et expliquant exactement ce qui se passe dans tous les cas de figure, celui de sun s'arretant sur des exemples precis)

- JDBC: les acces a la base de donnees des utilisateurs inscrits au service est faite par JDBC, en passant par le driver adequat. la base de donnee utilisee a ete miniSQL, que je fais tourner sur clio. vous pouvez regarder le contenu de la base de donnees de P@thFinder en executant sur clio (et que sur clio) la commande ~mvanleeu/pfdump qui fait en fait un msqlexport du bon fichier. Si vous compiler notre projet pour qu'elle inscrive vraiment dans la base de donnee, alors vous verrez ce fichier changer. Cette partie a initialement coute un peu de temps car elle a oblige a se documenter pas mal, mais les concepts sont simples et puissants, un regal de faire de la bd avec Java.

- Collection Framework: Nous utilisons des classes HashSet et Hashtable, mais avec les nouvelles commandes definie dans cette framework.

- Swing: le client possede une interface entierement en Swing; avec une JTable, une JTabbedPane, des radio button, bref vous devez avoir vu les copies d'ecran.nopus avions prevu mais pas integre aussi que le tableau puisse etre trie colonne par colonne, comme dans le tutorial, mais avec une programmation completement differente et mieux reutilisable, mais nous n'avons pas combine le fait de pouvoir voir une partie du tableau ET de voir cette partie de maniere triee. vous pouvez cependant voir la partie de trie dans japie/swing/table/SortedTableModel.java.



Passons aux choses qui fachent..

Comme on est honnete et pour pas que vous ayez trop a chercher, voici ce qui ne marche pas (du tout ou mal)

- le lancement des programmes est toujours une galere. En fait on est sur que ca marche bien sur un PC sous Win9X avec le serveur et le client sur la meme machine (desole, pas de quoi s'acheter plusieurs machines pour tester). Nous avons teste a la fac, mais les machines se voient mal entre elles (gros problemes de RMI). Ces problemes est ce qui nous emebete le plus, car nous ne savons pas vraiement si le programme est testable par vous. Nous l'esperons en tous cas.

- l'indicateur graphique de l'etat de connexion (online/offline) ne marche pas, car il y a visiblement un probleme avec les observer/observable, et ce partout dans le programme et sans que nous en comprenions la cause, car le nombre dd'observer est bon, mais la fonction update n'est jamais appelee, bizarre bizarre, si vous trouvez la reponse du pourquoi du comment, faites signes SVP)

- le tableau est mal mis a jour lors de l'ajout ou suppressions de personnes, pour les memes raisons qu'au dessus, pb observer/observable.

- quand quelqu'un qui vous "interesse" se connecte, le case ne se colorie pas en vert sous vos yeux, en fait le refresh n'a pas l'air d'etre automatique, alors qu'il devrait l'etre. Il faut donc reduire la fenetre puis la restaurer (ou faire passer une autre fenetre devant...

- les plug-ins (par exemple le talk ou l'envoie de fichiers) manquent a l'appel, mais tout est prevue pourpouvoir les accepter...



bref en tous cas il y a un makefile pour plateforme win32 s'appelant Makefilexxx.w32 ou xxx represente Client ou Serveur, assumant que vous etes sou win9x avec comme shell le bash de cygwin. Il y a en effet des problemes de longueur maxi ligne de commande sous 4dos et command.com. 

Au lieu de se cantonner au "modele de ICQ" comme dans le sujet, on a voulu faire" peut-etre un petit peu trop en trop peu de temps, mais ce projet nous a permi de BEAUCOUP coder de java (4841 lignes actuellement), sous pas mal d'aspects tres differents, et le theme du ICQ merite qu'on s'y recolle une deuxieme fois.


Surtout si vous avez des questoins, des choses que vous ne comprenez pas au moment de lire les source, n'hesitez vraiment pas a m'envoyer un mail, car je consulte mon courrier plusieurs fois par jour, meme de chez moi.



	Marc van Leeuwen (mvanleeu@clio.unice.fr)
	Eric del Gatto   (edelgatt@clio.unice.fr)



PS:Pensez peut-etre a l'idee du tutorial RMI BIEN FAIT, ca interesserais beaucoup de gens je crois....
