|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.lang.Thread | +--HttpVerifThread
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).
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 |
protected final int BOUCLE_MAX
protected boolean to_finish
protected java.io.PrintStream outLog
protected int id_lien
protected int id_max
protected boolean first_currval
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')
protected Pgsql bd
Constructor Detail |
public HttpVerifThread(java.lang.String nom, java.io.PrintStream outLog)
HttpVerifThread
.
nom
- le nom du processusoutLog
- le flux permettant d'écrire dans le fichier de journalisationoutLog
Method Detail |
public void finish()
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é.
protected int maxId() throws java.sql.SQLException
java.sql.SQLException
- En cas d'erreur engendrant l'interruption du processusprotected void newMaxId() throws java.sql.SQLException
Cette méthode permet de mettre à jour le champ id_max
.
java.sql.SQLException
- En cas d'erreur de communication avec la base de donnéesid_max
protected boolean existId(int id) throws java.sql.SQLException
id
- l'identificateur de lien dont on veut vérifier l'existance.
true
si l'identificateur existe.
false
dans le cas contraire.
java.sql.SQLException
- En cas d'erreur de communication avec la base de donnéesprotected int nextId()
protected int suppLien(java.lang.String sLien) throws java.sql.SQLException
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
.
sLien
- l'url du lien à supprimer (utilisé uniquement pour le fichier de journalisation).
supp_lien
de la base de données.
java.sql.SQLException
- En cas de problème de communication avec la base de données.protected int verifLien() throws java.sql.SQLException
id_lien
) existe
sur le net et supprime le lien de la base de données si ce n'est pas le cas.
supp_lien
de la base de données.
java.sql.SQLException
- En cas de problème de communication avec la base de données.suppLien(java.lang.String)
,
"Pour en savoir plus sur la suppression d'une lien, voir la fonction supp_lien
dans le fichier crawler.sql."public void run()
La majorité des champs de l'objet sont initialisés dans le constructeur, cependant certains le sont dans cette méthode:
bd
)
id_max
)
run
in interface java.lang.Runnable
run
in class java.lang.Thread
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |