jeudi 10 décembre 2009

Intégration de l’API Zoho Report dans Spring

Zoho Report permet de réaliser facilement en ligne des rapports et graphiques efficaces.
Une API REST est disponible pour soumettre ou récupérer des données dans ou depuis Zoho Report. Ce format n’est pas le plus adapté pour manipuler un nombre important de données organisées au sein d’une base de données. Zoho CloudSQL permet d’effectuer ces manipulations par requête SQL. Un driver JDBC vient compléter le tout pour offrir une véritable connectivité à cette base de donnée “on the cloud”.
Cependant, CloudSQL et donc le driver JDBC ne permettent, pour l’instant, que de la récupération de données (SELECT).
Pour utiliser complètement les possibilités de Zoho Report, le mieux est donc d’utiliser les librairies clientes disponibles (Java, Python et Google App Engine).
Pour Java, pour utiliser la librairie, il faut :
  • télécharger la librairie sur cette page
  • avoir un compte Zoho (LOGINNAME,PASSWORD)
  • demander une clé API (APIKEY)
  • une base de donnée crée (DATABASENAME) avec au mois une table (TABLENAME)
ReportClient rc = new ReportClient(APIKEY);
rc.login(LOGINNAME,PASSWORD);
String uri = getURI(LOGINNAME,DATABASENAME,TABLENAME);
rc.addRow(uri, new HashMap(), null);
Le but ici est d’utiliser Spring pour simplifier la gestion du client et de ses constantes de configuration (APIKEY, LOGINNAME, PASSWORD et DATABASENAME) :
ZohoReportClientWrapper rc = (ZohoReportClientWrapper) ctx.getBean("zohoClient");
rc.login();
rc.addRow("sampleTable", new HashMap());
Avec comme fichier de configuration Spring :

<bean id="zohoConfig" class="ZohoConfig">
<property name="apiKey" value="yourAPIKey"/>
<property name="databaseName" value="yourDBName"/>
<property name="loginName" value="yourZohoLogin"/>
<property name="password" value="yourZohoPasswd"/> 
</bean>

<bean id="zohoClient" class="ZohoReportClientWrapper" init-method="init">
<property name="config" ref="zohoConfig"/> 
</bean>
Pour cela, j’ai crée un projet Google : spring-zohoreport