Calendrier de vacances avec Java

January 7th, 2012 | by | geek, java, web

Jan
07

Le but de mon code est de vous permettre d’avoir une visibilité sur les jours de vacances en France dans vos applications et surtout l’utilisation d’un référentiel des jours fériés qui est Google Calendar.

Pour cela, nous allons récupérer à travers le service de google un fichier au format ICS contenant la liste des événements tout au long de l’année courante.

Après une petite recherche sur google, nous arrivons sur le projet iCal4j offrant une petite bibliothèque capable de nous aider à exploiter les fichiers ICS.

Pour l’utilisation de cette Bibliothèque, nous l’avons ajouté dans nos dépendances maven à travers le code suivant :

  1. <dependency>
  2.    <groupId>org.mnode.ical4j</groupId>
  3.    <artifactId>ical4j</artifactId>
  4.    <version>1.0.2</version>
  5. </dependency>



Par la suite cette petite application en guise de démonstration.

  1. package com.nihed;
  2.  
  3. import java.io.InputStream;
  4. import java.net.URL;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.Iterator;
  8. import net.fortuna.ical4j.data.CalendarBuilder;
  9. import net.fortuna.ical4j.model.Calendar;
  10. import net.fortuna.ical4j.model.Component;
  11. import net.fortuna.ical4j.model.Property;
  12.  
  13. /**
  14.  * @author Nihed MBAREK
  15.  * @version 0.1
  16.  *
  17.  */
  18. public class App {
  19.    
  20.     //Initialisation des constantes
  21.     public static final String DATE_BEGIN = "20120101";
  22.     public static final String DATE_END = "20121231";
  23.     public static final String DD_MM_YYYY = "dd/MM/yyyy";
  24.     public static final String DTSTART = "DTSTART";
  25.     public static final String GOOGLE_URL = "https://www.google.com/"
  26.             + "calendar/ical/"
  27.             + "fr.french%23holiday%40group.v.calendar.google.com"
  28.             + "/public/basic.ics";
  29.     public static final String SUMMARY = "SUMMARY";
  30.     public static final String pattern = "yyyyMMdd";
  31.  
  32.     public static void main(String[] args) {
  33.         try {
  34.             //Init
  35.             final Date dateEnd = (new SimpleDateFormat(pattern)).parse(DATE_END);
  36.             final Date dateBegin = (new SimpleDateFormat(pattern)).parse(DATE_BEGIN);
  37.  
  38.             //Mise en place du stream pour la récupération du fichier ICS
  39.             final InputStream stream = new URL(GOOGLE_URL).openStream();
  40.             CalendarBuilder builder = new CalendarBuilder();
  41.             //Consommation du Stream et remplissage de l’objet calendar
  42.             Calendar calendar = builder.build(stream);
  43.             //Parcour du calendar pour récuperer les évenements
  44.             for (Iterator it = calendar.getComponents().iterator(); it.hasNext();) {
  45.                 Component component = (Component) it.next();
  46.                 //Récupération de la date de l’evènement
  47.                 //à travers la propriété DTSTART
  48.                 final String dtStartValue = component.getProperty(DTSTART).getValue();
  49.                 //Récupération du déscriptif de l’evènement
  50.                 //à travers la propriété SUMMARY
  51.                 final String summaryValue = component.getProperty(SUMMARY).getValue();
  52.                 Date dateEvent = (new SimpleDateFormat(pattern)).parse(dtStartValue);
  53.                 //Test si la date est bien dans notre interval
  54.                 if (dateEvent.after(dateEnd) || dateEvent.before(dateBegin)) {
  55.                     continue;
  56.                 }
  57.                 //Converstion de la date dans un format plus convivial
  58.                 String dateStartValue = (new SimpleDateFormat(DD_MM_YYYY)).format(dateEvent);
  59.                 //Affichage de notre message
  60.                 System.out.println(summaryValue + " tombe le " + dateStartValue + "\n");
  61.             }
  62.  
  63.         } catch (Exception ex) {
  64.             ex.printStackTrace();
  65.         }
  66.     }
  67. }
  68.  



J’espère que le code est clair, sinon je suis disponible pour répondre à vos commentaires.


No Comments »

Apprendre Ruby et Rails

September 19th, 2011 | by | geek, ruby

Sep
19

Pour apprendre un nouveau langage de programmation rien de mieux que de l’installer :) mais par la suite il faudrait penser à chercher un bon livre et de bons tutoriels sur internet.
Aujourd’hui, je vais partager avec vous deux liens que je trouve très intéréssant et indispensable pour commencer.
Le premier, http://tryruby.org/ est un interpréteur en ligne capable de vous aider à découvrir la richesse du langage ruby.

Le deuxième est un site de formation, http://www.codeschool.com/,offrant un cour gratuit de Rails ayant pour nom Rails for Zombies. Ce cour est très bien fait pour commencer et comprendre la logique du framework Ruby on Rails.
Pour finir, il faudrait faire un tour du coté des bibliothèques pour dénicher un bon livre.

No Comments »

Google +1

June 2nd, 2011 | by | geek, web

Jun
02

Google offre enfin le moyen pour les utilisateurs du web d’inclure dans leurs pages le fameux “+1″ capable de rendre le moteur de recherche plus à l’écoute de ses utilisateurs.
Pour cela, il faut passer par la page http://www.google.com/intl/fr/webmasters/+1/button/ ou vous pourriez configurer votre bouton. Par la suite
l’ajouter à vos page à travers une section pour le header :

  1. <script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>

et une autre pour votre contenu :

  1. <g:plusone></g:plusone>

Pour ce qui est de WordPress, j’ai ajouté pour pouvoir dynamiser l’url au niveau Main Index Template(de mon contenu):

  1. <g:plusone size="medium" href="<?php the_permalink() ?>"></g:plusone>

Sinon une section plusones est disponible au niveau des profils Google pour pouvoir avoir une idée sur les votes d’une personne https://profiles.google.com/nihedmm/plusones.

No Comments »

TEDxCarthage pour iPhone

April 21st, 2011 | by | geek, iphone

Apr
21

L’application TEDxCarthage pour iPhone fut lancé pour l’event afin d’offrir des services tel que des informations sur la nature de l’évènement et des participants, les volontaires et le programme. Pour le développement, nous avons utilisé l’outil Appcelerator Titanium™.
Appcelerator Titanium™ est une platforme libre capable d’offrir des applications desktop et mobile en utilisant le langage JavaScript. Pour le mobile, il offre le support l’iPhone et de l”android (la version blackberry est encore en beta test pour les possesseurs d’un compte pro chez la compagnie Appcelerator). On n’a pas besoin d’apprendre le langage Objective-C pour utiliser cette plateforme mais l’avoir serait un plus.
Lors de la génération d’un projet, un répertoire Ressources est crée contenant le travail qui sera transmit vers les cibles que l’utilisateur aura définit à la configuration. Personnellement, pour l’exploitation de ce répertoire, j’utilise l’outil TextMate que je trouve le mieux adapté pour les utilisateurs Mac.
Le fichier principale (l’équivalent du main pour les autres langages) est app.js.
Je vous laisse le soin de tester l’application TEDx Carth et prêt à répondre à toutes vos questions techniques.

PS: le code utilisé pour l’application iPhone a été reprise par l’équipe Android pour livrer leur application.

No Comments »