1. La classe " GestionBase "
C'est elle qui sert au dialogue avec la base. Elle comporte quatre données et six méthodes.
a. Les données privées:
- " base ", de type " String ", qui contient le nom de la base de données.
- " table " de type " String ", qui contient le nom de la table.
- " login " de type " String ", qui contient l'identifiant du propriétaire de la base.
- " url " de type string, qui contient l'url de la base sur le serveur, donnée valant par défaut "jdbc:postgresql://svrlinux:5432/".
b. Les constructeurs
Il y a deux constructeurs pour cette classe. Chacun d'entre eux reçoit en argument le nom de la base et de la table auquel l'utilisateur désire se connecter, ainsi que l'identifiant du propriétaire de la base. Le deuxième constructeur reçoit, de plus, l'url de la base de données sur le serveur. Tous ces arguments sont de type " String ".
c. Les méthodes publiques
- " envoiUpdate " : cette méthode permet d'envoyer des requêtes de mise à jour de la base de données. Elle reçoit en argument un objet de type " String " contenant la requête à exécuter. Elle ne retourne aucun objet.
- " envoiRequete " : cette méthode permet d'envoyer des requêtes pour interroger la base de données. Elle reçoit en argument la requête à exécuter, sous la forme d'un objet " String ", et renvoie un objet " ResultSet " contenant le résultat de la requête.
- " nbConnections " : cette méthode renvoie, sous forme d'entier, le nombre de connections à l'URL qui lui est passée en argument sous forme d'un objet " String ".
- " ajouteIncrementeActualise " : c'est une méthode qui reçoit en argument une chaîne de caractères. Elle vérifie alors si cette chaîne de caractères se trouve déjà dans la base. Si tel n'est pas le cas, elle l'ajoute, sinon, elle met à jour la date de dernière consultation et en incrémente le nombre.
d. La méthode privée " construitDate "
Cette méthode permet de récupérer une chaîne de caractères contenant la date et l'heure du système au moment de son appel. Cette méthode ne reçoit rien en argument. Elle renvoie un objet de type " String " contenant la date et l'heure au format : " aaaa/mm/jj hh:mm ".
2. La classe " ConnectionURL "
Elle permet de récupérer des ressources contenues à une URL particulière. Elle fait fortement appel à la classe " URLConnection " fournie avec la distribution du SDK.
a. Les données privées
- " adressePage ", objet de type " String " qui contient l'URL de la ressource à laquelle l'utilisateur désire accéder.
- " donnees ", objet de type " StringBuffer " qui contient les données contenues à l'adresse " adressePage "
b. Le constructeur :
Il reçoit en argument un objet de type " String " correspondant à l'adresse de la ressource à laquelle l'utilisateur désire accéder. Il initialise les données privées, et récupère ainsi les données désirées.
c. Les méthodes publiques :
- " actualiseDonnees " permet d'actualiser les données, c'est à dire de recharger les données contenues à l'adresse " adressePage ". Cette méthode ne reçoit rien en argument et ne renvoie rien.
- " getAdressePage " ne reçoit rien en argument, elle renvoie un objet de type " String " contenant la valeur de la donnée " adressePage ".
- " setAdressePage " permet de modifier l'URL de la ressource à laquelle l'utilisateur souhaite accéder. Elle reçoit en argument un objet de type " String " contenant la nouvelle URL.
- " getDonnes " permet de récupérer les données contenues dans la variable " donnees ". Elle ne reçoit rien en argument et renvoie les données sous forme d'un objet " StringBuffer ".
d. La méthode privée " connectUrl "
Elle permet de se connecter à l'URL contenue dans la variable " adressePage " et de récupérer les données correspondantes dans l'objet de type " StringBuffer " qui sera renvoyé. Cette méthode ne reçoit rien en argument.
3. La classe " URLAbsolue "
C'est cette classe qui permet de calculer les URL absolues des liens contenus dans les pages HTML qui transitent par le serveur. Elle réalise l'ensemble des opérations décrites dans la partie V.
a. Les données privées
- " homeURL ", donnée de type " String ", qui contient l'URL absolue de la page en cours.
- " relativeURL ", objet de type " String ", qui contient l'URL supposée relative d'un des liens contenus dans la page en cours.
- " absoluteURL ", est un objet de type " String " qui contient l'URL absolue du lien.
- " servletURL " est un objet de type " String " qui contient l'URL du servlet. Il est initialisé par défaut à la valeur " http://pc-grit12:8080/servlet/Projet/ "
- " passeParServeur " est un booléen qui est à vrai si la ressource doit être redirigée vers le servlet. Dans le cas contraire, cette variable est mise à false.
- " decoupeRelativeURL " est un tableau de " String " qui contient l'URL relative découpée suivant les " / " qu'elle comporte.
- " decoupeHomeURL " comporte la même chose, mais pour l'URL de la page en cours.
b. Le constructeur
Il initialise les différentes données présentées ci-dessus et calcule l'URL absolue correspondante. Il reçoit en argument deux objets de type " String " qui correspondent à l'adresse absolue d'une page HTML ou d'une feuille de style et l'adresse d'un lien trouvé dans cette page. Le troisième argument du constructeur est un booléen qui spécifie si la donnée doit être redirigée ou non vers le serveur.
c. Les méthodes publiques
- Les méthodes " getHomeURL ", " getRelativeURL " et " getAbsoluteURL " renvoient un objet de type String qui contient respectivement : l'URL de la page en cours, l'URL relative d'un lien contenu dans cette page et enfin l'URL absolue de ce même lien.
- Les méthodes " setHomeURL " et " setRelativeURL " permettent de modifier les valeurs des URL de la page en cours et du lien qu'elle contient. Ces deux méthodes reçoivent en argument un objet de type " String ".
- " setServletURL " permet de modifier l'adresse du servlet. Elle reçoit en argument un objet de type " String " correspondant à la nouvelle adresse.
- " getServletURL " est une méthode sans argument qui renvoie l'adresse courante de la servlet sous forme d'un objet de type " String ".
- Enfin, la méthode statique " remplacementCaractere " reçoit en argument trois objets de type " String " : A, B et C. Elle permet de remplacer dans la chaîne de caractère A toutes les sous chaînes B par la sous chaîne C. C'est cette fonction qui permet donc d'effectuer le codage de symboles particuliers tels que les " / " lorsque le lien doit pointer vers le serveur (Cf. V.5).
d. Les méthodes privées
Ce sont elles qui réalisent le traitement sur les différentes données afin de générer les URL absolues.
- La méthode " decoupageURL " reçoit en argument un objet de type " String ". Celui-ci est analysé et les différentes parties, séparées par le caractère " / ", sont extraites et stockées dans un tableau d'objets " String ". C'est ce dernier que la fonction renvoie.
- Les méthodes " isAdresseEmail " et " isAbsoluteUrl " analysent les chaînes de caractères qu'elles reçoivent en argument et déterminent s'il s'agit respectivement d'une adresse électronique ou d'une URL absolue. Si c'est le cas, elles renvoient la valeur booléenne " true ".
- La méthode " creationAbsoluteURL " effectue les différentes opérations de reconstitution de l'URL décrites dans la partie V. Elle ne prend rien en argument mais renvoie l'URL absolue qu'elle vient de calculer. Remarque : Cette fonction n'effectue aucun codage et n'ajoute pas l'adresse du serveur.
- La méthode " doitPasserParServeur " reçoit en argument une URL, absolue ou relative sous forme d'un objet " String " et détermine si celle-ci doit passer ou non par le serveur. Ci c'est le cas, cette méthode renvoie le booléen " true ".
4. La classe " ModificationPageHTML "
C'est cette classe qui permet de modifier l'ensemble des liens de la page HTML. Elle réalise l'ensemble du processus décrit dans la partie VI. Pour mener à bien sa tâche, elle fait appel aux classes " URLAbsolues " et " ConnectionUrl ".
a. Les données privées
- " adressePage " est un objet de type " String " qui contient l'adresse de la page en cours de traitement.
- " donneesOriginelles " est un objet de type " StringBuffer " qui contient la page non modifiée.
- " donnees " est un objet de type " String " qui contient la page non modifiée.
b. Le constructeur
Il reçoit en argument un objet de type " ConnectionUrl ", objet qui comporte tous les éléments nécessaires à l'instanciation d'une classe " ModificationPageHTML ".
Il détecte si la page qu'il reçoit est une feuille de style (fichier.css) ou une page HTML, selon le cas, la page sera traitée différemment.
c. Les méthodes publiques
Les méthodes " getPage " et " getPageModifiee " permettent respectivement de récupérer, sous forme d'un objet " StringBuffer ", la page HTML non modifiée et celle qui l'a été. Ces deux méthodes ne reçoivent rien en argument.
d. La méthode privée " rechercheLien "
C'est elle qui effectue tout le travail de détection et de remplacement des liens. Elle reçoit en argument cinq objets de type " String " :
- le début de la balise qui doit être traitée
- le flux de données à traiter
- l'attribut à traiter
- deux caractères de fin de chaîne
5. La classe " Projet "
C'est elle qui réalise la liaison entre toutes les classes décrites auparavant. Elle dérive de la classe HttpServlet contenue dans l'archive " servlet.jar " fournie avec Tomcat. Elle ne redéfinit aucun constructeur et ne comporte aucune donnée. Elle est composée de deux méthodes publiques et d'une méthode privée.
a. Les méthodes publiques
- La méthode " doGet " est exécutée par Tomcat lorsqu'il reçoit une requête du type " GET " à l'adresse de la servlet. Cette méthode reçoit en argument un objet " HttpServletRequest ", qui contient le descriptif de la requête, et un objet " HttpServletResponse " qui va permettre à la servlet de renvoyer la réponse.
- La méthode " doPost " réalise la même chose que " doGet " mais pour une requête du type " POST "
Ces deux méthodes analysent la requête puis utilisent les classes définies précédemment pour, rapatrier et modifier les informations avant de mettre à jour la base de données. Lorsqu'une URL est invalide, une page générique est envoyée à l'internaute pour lui proposer de taper une nouvelle adresse.
b. La méthode privée " pageParDefaut "
Elle reçoit en argument un objet de type " PrintWriter ", qui est en fait un flux de sortie, dans lequel elle va envoyer la page d'erreur par défaut. C'est cette méthode qui est utilisée pour envoyer une réponse à l'internaute lorsqu'une URL est invalide.