buy clomid online

Archive for the 'java' Category

[Solr] get list cores from your RequestHandler

January 20th, 2014 | Category: geek,java

In Solr, RequestHandler are called from a specific core.
But, there is many cases where we want to have more information from other cores.

The easist way is to get this information directly from the the request parameter. Indeed, in your handleRequestBody:

  1. @Override
  2. public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {

Get your current core.

  1. final SolrCore core = req.getCore();

Retrieve CoreContainer using core object.
CoreContainer contain all cores, so, can be used easily to get all cores.

  1. final Collection<SolrCore> cores = core.getCoreDescriptor().getCoreContainer().getCores();

A loop can be used to display our cores.

  1. for (SolrCore solrCore : cores) {
  2.     log.info(solrCore.getName());
  3. }

;) you can call a get to retrieve a specific core

  1. SolrCore core1 = core.getCoreDescriptor().getCoreContainer().getCore("core1");
No comments

Convert Short Url to Long Url with Java

June 07th, 2012 | Category: geek,java,twitter

Wikipedia :

Twitter is an online social networking service and microblogging service that enables its users to send and read text-based posts of up to 140 characters, known as “tweets”.

In microbloging service like Twitter , User must limit the text to 140 characters and URL can be some time very long. Some compagnies(Bitly, TinyURL,…) offer service to reduce your URL with a result like this http://bit.ly/lO2Pan.

In some situation, you have to transform short url to the original to analyse some tweets. For this, technically, you must follow the redirection to get this URL. My solution is to have a loop reading the content of the header and to be more specific the field location until the last URL.

The result :

  1. package com.nihed.tools;
  2.  
  3. import java.io.IOException;
  4. import java.net.HttpURLConnection;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8.  
  9. /**
  10.  *
  11.  * @author Nihed MBAREK
  12.  */
  13. public class UrlTools {
  14.  
  15.     public static String getLongUrl(String shortUrl) throws MalformedURLException, IOException {
  16.         String result = shortUrl;
  17.         String header;
  18.             do {
  19.                 URL url = new URL(result);
  20.                 HttpURLConnection.setFollowRedirects(false);
  21.                 URLConnection conn = url.openConnection();
  22.                 header = conn.getHeaderField(null);
  23.                 String location = conn.getHeaderField("location");
  24.                 if (location != null) {
  25.                     result = location;
  26.                 }
  27.             } while (header.contains("301"));
  28.  
  29.         return result;
  30.     }
  31. }

Now, you can call this method in your class like this :

  1. String result = UrlTools.getLongUrl("http://bit.ly/lO2Pan");

ps: waiting for your questions :)


4 comments

Le scheduling avec Spring et Quartz

March 15th, 2012 | Category: java,programmation,spring

Une des solutions Java pour faire du scheduling est l’utilisation d’un des frameworks disponible sur le marché. La solution que j’ai testé pour vous est celle utilisant Spring et Quartz.

Pour commencer les dépendances Maven : :D

  1. <properties>
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.         <spring.version>3.0.1.RELEASE</spring.version>
  4.     </properties>
  5.  
  6.     <dependencies>
  7.         <dependency>
  8.             <groupId>org.springframework</groupId>
  9.             <artifactId>spring-core</artifactId>
  10.             <version>${spring.version}</version>
  11.         </dependency>
  12.         <dependency>
  13.             <groupId>org.springframework</groupId>
  14.             <artifactId>spring-context</artifactId>
  15.             <version>${spring.version}</version>
  16.         </dependency>
  17.         <dependency>
  18.             <groupId>org.springframework</groupId>
  19.             <artifactId>spring-context-support</artifactId>
  20.             <version>${spring.version}</version>
  21.         </dependency>
  22.         <dependency>
  23.             <groupId>org.springframework</groupId>
  24.             <artifactId>spring-tx</artifactId>
  25.             <version>${spring.version}</version>
  26.         </dependency>
  27.         <dependency>
  28.             <groupId>org.quartz-scheduler</groupId>
  29.             <artifactId>quartz</artifactId>
  30.             <version>1.8.5</version>
  31.         </dependency>
  32.         <dependency>
  33.             <groupId>junit</groupId>
  34.             <artifactId>junit</artifactId>
  35.             <version>3.8.1</version>
  36.             <scope>test</scope>
  37.         </dependency>
  38.     </dependencies>

Par la suite, nous allons définir l’objet qui sera utilisé par notre Scheduler.

  1. package com.nihed.cronapplication.task;
  2.  
  3. import java.util.Date;
  4.  
  5. public class Task1 {
  6.  
  7.     public void runTask() {
  8.         System.out.println("Task1 "+new Date());
  9.     }
  10. }

Puis, nous allons écrire le fichier de configuration de Spring ou nous avons configurer l’exécution de la méthode runTask toutes les 5 secondes. Pour cela, nous avons utilisé une écriture qui ressemble Cron “0/5 * * * * ?”

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. ">
  7.    
  8.     <!– Trigger 1 –>
  9.     <bean id="task1" class="com.nihed.cronapplication.task.Task1" />
  10.    
  11.     <bean id="jobTask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
  12.         <property name="targetObject" ref="task1" />
  13.         <property name="targetMethod" value="runTask"/>
  14.         <property name="concurrent" value="false" />
  15.     </bean>
  16.     <!– lancement tous les 5 secondes –>
  17.     <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
  18.         <property name="jobDetail" ref="jobTask1" />
  19.         <property name="cronExpression" value="0/5 * * * * ?" />
  20.     </bean>
  21.    
  22.     <!– Scheduler Configuration –>
  23.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  24.         <property name="triggers" >
  25.             <list>
  26.                 <ref bean="cronTrigger1"/>
  27.             </list>
  28.         </property>
  29.     </bean>
  30.  
  31.    
  32. </beans>

Enfin, un petit main pour tester notre application.

  1. package com.nihed.cronapplication;
  2.  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4.  
  5. public class App
  6. {
  7.     public static void main( String[] args )
  8.     {
  9.         new ClassPathXmlApplicationContext("SpringXMLConfig.xml");
  10.  
  11.     }
  12. }

No comments

Calendrier de vacances avec Java

January 07th, 2012 | 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

Java and fedora

March 22nd, 2010 | Category: java,linux

Some Java dependencies and packages are not available on fedora official repositories. The solution is to add JPackage repo.
As root

  1. #cd /etc/yum.repos.d/
  2. #wget http://www.jpackage.org/jpackage50.repo

You can see http://www.jpackage.org/ if there new updates. JPackage can be used with fedora, redhat, centos, mandriva and many distributions.

No comments

J2me et les SMS’s

June 14th, 2009 | Category: geek,java,programmation

Avec les offres des SMS’s ilimités de Tunisie Telecom et Tunisiana, je me suis posé le problème s’il est possible de mettre en place une application mobile capable de généré un grand nombre de SMS pour une plage de numéro ou pour juste un numéro pour faire du spam.
Après quelques recherche, j’ai réussi à mettre au point un petit bout de code fonctionnel et qui permet d’offrir la possibilité d’envoyer un SMS et bien entendu, les options énuméré au début sont possibles.
Pour le développement, j’ai utilisé netbeans 6.7 RC2 sans aucun additif. J’ai commencé par la création d’un projet standard pour terminaux mobiles. et dans ma class principale, j’ai ajouté cette méthodes qui gère l’envoi des SMS.

    public String sendSms(String number, String message){
    String result = "Ok";
    try {
      //sets address to send message
      String addr = "sms://"+number;
      // opens connection
      MessageConnection conn = (MessageConnection) Connector.open(addr);
      // prepares text message
      TextMessage msg =
      (TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE);
      //set text
      msg.setPayloadText(message);
      // send message
      conn.send(msg);
      conn.close();
    } catch (SecurityException se) {
        // probably the user has not allowed to send sms
        // you may want to handle this differently
        result = "Security Problem";
    } catch (Exception e) {
        result = "Unknown Problem";
    }
    return result;
  }

Ce qu’il faut retenir, est que cette méthode utilise comme argument le numéro de téléphone et la message à transmettre et renvoi une chaine de caractère avec les divers possibilité :

  • OK, pour une transmission réussite.
  • Security Problem, si l’application n’a pas le droit d’envoyer un SMS, d’ou une configuration du téléphone est nécaissère.
  • Unknown Problem, pour les cas de figure non pris en considération

Par la suite, une petite interace avec deux champs de saisis et un champ d’affichage de résultat.
L’implémentation de la commande OK, et l’ajout du bout du code suivant :

sol.setText(sendSms(number.getString(), message.getString()));

Petit test sur mon téléphone (Nokia 5800), fonctionnel, un message de securité s’affiche pour la première fois pour demander si vous voulez accorder la ressource SMS à l’application “oui” :) .

1 comment

Fedora 9 : Path JAVA, Plugin Flash 64bit

May 01st, 2008 | Category: fedora 9,java,linux

Je voudrais porter votre attention sur le path JAVA qui est appelé par les bundles (xwiki, liferay, Jboss portal, . . .) pour s’exécuter. Pour le configurer d’une manière efficace et avec le moins de risque crée le fichier java.sh au niveau de /etc/profile.d dans lequel vous devez ajouter :

  1. export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
  2. export JRE_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64

ajouter le droit d’éxécution à notre fichier

  1. chmod +x /etc/profile.d/java.sh

et vous pouvez commencer à tester vos applications java

Pour le flash d’adobe, le suivi de la release note suffit (j’ai exécute les commandes avec firefox fermé pour éviter tous problèmes en étant root)

  1.  
  2. mkdir -p /usr/lib/mozilla/plugins
  3.  
  4. yum install nspluginwrapper.{i386,x86_64} pulseaudio-libs.i386
  5.  
  6. rpm -ivh flash-plugin-9.0.124.0-release.i386.rpm
  7.  
  8. mozilla-plugin-config -i -g -v
  9.  

L’obtention du rpm s’est effectuer sur ce lien :
http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&Lang=French&P5_Language=French
ouvrez votre firefox et vérifer à partir de site qui utilise flash sinon ouvrez ce lien : about:plugins

No comments

Spring JSR 286

April 21st, 2008 | Category: spring

L’équipe de Spring nous promet le support de la spécification JSR 286 dans sa version 3 de Spring Portlet MVC.
La chose la plus importante dans cette spécification pour moi est la communication entre les portlets

Lien de la news

No comments

Spring Portlet sur liferay

April 15th, 2008 | Category: java,liferay,spring

Je vous ai promis un exemple. Le voila malgré un petit retard. je m’excuse.
Ce code a était fait sur IDE NetBeans 6.1 RC1 en utilisant Spring avec dépendance 2.5.1.
dans build.xml il faut modifier spring.root

  1. <property name="spring.root" value="C:/Users/hp/Desktop/liferay/spring-framework-2.5.1"/>

pour pointer sur l’emplacement de spring.
Lien : sample spring

5 comments

Mon poste sur la création de portlet liferay avec spring en format PDF

April 07th, 2008 | Category: java,liferay

En attendant l’exemple, je vous propose mon dernier poste en format PDF et j’en profite pour tester l’attach file module.
liferay-spring

1 comment

Next Page »