dosage tegretol

Mar 8

Spring Data – MongoDB Sample

MongoDB est un SGBDOD (système de gestion de base de données orientée documents). C’est une solution NoSQL utilisé par plusieurs sociétés telque MTV, NY-Times ou SourceForge.

L’exemple que je vais présenter est une application Maven utilisant le framework Spring Data MongoDB afin de communiquer avec le SGBDOD et de faire les requêtes de bases à savoir l’insertion, la suppression, et la recherche.

La première étape est d’ajouter les dépendances maven :

  1. <repositories>
  2.         <repository>
  3.             <id>spring-milestone</id>
  4.             <name>Spring Maven MILESTONE Repository</name>
  5.             <url>http://maven.springframework.org/milestone</url>
  6.         </repository>
  7.     </repositories>
  8.     <dependencies>
  9.         <dependency>
  10.             <groupId>junit</groupId>
  11.             <artifactId>junit</artifactId>
  12.             <version>4.8.2</version>
  13.             <scope>test</scope>
  14.         </dependency>
  15.         <dependency>
  16.             <groupId>org.springframework</groupId>
  17.             <artifactId>spring-core</artifactId>
  18.             <version>3.1.1.RELEASE</version>
  19.         </dependency>
  20.         <dependency>
  21.             <groupId>org.springframework</groupId>
  22.             <artifactId>spring-context</artifactId>
  23.             <version>3.1.1.RELEASE</version>
  24.         </dependency>
  25.         <dependency>
  26.             <groupId>org.mongodb</groupId>
  27.             <artifactId>mongo-java-driver</artifactId>
  28.             <version>2.7.3</version>
  29.         </dependency>
  30.         <dependency>
  31.             <groupId>org.springframework.data</groupId>
  32.             <artifactId>spring-data-mongodb</artifactId>
  33.             <version>1.0.1.RELEASE</version>
  34.         </dependency>
  35.         <dependency>
  36.             <groupId>cglib</groupId>
  37.             <artifactId>cglib</artifactId>
  38.             <version>2.2.2</version>
  39.         </dependency>
  40.     </dependencies>

Pour commencer, nous allons créer une classe qui représente l’objet qu’on devra stocker. Dans notre cas d’étude, ce sera la classe Personne avec les attributs id, nom et prenom.

  1. package com.nihed.mongodbdemo;
  2.  
  3. public class Personne {
  4.    
  5.     private int id;
  6.     private String nom;
  7.     private String prenom;
  8.  
  9.  
  10.     public Personne(int id, String nom, String prenom) {
  11.         this.id = id;
  12.         this.nom = nom;
  13.         this.prenom = prenom;
  14.     }
  15.     //Getter and Setter
  16.    
  17.    
  18. }

Par la suite, nous allons configurer la connexion à notre base de donnée MongoDB, nous supposons que c’est une instance de base en local sur le port de base à savoir 27017.

  1. package com.nihed.mongodbdemo;
  2.  
  3. import org.springframework.context.annotation.Configuration;
  4. import com.mongodb.Mongo;
  5. import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
  6.  
  7.  
  8. @Configuration
  9. public class SpringMongoConfig extends AbstractMongoConfiguration {
  10.  
  11.     @Override
  12.     public String getDatabaseName() {
  13.         return "LocalDatabase";
  14.     }
  15.  
  16.     @Override
  17.     public Mongo mongo() throws Exception {
  18.         return new Mongo("localhost");
  19.     }
  20.    
  21. }

Enfin, voila le main avec nos exemples d’insertion suppression et recherche.

  1. package com.nihed.mongodbdemo;
  2.  
  3. import java.util.List;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  6. import org.springframework.data.mongodb.core.MongoOperations;
  7. import org.springframework.data.mongodb.core.query.Criteria;
  8. import org.springframework.data.mongodb.core.query.Query;
  9.  
  10. /**
  11.  * Spring Data MongoDB Sample
  12.  *
  13.  */
  14. public class App {
  15.  
  16.     public static void main(String[] args) {
  17.         ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
  18.  
  19.         MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
  20.  
  21.         //Insert
  22.         {
  23.             Personne personne1 = new Personne(1, "nom1", "prenom1");
  24.             Personne personne2 = new Personne(2, "nom2", "prenom2");
  25.             mongoOperation.save(personne1);
  26.             mongoOperation.save(personne2);
  27.         }
  28.         //Select *
  29.         {
  30.             System.out.println("* select * :");
  31.             List<Personne> personnes = mongoOperation.findAll(Personne.class);
  32.             for (Personne personne : personnes) {
  33.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  34.             }
  35.         }
  36.  
  37.         //select where nom like %1
  38.         {
  39.             System.out.println("* select where nom=nom1 :");
  40.             List<Personne> personnes = mongoOperation.find(new Query(Criteria.where("nom").regex(".*1")), Personne.class);
  41.             for (Personne personne : personnes) {
  42.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  43.             }
  44.         }
  45.  
  46.         //delete where nom like %1
  47.         {
  48.             System.out.println("* delete where nom=nom1");
  49.             mongoOperation.remove(new Query(Criteria.where("nom").regex(".*1")), Personne.class);
  50.         }
  51.  
  52.         //Select *
  53.         {
  54.             System.out.println("* select * :");
  55.             List<Personne> personnes = mongoOperation.findAll(Personne.class);
  56.             for (Personne personne : personnes) {
  57.                 System.out.println(personne.getId() + " " + personne.getNom() + " " + personne.getPrenom());
  58.             }
  59.         }
  60.  
  61.     }
  62. }




1 comment

Jan 24

Yosemite HD

Category: Video

Jan 7

Calendrier de vacances avec Java

Category: geek,java,Web

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

Dec 22

6 mois

Category: perso

Ça fait maintenant presque 6 mois que je suis à Paris, Paris la ville lumière, la ville ou l’amour est à chaque coin de rue. Je suis venu avec l’objectif de travailler et d’apprendre plus. Jusqu’à maintenant, j’ai réussi à montrer mes qualités d’informaticien et de photographe. En effet, beaucoup de personnes s’intéressent à mon travail et à mes connaissances du lundi au vendredi mais pour le week-end, je préfère les photos, cinéma et découverte de mon milieu. Théoriquement, si je dois appliquer mes connaissances, ce sera un dashboard de KPI’s qui peuvent me dire si je suis sur le bon chemin mais je préfère laisser mon futur à dieu qui se chargera de le remplir espérant par le bonheur. Ce soir, je me suis dit que ce serait bien d’écrire ces quelques lignes de mon lit à travers les nouvelles technologies( iPhone, wifi, wordpress, …). En plus, à la base ce blog devait parler que de high-tech mais voilà que je me mette de décrire mes sentiments. Peut être, l’amour est derrière tout cela. Pour finir, ça m’a fait plaisir d’écrire cette succession de lettres que ressemble pour mon cœur à une succession de notes musical.

No comments

Sep 19

Apprendre Ruby et Rails

Category: geek,Ruby

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

Sep 19

Techno Parade Paris 2011

Category: music,perso,Photo,Video

Rien de beau qu’une techno parade pour faire de belles photos. :)
je le prouve en partageant avec vous la vidéo et le lien de mon album.

No comments

Aug 8

Un robot twitter avec Ruby

Category: Uncategorized

Rien de mieux qu’un petit robot twitter pour répondre au demandes de vos amis. Mon idée était de permettre à travers un robot de répondre à des questions mathématiques à savoir résoudre des expressions simples. du genre :

#nihedcalcul 3+5

Par la suite pour ce genre de projet, rien de mieux que Ruby qui offre une énorme bibliothèque de gem’s capable de vous aider dans presque n’importe quelle intégration.
Le résultat est ce code bien commenté (j’espère):

  1. require ‘rubygems’
  2. require ‘twitter’
  3. require ‘mysql’
  4. #configuration Oauth
  5. Twitter.configure do |config|
  6.   config.consumer_key = ‘consumer_key’
  7.   config.consumer_secret = ‘consumer_secret’
  8.   config.oauth_token = ‘oauth_token’
  9.   config.oauth_token_secret = ‘oauth_token_secret’
  10. end
  11. #instantiation des objets
  12. client = Twitter::Client.new
  13. search = Twitter::Search.new
  14. #connexion à la base de donnée
  15. dbh = Mysql.real_connect("127.0.0.1", "user", "password", "database")
  16. puts "\n"
  17. #recherche des requêtes
  18. search.containing("#nihedcalcul").result_type("recent").each do |r|
  19.   puts "#{r.from_user}: #{r.id}"
  20.   #enlèvement des caractères superflux
  21.   req=r.text.gsub(/[@%#a-zA-Z]/,"")
  22.   #recherche si la requête a été traité
  23.   res=dbh.query("select count(*) count from sa7achribtek where id=’#{r.id}’");
  24.  
  25.   if(res.fetch_hash["count"].to_s== "1")
  26.     puts "existe"  
  27.   else
  28.     puts "n’existe pas #{req}"
  29.     #Cas non traité
  30.     begin
  31.       #Répondre au tweeple
  32.       client.update("@#{r.from_user} #{req}="+eval(req).to_s)
  33.       puts("@#{r.from_user} #{req}="+eval(req).to_s)
  34.       #mecanisme d’exception de ruby
  35.     rescue Exception=>e
  36.       begin
  37.       client.update("@#{r.from_user}  yezzi e7chem")
  38.       puts("@#{r.from_user} yezzi e7chem ")
  39.       rescue Exception=>e1
  40.       end
  41.     end
  42.     dbh.query("insert into sa7achribtek values(‘#{r.id}’)");
  43.   end  
  44. end
  45. #fermeture de la base
  46. dbh.close if dbh
  47. print ‘end of work’
  48.  

j’attends vos commentaire et questions

3 comments

Jun 27

Fête de la musique Paris 2011

Category: music,perso,Photo,Video

Cette fête est l’occasion rêvée pour écouter des groupes de musique présentant des chansons de divers cultures, générations et genres.
Pour ma part, j’en ai profité pour aller avec Abyroo, Myriouma et MohamedMahrsi à la place Monge et par la suite à pied direction Place d’Italie.

Pour mes souvenirs une vidéo et quelques photos

No comments

Jun 13

SoArt’rip Juin 2011 le plaisir d’un indice

Category: Video

Jun 6

Che Guevara SoArt’rip

Category: music,Video

Le samedi 4 juin 2011 était un moyen pour moi de découvrir la magie du monde du cinéma dans les studios QUINTA PRODUCTION. La magie a été poussé à travers des jeunes talents tel que cette jeune fille avec sa guitare.

No comments

« Previous PageNext Page »