Canal de recherche Google
Présentation de la maquette
Voici le canal de recherche avec tout d'abord l'interface qui permet de lancer une recherche soit sur Internet, soit sur un site spécifique comme celui de l'université, ici sur le site de l'UVHC.

Puis les résultats de la même recherche "esup-portail" avec les deux types de recherches possibles, la première image étant le résultat de la recherche sur internet, et la seconde celle de la recherche sur le site de l'université.
Installation
L'archive
Une première version est disponible ici
Demande de clef
Pour obtenir une clef, qui est nécessaire pour pouvoir utiliser le service web google, il faut suivre les instructions données à la page :
https://www.google.com/accounts/NewAccount. On obtient l'interface donnée à la figure suivante.

Une fois cette clef obtenue, on peut installer le service sur uPortal.
Attention : d'après les termes d'utilisation des services google, la réponse ne peut pas être mise en forme sans préciser que la recherche a été effectuée par google.
Les termes d'utilisation sont donnés à l'adresse :
https://www.google.com/accounts/TermsOfService.
Il faut accepter ces termes pour créer son compte et obtenir une clef.
Publication du canal
- Mettre à jour le build.properties.
- ant deploy, permet de compiler et de deployer les fichiers dans le serveur d'applications.
- Redémarrer si nécessaire le serveur d'applications pour que les nouvelles classes soient prises en compte.
- Publication du canal :
- La classe du canal est : org.esupportail.portal.channels.CRecherche.CRecherche.
- Les paramètres sont :
- key : valeur_de_la_clef.
- univurl : nom_du_site sur lequel on veut faire les recherches (typiquement le nom du site de l'université).
- nomuniv : nom_de_l'université.
- image : url_image_google (Il y a un gif par defaut, à n'utiliser que pour mettre une autre image porposée par Google).
Si le paramètre nomuniv n'est pas renseigné, l'affichage sera "Recherche sur le site de l'université", s'il est renseigné, ce sera alors par exemple pour nomuniv=l''UVHC : "Recherche sur le site de l'UVHC". Comme le montre l'exemple, il faut doubler les apostrophes puisque uPortal ne sait pas enregistrer le paramètre dans sa base s'il n'y en a qu'un (petit bug dû à l'utilisation de l'apostrophe dans le SQL).
Retrait du canal
Pour retirer le canal il faut le déplublier via l'interface web d'uPortal. Puis pour enlever les classes, etc... il faut utiliser ant undeploy à partir du répertoire source du canal. Cela enlève toutes les classes, feuilles de style, librairie et image relatives à ce canal.
Le web-service Google
Voici les principales instructions à utiliser pour faire une recherche à l'aide du web service google.
//Initialisation du service
GoogleSearch s = new GoogleSearch();
//On donne la clef pour vérifier si on est bien enregistré
s.setKey(key);
s.setStartResult(0);
//le nombre maximum de résultats souhaité
s.setMaxResults(10);
//La requête
s.setQueryString(''recherche à effectuer'');
//On effectue la recherche
GoogleSearchResult r = s.doSearch();
//On récupère la réponse
r.getSearchQuery();
//Le temps de réponse
r.getSearchTime();
//Pour chaque élément de réponse
GoogleSearchResultElement[] elements = r.getResultElements();
if(r.getStartIndex() > 0){
for(int i = r.getStartIndex()-1; i < r.getEndIndex(); i++){
GoogleSearchResultElement result = elements[i];
//on récupère l'url
result.getURL();
//le titre
result.getTitle();
//le snippet
result.getSnippet();
//l'éventuel nom du répertoire google
if (result.getDirectoryTitle() != null && result.getDirectoryTitle().length()>1 ) {
result.getDirectoryTitle();
}
//les catégories de l'éventuel répertoire
GoogleSearchDirectoryCategory cats;
if ( ( cats=result.getDirectoryCategory() ) != null && cats.getFullViewableName().length()>1 ){
cats.getFullViewableName();
}
//Le résumé de la réponse
if (result.getSummary() != null && result.getSummary().length()>1 ){
result.getSummary();
}
}
}
La réponse est ensuite mise en forme en respectant les termes d'utilisation. Dans notre cas elle est envoyée au format XML, puis traitée par une feuille de style pour être affichée au format donné au début du document.