ASP.Net / C# / JAVA / CSS / AJAX / JS / SL

Lanceur en Java

Classe Launcher :

Cette classe permet d’avoir un lanceur international, mais il faut avoir créé des fichiers properties pour chaque langue.

De plus, cette classe fait appel à un fichier config.ini, qui permet de récupérer l’url vers laquelle se diriger.

Comme vous pouvez le voir ci-dessous, un message est affiché sur l’image du splash pour que l’utilisateur sache à quelle étape il se trouve, ou s’il y a une erreur.


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StringReader;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;

import javax.xml.parsers.*;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import AgencePlus.Config.Poste;
import AgencePlus.Config.BrowserControl;
import AgencePlus.Config._Splashscreen;

public class Launcher {

private static _Splashscreen splash;
private static ResourceBundle bundle;

public static void main(String[] args) {

Locale locale = Locale.getDefault();
String lang = System.getProperty(« user.language »);

if (lang.equals(« fr »)) {
locale = Locale.FRANCE;
}
else if (lang.equals(« en »)) {
locale = Locale.UK;
}
else if (lang.equals(« es »)) {
locale = new Locale(« es », « ES »);
}

bundle = ResourceBundle.getBundle(« AgencePlus.Properties.Launcher », locale);

splash = new _Splashscreen();
if (splash.isSplashEnabled()) {
splash.updateSplash(«  », bundle.getString(« texte_etape_chargement »), bundle.getString(« texte_copyright »), null);
}

// Lecture du fichier config.ini
Properties prop = new Properties();
FileInputStream in = null;
try {
in = new FileInputStream(« config.ini »);
prop.load(in);
in.close();
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), « Erreur : Le fichier config.ini est introuvable. »);
}
catch (IOException e1) {
e1.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), e1.getMessage());
}
catch (Exception e) {
e.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), e.getMessage());
}
// Extraction de l’url de base
String Base_Uri = prop.getProperty(« iloplus.base_uri »);
String Hash_Grain_Of_Sand = « ++ »;

// Récupération des infos du poste
//———————————————————————
Poste p = new Poste();
try {
ArrayList posteInfos = Poste.RetrievePosteInfos();
p.setDiskSerial(posteInfos.get(0));
p.setAdresseMAC(posteInfos.get(1));
p.setHostName(posteInfos.get(2));
}
catch (Exception e) {
e.printStackTrace();
}

//———————————————————————
// SPLASH UPDATE
//———————————————————————
if (splash.isSplashEnabled()) {
splash.updateSplash(«  », bundle.getString(« texte_etape_identification »), bundle.getString(« texte_copyright »), null);
}

//———————————————————————
// Affichage des infos
//———————————————————————
System.out.println(« Identifiant de disque :  » + p.getDiskSerial());
System.out.println(« Adresse mac :  » + p.getAdresseMAC());
System.out.println(« Host name :  » + p.getHostName());
//———————————————————————
// SPLASH UPDATE
//———————————————————————
if (splash.isSplashEnabled()) {
splash.updateSplash(«  », bundle.getString(« texte_etape_version »), bundle.getString(« texte_copyright »), null);
}
// Appel au WebService (requête http) ==> récup de la version
//———————————————————————
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(Base_Uri + « skins/_default/lib/WebTcK/ws/app.asmx/appVersionShort »);

System.out.println(« Executing request :  » + httpget.getURI());

// Create a response handler
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = null;
try {
responseBody = httpclient.execute(httpget, responseHandler);
}
catch (ClientProtocolException e) {
e.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), « Erreur : Une erreur est survenue dans le protocole Http. »);
}
catch (IOException e) {
e.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
editErrorMessage(«  », bundle.getString(« texte_copyright »), e.getMessage());
}
System.out.println(responseBody);
System.out.println(« —————————————-« );

// récupération des données XML
//———————————————————————
String One_Version = null;
try{
// création d’une fabrique de documents
DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
// création d’un constructeur de documents
DocumentBuilder constructeur = fabrique.newDocumentBuilder();
// lecture du contenu d’un fichier XML avec DOM
Document document = constructeur.parse(new InputSource(new StringReader(responseBody)));
//traitement du document
Element One_Element = document.getDocumentElement();
One_Version = One_Element.getTextContent();
}
catch(ParserConfigurationException pce){
System.out.println(« Erreur de configuration du parseur DOM »);
System.out.println(« lors de l’appel à fabrique.newDocumentBuilder(); »);
}
catch(SAXException se){
System.out.println(« Erreur lors du parsing du document »);
System.out.println(« lors de l’appel à construteur.parse(xml) »);
}
catch(IOException ioe){
System.out.println(« Erreur d’entrée/sortie »);
System.out.println(« lors de l’appel à construteur.parse(xml) »);
System.out.println(ioe.getMessage());
}

String Texte_Version = «  »;
if (One_Version != null && One_Version != «  »){
Texte_Version = bundle.getString(« texte_version ») +  »  » + One_Version;
}

System.out.println(« Version :  » + One_Version);

// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();

//———————————————————————
// SPLASH UPDATE
//———————————————————————
if (splash.isSplashEnabled()) {
splash.updateSplash(Texte_Version, bundle.getString(« texte_etape_licence »), bundle.getString(« texte_copyright »), null);
}

// Appel au WebService (requête http) ==> vérification de licence
//———————————————————————
String address_mac = p.getAdresseMAC();
String hard_disk_id = p.getDiskSerial();
String host_name = p.getHostName();

httpclient = new DefaultHttpClient();
httpget = new HttpGet(Base_Uri + « skins/_default/lib/ImmoAP.Web/ws/licence.asmx/generateToken?address_mac= » + address_mac + « &hard_disk_id= » + hard_disk_id + « &host_name= » + host_name);

System.out.println(« Executing request :  » + httpget.getURI());

// Create a response handler
responseHandler = new BasicResponseHandler();
responseBody = null;
try {
responseBody = httpclient.execute(httpget, responseHandler);
}
catch (ClientProtocolException e) {
e.printStackTrace();
editErrorMessage(Texte_Version, bundle.getString(« texte_copyright »), « Erreur : Une erreur est survenue dans le protocole Http. »);
}
catch (IOException e) {
e.printStackTrace();
editErrorMessage(Texte_Version, bundle.getString(« texte_copyright »), e.getMessage());
}
catch (Exception e) {
e.printStackTrace();
editErrorMessage(Texte_Version, bundle.getString(« texte_copyright »), e.getMessage());
}
System.out.println(responseBody);
System.out.println(« —————————————-« );

// récupération des données XML
//———————————————————————
String One_Guid = null;
try{
// création d’une fabrique de documents
DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
// création d’un constructeur de documents
DocumentBuilder constructeur = fabrique.newDocumentBuilder();
// lecture du contenu d’un fichier XML avec DOM
Document document = constructeur.parse(new InputSource(new StringReader(responseBody)));
//traitement du document
Element One_Element = document.getDocumentElement();
One_Guid = One_Element.getTextContent();
}
catch(ParserConfigurationException pce){
System.out.println(« Erreur de configuration du parseur DOM »);
System.out.println(« lors de l’appel à fabrique.newDocumentBuilder(); »);
}
catch(SAXException se){
System.out.println(« Erreur lors du parsing du document »);
System.out.println(« lors de l’appel à construteur.parse(xml) »);
}
catch(IOException ioe){
System.out.println(« Erreur d’entrée/sortie »);
System.out.println(« lors de l’appel à construteur.parse(xml) »);
System.out.println(ioe.getMessage());
}

System.out.println(« Résultat :  » + One_Guid);

// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();

//———————————————————————
// SPLASH UPDATE
//———————————————————————
if (splash.isSplashEnabled()) {
splash.updateSplash(Texte_Version, bundle.getString(« texte_etape_app »), bundle.getString(« texte_copyright »), null);
}
//———————————————————————

try {
Thread.currentThread();
Thread.sleep(500);
}
catch (InterruptedException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}

// Lancement du browser
//———————————————————————
String Call_Uri = Base_Uri + « licence.aspx »;
if (One_Guid != null
&& One_Guid.length() > 0)
{
Call_Uri += « ?hash= » + DigestUtils.md5Hex(Hash_Grain_Of_Sand + One_Guid) + « &host_name= » + host_name;
}
else
{
Call_Uri += « ?address_mac= » + address_mac + « &hard_disk_id= » + hard_disk_id + « &host_name= » + host_name;
}
try {
BrowserControl.displayURL(Call_Uri);
}
catch (SecurityException e) {e.printStackTrace();}
catch (IllegalArgumentException e) {e.printStackTrace();}
catch (NoSuchMethodException e) {e.printStackTrace();}
catch (IllegalAccessException e) {e.printStackTrace();}
catch (InvocationTargetException e) {e.printStackTrace();}

System.out.println(« URI lancée :  » + Call_Uri);

if (splash.isSplashEnabled()) {
splash.hideSplash();
}
//———————————————————————
System.exit(0);
}

public static void editErrorMessage(String version, String copyright, String error) {
if (error != null)
{ splash.updateSplash(version, null, copyright, error); }
try {
Thread.currentThread();
Thread.sleep(3000);
}
catch (InterruptedException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
if (splash.isSplashEnabled()) {
splash.hideSplash();
}
System.exit(0);
}}

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :