Class CrawlerCallbackHandler

java.lang.Object
  |
  +--javax.swing.text.html.HTMLEditorKit.ParserCallback
        |
        +--CrawlerCallbackHandler

public class CrawlerCallbackHandler
extends javax.swing.text.html.HTMLEditorKit.ParserCallback


Field Summary
protected  java.lang.String cur_link
          Le lien en cours de traitement.
protected  java.util.Properties[] dicos
          Tableau des dictionnaires des mots à ignorés lors du parsage.
protected  java.util.Hashtable[] ht_tab
          Tableau des tables de hachage dans lesquelles vont être stockés tous les liens.
protected  boolean isInsideLink
           
protected  java.lang.String root
          Le chemin du répertoire contenant le fichier source de la page à parser.
protected  java.lang.String short_root
          Le chemin du répertoire contenant le fichier source de la page à parser sans l'url du serveur.
 
Fields inherited from class javax.swing.text.html.HTMLEditorKit.ParserCallback
IMPLIED
 
Constructor Summary
CrawlerCallbackHandler(java.util.Hashtable[] ht_tab, java.util.Properties[] dicos, java.lang.String root)
          Construit un nouvel objet CrawlerCallbackHandler.
 
Method Summary
 void handleEndTag(javax.swing.text.html.HTML.Tag tag, int i)
          Répère la fin d'un tag double (c'est à dire un tag qu'on doit refermer).
 void handleSimpleTag(javax.swing.text.html.HTML.Tag tag, javax.swing.text.MutableAttributeSet set, int i)
          Répère les balises simples.
 void handleStartTag(javax.swing.text.html.HTML.Tag tag, javax.swing.text.MutableAttributeSet set, int i)
          Répère le début d'un tag double (c'est à dire un tag qu'on doit refermer).
 void handleText(char[] aChar, int i)
          Lit le texte html associé à un lien.
protected  void insert(java.util.Hashtable ht, java.lang.String lien, java.lang.String[] mots)
          Insère dans une table de hachage un lien associé à un ou plusieurs mot(s) Tous les mots passés en argument à la méthode ne sont pas forcément insérés dans la table de hachage.
protected  int language()
          Détecte la langue employée dans la page qu'on est en train de parser.
protected  java.lang.String simplifyPath(java.lang.String path)
          Transforme un chemin absolu de fichier en un chemin canonique, c'est à dire un chemin commençant par '/' et ne comportant aucun '.
protected  java.lang.String simplifyUrl(java.lang.String s_url)
          Transforme une url absolue en une url canonique, c'est à dire une url dont le chemin est canonique.
 
Methods inherited from class javax.swing.text.html.HTMLEditorKit.ParserCallback
flush, handleComment, handleEndOfLineString, handleError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

isInsideLink

protected boolean isInsideLink

ht_tab

protected java.util.Hashtable[] ht_tab
Tableau des tables de hachage dans lesquelles vont être stockés tous les liens.


dicos

protected java.util.Properties[] dicos
Tableau des dictionnaires des mots à ignorés lors du parsage.


root

protected java.lang.String root
Le chemin du répertoire contenant le fichier source de la page à parser.

Par exemple si la page à parser est http://www.server.fr/rep1/rep2/fic.html alors root contiendra http://www.server.fr/rep1/rep2/.

Ce champ est nécessaire pour transformer les chemins relatifs rencontrés dans cette page en chemin absolus.


short_root

protected java.lang.String short_root
Le chemin du répertoire contenant le fichier source de la page à parser sans l'url du serveur.

Par exemple si la page à parser est http://www.server.fr/rep1/rep2/fic.html alors short_root contiendra /rep1/rep2/.

Ce champ est nécessaire pour transformer les chemins relatifs rencontrés dans cette page en chemin absolus pour les images.


cur_link

protected java.lang.String cur_link
Le lien en cours de traitement.

Cette valeur n'est valide que lorsque isInsideLink vaut true.

Constructor Detail

CrawlerCallbackHandler

public CrawlerCallbackHandler(java.util.Hashtable[] ht_tab,
                              java.util.Properties[] dicos,
                              java.lang.String root)
Construit un nouvel objet CrawlerCallbackHandler.

Parameters:
ht_tab - Tableau des tables de hachage dans lesquelles vont être stockés tous les liens.
dicos - Tableau des dictionnaires des mots à ignorés lors du parsage.
root - Le chemin du répertoire contenant le fichier source de la page à parser.
See Also:
ht_tab, dicos, root
Method Detail

handleStartTag

public void handleStartTag(javax.swing.text.html.HTML.Tag tag,
                           javax.swing.text.MutableAttributeSet set,
                           int i)
Répère le début d'un tag double (c'est à dire un tag qu'on doit refermer). Cette méthode ne traite que les tag A c'est à dire les hyperliens.

Une fois qu'un tag de ce type est trouvé, la méthode se décompose en trois parties:

Overrides:
handleStartTag in class javax.swing.text.html.HTMLEditorKit.ParserCallback
See Also:
simplifyUrl(String)

handleEndTag

public void handleEndTag(javax.swing.text.html.HTML.Tag tag,
                         int i)
Répère la fin d'un tag double (c'est à dire un tag qu'on doit refermer). Cette méthode ne traite que les tag /A c'est à dire les hyperliens.

Elle permet d'indiquer à la méthode void handleText(char[],int) qu'on est sorti du lien.

Overrides:
handleEndTag in class javax.swing.text.html.HTMLEditorKit.ParserCallback

handleSimpleTag

public void handleSimpleTag(javax.swing.text.html.HTML.Tag tag,
                            javax.swing.text.MutableAttributeSet set,
                            int i)
Répère les balises simples.
Cette méthode ne considère que les balises de type IMG dont le champ alt n'est pas vide.

Lorsqu'une telle balise est trouvée:

Overrides:
handleSimpleTag in class javax.swing.text.html.HTMLEditorKit.ParserCallback
See Also:
simplifyUrl(String), simplifyPath(String), insert(Hashtable,String,String[])

handleText

public void handleText(char[] aChar,
                       int i)
Lit le texte html associé à un lien.

Cette méthode ne considère que le texte situé entre les tags doubles A et /A grâce au champ isInsideLink.

Elle se décompose en deux parties:

Overrides:
handleText in class javax.swing.text.html.HTMLEditorKit.ParserCallback
See Also:
isInsideLink, insert(Hashtable,String,String[])

simplifyPath

protected java.lang.String simplifyPath(java.lang.String path)
                                 throws java.io.FileNotFoundException
Transforme un chemin absolu de fichier en un chemin canonique, c'est à dire un chemin commençant par '/' et ne comportant aucun '.' ou '..'.

Par exemple:
Transforme
/./rep1/rep2/../rep3/rep4/../../truc
en
/rep1/truc.

Parameters:
path - Le chemin absolu à cononiser.
Returns:
Le chemin canonique
Throws:
java.io.FileNotFoundException - Si le chemin absolu passé en argument est incorrect (par ex /rep1/.././../truc).

simplifyUrl

protected java.lang.String simplifyUrl(java.lang.String s_url)
                                throws java.io.FileNotFoundException,
                                       java.net.MalformedURLException
Transforme une url absolue en une url canonique, c'est à dire une url dont le chemin est canonique.

Le chemin d'une url est par exemple pour http://www.somewhere.com/rep1/rep2/index.html , /rep1/rep2/index.html.

Pour savoir ce qu'est un chemin canonique, voir simplifyPath(String).

Returns:
L'url canonique
Throws:
java.io.FileNotFoundException - Si le chemin de l'url passée en argument est incorrect (par ex /rep1/.././../truc).
java.net.MalformedURLException - Si l'url est mal formée.
See Also:
simplifyPath(java.lang.String)

language

protected int language()
Détecte la langue employée dans la page qu'on est en train de parser.

Cette méthode reste entièrement à faire (dans une version ultérieure) et pour le moment le dictionnaire français est systématiquement retourné.

Returns:
Une constante symbolisant la langue de la page web.
See Also:
Crawler.DICO_FR, Crawler.DICO_EN, Crawler.DICO_DE

insert

protected void insert(java.util.Hashtable ht,
                      java.lang.String lien,
                      java.lang.String[] mots)
               throws java.lang.NullPointerException
Insère dans une table de hachage un lien associé à un ou plusieurs mot(s)

Tous les mots passés en argument à la méthode ne sont pas forcément insérés dans la table de hachage. En effet, les mots trouvés dans le dictionnaire de la langue de la page sont ignorés.

Cette fonction peut être utilisée aussi bien par getPages(), getMails() ou getPict().

Remarque: Le résultat de plusieurs appels à cette méthode pour le même lien est équivalent à un seul appel avec dont le troisième paramètre serait la concaténation du troisième paramètre de chaque appel séparé.

Parameters:
ht - la table de hachage dans laquelle on veut réaliser l'insertion
lien - le lien peut être une url de page web, une adresse mail ou un nom (avec chemin absolu) d'image
mots - un ensemble de mots référençant le lien
Throws:
java.lang.NullPointerException - si l'un des paramètres est null
See Also:
dicos