Class HttpVerifThread

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--HttpVerifThread
All Implemented Interfaces:
java.lang.Runnable

public class HttpVerifThread
extends java.lang.Thread

Cette classe génère un processus qui pour toutes les entrées de la tables Http (c'est à dire tous les liens trouvés) vérifie que la page correspondante existe et l'insère dans la table Page si elle n'y est pas déjà. Dans le cas contraire ce lien est supprimé de la base de données.

Rem: La suppression d'une lien entraine également la suppression de toutes les entrées associées à ce lien dans la table AppHttp.

Rem: Les processus engendrés par cette classe sont appelés dans le reste de cette documentation 'processus de vérification des liens'.

Les processus de vérificatioin de liens n'ont pas été conçu pour fonctionner en parallèle avec les autres processus. Pour cela, il faudrait seuleemnt rajouter aux processus de navigation la capacité d'indiquer a ces processus qu'un nouveau lien http à été inséré dans la bd (comme c'est le cas pour les processus de vérification de page).

See Also:
"Pour plus d'information sur le déroulement d'une suppression d'un lien, voir la fonction supp_lien(INTEGER) dans bd/crawler.sql."

Field Summary
protected  Pgsql bd
          Objet permettant de communiquer avec la base de données du crawler.
protected  int BOUCLE_MAX
          Nombre maximum de tentatives de répétitions de requêtes avant ne soit considérée comme échouée.
protected  boolean first_currval
          Drapeau indiquant si une requête SELECT currval('page_id_page_seq') a déjà été envoyée.
protected  int id_lien
          Identificateur du lien à vérifier et éventuellement à supprimer.
protected  int id_max
          Le plus grand identificateur de page utilisé dans la base de données.
protected  java.io.PrintStream outLog
          Flux d'entrée sur le fichier de journalisation.
protected  boolean to_finish
          Drapeau signalant que le processus doit s'arrêter.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
HttpVerifThread(java.lang.String nom, java.io.PrintStream outLog)
          Construit un nouvel objet HttpVerifThread.
 
Method Summary
protected  boolean existId(int id)
          Vérifie que l'identificateur de lien passé en argument existe bien dans la base de données du crawler, c'est à dire qu'il correspond à un lien existant.
 void finish()
          Permet un arrêt propre du processus.
protected  int maxId()
          Recherche le plus grand identificateur de page utilisé dans la base de données.
protected  void newMaxId()
          Recherche le nouvel identificateur maximum d'une page dans la base de données.
protected  int nextId()
          Retourne le plus petit identificateur de lien valide dans la base de données du crawler.
 void run()
          Méthode déterminant le fonctionnement du processus.
protected  int suppLien(java.lang.String sLien)
          Supprime un lien n'existant plus sur le net de la base de données du crawler.
protected  int verifLien()
          Vérifie que la page correspondant à l'identificateur courant (id_lien) existe sur le net et supprime le lien de la base de données si ce n'est pas le cas.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BOUCLE_MAX

protected final int BOUCLE_MAX
Nombre maximum de tentatives de répétitions de requêtes avant ne soit considérée comme échouée. En effet, il est possible pour divers raisons qu'une requête échoue alors qu'elle devrait réussir.

See Also:
Constant Field Values

to_finish

protected boolean to_finish
Drapeau signalant que le processus doit s'arrêter.


outLog

protected java.io.PrintStream outLog
Flux d'entrée sur le fichier de journalisation.


id_lien

protected int id_lien
Identificateur du lien à vérifier et éventuellement à supprimer.


id_max

protected int id_max
Le plus grand identificateur de page utilisé dans la base de données.


first_currval

protected boolean first_currval
Drapeau indiquant si une requête SELECT currval('page_id_page_seq') a déjà été envoyée. En effet, tant que cela n'a pas été fait on ne peut pas faire de requête SELECT nextval('page_id_page_seq')


bd

protected Pgsql bd
Objet permettant de communiquer avec la base de données du crawler.

Constructor Detail

HttpVerifThread

public HttpVerifThread(java.lang.String nom,
                       java.io.PrintStream outLog)
Construit un nouvel objet HttpVerifThread.

Parameters:
nom - le nom du processus
outLog - le flux permettant d'écrire dans le fichier de journalisation
See Also:
outLog
Method Detail

finish

public void finish()
Permet un arrêt propre du processus.

L'arrêt n'est pas immédiat, il s'agit plutôt d'une demande d'arrêt permettant au processus de terminer ce qu'il est en train de faire et l'empéchant d'enchainer sur une nouvelle tâche. Il existe cependant un cas ou l'arrêt est quasiment immédiat: celui où le processus est bloqué en attente qu'au moins une page soit insérée dans la base de données. Le processus est alors sorti de sont attente et est terminé.


maxId

protected int maxId()
             throws java.sql.SQLException
Recherche le plus grand identificateur de page utilisé dans la base de données.

Returns:
Le plus grand identificateur de page utilisé dans la base de données.
Throws:
java.sql.SQLException - En cas d'erreur engendrant l'interruption du processus

newMaxId

protected void newMaxId()
                 throws java.sql.SQLException
Recherche le nouvel identificateur maximum d'une page dans la base de données.

Cette méthode permet de mettre à jour le champ id_max.

Throws:
java.sql.SQLException - En cas d'erreur de communication avec la base de données
See Also:
id_max

existId

protected boolean existId(int id)
                   throws java.sql.SQLException
Vérifie que l'identificateur de lien passé en argument existe bien dans la base de données du crawler, c'est à dire qu'il correspond à un lien existant.

Parameters:
id - l'identificateur de lien dont on veut vérifier l'existance.
Returns:
  • true si l'identificateur existe.
  • false dans le cas contraire.
Throws:
java.sql.SQLException - En cas d'erreur de communication avec la base de données

nextId

protected int nextId()
Retourne le plus petit identificateur de lien valide dans la base de données du crawler.

Returns:
  • le plus petit identificateur de lien valide en cas de succès.
  • -1 en cas d'échec

suppLien

protected int suppLien(java.lang.String sLien)
                throws java.sql.SQLException
Supprime un lien n'existant plus sur le net de la base de données du crawler.

Le lien supprimé est le lien correspondant à l'identificateur de lien courant stocké dans le champ id_lien. Cette méthode fait appel à la fonction INTEGER supp_lien(INTEGER) de la bd pour supprimer le lien et ses entrées dans la table AppHttp.

Parameters:
sLien - l'url du lien à supprimer (utilisé uniquement pour le fichier de journalisation).
Returns:
La valeur retournée par la fonction supp_lien de la base de données.
Throws:
java.sql.SQLException - En cas de problème de communication avec la base de données.
See Also:
"Pour en savoir plus sur la suppression d'une lien, voir la fonction supp_lien dans le fichier crawler.sql."

verifLien

protected int verifLien()
                 throws java.sql.SQLException
Vérifie que la page correspondant à l'identificateur courant (id_lien) existe sur le net et supprime le lien de la base de données si ce n'est pas le cas.

Returns:
La valeur retournée par la fonction supp_lien de la base de données.
Throws:
java.sql.SQLException - En cas de problème de communication avec la base de données.
See Also:
suppLien(java.lang.String), "Pour en savoir plus sur la suppression d'une lien, voir la fonction supp_lien dans le fichier crawler.sql."

run

public void run()
Méthode déterminant le fonctionnement du processus.

La majorité des champs de l'objet sont initialisés dans le constructeur, cependant certains le sont dans cette méthode:

La tâche de ce processus se décompose en trois étapes:

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread