jTomtom

Compilation du code source

Le code source de jTomtom est téléchargeable. Vous pouvez aussi le récupérer via SVN à l’adresse https://jtomtom.svn.sourceforge.net/svnroot/jtomtom

Librairies externe

Pour écrire jTomtom j’ai utilisé des librairies qui ne sont pas fournie avec le source mais que vous pouvez trouvé dans la jar de jTomtom ou télécharger sur le site de leurs éditeurs :

Ces trois librairies sont obligatoire pour pouvoir compiler le source de jTomtom. Il faut donc les inclure dans le classpath du projet.

Version de Java

jTomtom utilise des objets introduit en version 6 de Java, il est donc nécessaire de compiler avec cette version de java.

Développement de connecteurs POIs

Depuis la version 0.0b31, il est possible de développer des plugins pour jTomtom. Le terme "plugin" n’est peut être pas le plus approprié dans la mesure où il faut quand même modifier le jar pour que ça fonctionne mais il n’est pas utile de re-compiler jTomtom en entier. On peut appeler ça des connecteurs pour être plus juste.

Les connecteurs vont permettre d’ajouter des sites de POIs comme Tomtomax ou pdis.es qui diffusent des mises à jour de POIs (radars ou non).
Il va de soit que pour développer ce genre de connecteur, il vous faudra connaitre un minimum (voire plus) le langage Java !
Une autre information importante, pour que cela puisse fonctionner, le site que va supporter ce nouveau connecteur doit fournir les mises à jour sous forme de fichier ZIP. C’est pour l’instant (et sans doute pour longtemps) le seul format supporté).

Dériver la classe RadarsConnector

La première chose à faire est donc de créer une nouvelle classe qui étend la classe org.jtomtom.connector.RadarsConnector. RadarsConnector est une classe abstraite qui doit contenir les fonctions suivantes :

  • public abstract POIsDbInfos getLocalDbInfos(String m_path) throws JTomtomException ;
  • public abstract POIsDbInfos getRemoteDbInfos(Proxy proxy) ;
  • public abstract boolean connexion(Proxy p_proxy, String p_user, String p_password) ;
  • public abstract HttpURLConnection getConnectionForUpdate() ;
  • public abstract HttpURLConnection getConnectionForInstall() ;

POIsDbInfos

Certaines des fonctions retournent un objet POIsDbInfos. Ce dernier est un regroupement des informations suivantes :

  • private Date lastUpdateDate ; // Date de la dernière mise à jour disponible
  • private int poisNumber ; // nombre de POIs disponible dans la mise à jour
  • private String dbVersion ; // Version de la mise à jour

getLocalDbInfos

Cette fonction va chercher sur le GPS les informations concernant l’état actuel des POIs sur la carte dont le chemin est passé en argument. Selon les connecteurs, la façon de déterminer la valeur des différentes informations varie. Pour Tomtomax, un fichier regroupe toutes ces infos, alors que pour pdis.es, la date de la dernière mise à jour est la date du fichier readme de la mise à jour. Toutes les infos ne sont pas toujours facilement disponibles à vous de trouver comment les obtenir.

getRemoteDbInfos

C’est la même chose que getLocalDbInfos sauf que cette fois, on va chercher les informations sur le site et pas sur le GPS. C’est donc un peu plus compliqué. Par exemple, pour Tomtomax, un fichier permet de récupérer facilement ces informations, pour pdis.es, j’ai du parser certaine pages pour en extraire les infos.

connexion

Cette fonction va permettre d’une part de vérifier que le site est bien disponible, d’autre part, cette fonction établie une connexion pour les site qui en demande une. Généralement, cette connexion se fait par l’envoie des identifiants aucun le site répond par l’envoie de cookies de session à utiliser pour les connexion suivante (c’est le cas pour pdis.es).

toString

Il est de bon ton de surcharger cette fonction dans votre connecteur. En effet, c’est le résultat de cette fonction qui détermine se qui est affiché dans la liste de valeur des connecteurs disponible dans l’onglet "Radars".

getConnectionForInstall & getConnectionForUpdate

Ces deux fonctions font à peut de chose près la même chose. Elle donne la connexion pré-paramétré qui permet la récupération du fichier de mise à jour. La plus part des site fournissent deux fichiers, un complet et un partiel, le premier permettant une install depuis un carte vierge le deuxième, moins volumineux permettant seulement une mise à jour de carte déjà installé.
Le HttpURLConnection retourné doit être prêt à l’emploi, si le site nécessite des cookie, ces derniers doivent déjà être dans l’HttpURLConnection, idem pour l’URL du fichier.

Configurer le connecteur

Maintenant que votre classe existe, vous allez devoir modifier le jar pour que le plugin soit visible par jTomtom.
Commencez par compiler votre classe, et mettez le résultat quelque pars dans le classpath (le package org.jtomtom.connector.radars semble être une bonne idée dans la mesure où c’est là que se trouvent déjà les autres connecteurs).

Une fois la classe dans le classpath, il faut ajouter le connecteur dans le fichier de configuration jtomtom.properties qui se trouve dans le jar (org/jtomtom/conf) :

# Radars Connectors
org.jtomtom.radars.connector.fr_FR=org.jtomtom.connector.radars.Tomtomax
org.jtomtom.radars.connector.es_ES=org.jtomtom.connector.radars.PdisDotEs

Chaque connecteur est assigné à une langue. il suffit donc d’ajouter une ligne avec "org.jtomtom.radars.connector." suivie de la langue à associer au nouveau connecteur. Il est possible aussi de remplacer le connecteur par défaut d’une langue par votre nouveau si vous souhaitez utiliser un autre site pour le français par exemple.

# Radars Connectors
org.jtomtom.radars.connector.fr_FR=org.jtomtom.connector.radars.Tomtomax
org.jtomtom.radars.connector.es_ES=org.jtomtom.connector.radars.PdisDotEs
org.jtomtom.radars.connector.us_US=org.jtomtom.connector.radars.USCamera

Voilà, si tout s’est bien passé, vous devriez voir votre connecteur dans la liste des connecteurs disponible de l’onglet radar.
A noter que la langue utilisé par jTomtom est celle de votre OS, il est toutes fois possible de la forcer en ajoutant la ligne suivante dans le fichier de propriétés.

org.jtomtom.locale=us_US

C’est alors us_US qui sera pris comme langue par défaut et USCamera comme connecteur par défaut.