Académique Documents
Professionnel Documents
Culture Documents
1. Introduction....................................................................................................................................2
2. Outils de réalisation :......................................................................................................................3
Langage J2ME.........................................................................................................................3
Pourquoi J2ME ?.....................................................................................................................3
Emulateurs d’appareils Mobiles :...........................................................................................3
Emulateur NOKIA Series 60 Content Authoring......................................................................3
3. Structure de travail :.......................................................................................................................4
Vue d'ensemble......................................................................................................................4
Définition de l'interface à distance.........................................................................................4
3.2. Irisimobile.model.Avis.java :...............................................................................................8
3.3. irisimobile.vue.Avis.java :..................................................................................................10
3.4. Irisimobile.ModuleInterf.java :.........................................................................................11
3.5. Irisimobile.model.Module.java :........................................................................................11
3.6. Irisimobile.vue.Module.java :............................................................................................13
3.7. Irisimobile.vue.Emploi.java :.............................................................................................15
4. La traduction :.............................................................................................................................21
5. L’embarqué :................................................................................................................................26
6. Conclusion :..................................................................................................................................27
2
1. Introduction
Le rapport technique est un outil contenant une description rapide des classes utilisées
dans l’application (qui jouent un rôle important dans le code).
Dans ce rapport, il faut décrire le rôle de chaque classe, et aussi commenter toutes les
fonctions qu’elle contient, afin de connaitre l’utilité de chacune.
Le lecteur peut ainsi prendre connaissance des grandes lignes sans aller plus loin que la
première page.
3
2. Outils de réalisation :
Langage J2ME
Puisque notre projet est une application mobile, nous devons le réaliser avec un langage
convenable : J2ME - Java 2 Micro Edition - Version de la plate-forme Java 2 destinée aux
appareils électroniques et terminaux intégrés (téléphones, assistants personnels, cartes à puce).
Pourquoi J2ME ?
Java 2 Micro Edition est une architecture technique dont le but est de fournir un socle de
développement aux applications embarquées. L’intérêt étant de proposer toute la puissance d’un
langage tel que Java associé aux services proposés par une version bridée du Framework
J2SE :J2ME.
Les terminaux n’ayant pas la même capacité en termes de ressources que les ordinateurs
de bureau classiques (mémoire, disque et puissance de calcul), la solution passe par la fourniture
d’un environnement allégé afin de s’adapter aux différentes contraintes d’exécution. Cependant,
comment faire en sorte d’intégrer la diversité de l’offre à un socle technique dont le cible n’est
pas définie à priori ? La solution proposée par J2ME consiste à regrouper par catégories certaines
familles de produits tout en proposant la possibilité d’implémenter des routines spécifiques à un
terminal donné.
Nokia Series 60 est un émulateur qui permet de reproduire d'une façon très proche de la
réalité les principales fonctions et caractéristiques des téléphones mobiles compatibles MMS
notamment la gamme Série 60 NOKIA. C'est un outil professionnel destiné aux développeurs
d'applications WAP et MMS qui nous permet de voir comment le message sera affiché sur le
navigateur d'un terminal mobile. Cet émulateur possède la possibilité de détecter et d'afficher
automatiquement les messages stockés dans son répertoire.
4
3. Structure de travail :
Dans cette section, vous apprendrez comment accéder et mettre en œuvre la fonctionnalité
côté serveur avec Invocation J2ME Polish Remote Method (RMI) cadre.
Vue d'ensemble
Le J2ME Polish RMI mise en œuvre utilise soit un binaire protocole slim ou le XML-
RPC protocole d'accès à la fonctionnalité de serveur à partir de votre application mobile.
Il est très facile d'utiliser le cadre du RMI - Voici les étapes nécessaires. Vous allez
apprendre à leur sujet en détail dans les sections suivantes.
Au début, vous avez à s'entendre sur une interface entre le serveur et votre application
mobile. Pour ce faire, en étendant le vide « de.enough.polish.rmi.Remote »
5
Dans l'exemple suivant, nous envoyons un nom, un numéro de téléphone et un mot de
passe pour registrer un utilisateur. Lorsque l'enregistrement réussit, le serveur doit retourner
true:
Dans ce type de projet on a un fichier XML qui permet l’interaction entre le client et le
serveur c’est lui qui se charge de la communication et qui encapsule la servelet du projet
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
-->
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>RemoteHttpServlet</servlet-name>
<servlet-class>irisimobile.ConnexionImpl</servlet-class>
<!-- use init-params for configuring your service -->
</servlet>
<servlet-mapping>
<servlet-name>RemoteHttpServlet</servlet-name>
<url-pattern>/connexion</url-pattern>
</servlet-mapping>
6
<servlet>
<servlet-name>RemoteHttpServlet_trp</servlet-name>
<servlet-class>irisimobile.TrombinoscopeImpl</servlet-class>
<!-- use init-params for configuring your service -->
</servlet>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_trp</servlet-name>
<url-pattern>/trombinoscope</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RemoteHttpServlet_maj</servlet-name>
<servlet-class>irisimobile.MAJImpl</servlet-class>
<!-- use init-params for configuring your service -->
</servlet>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_maj</servlet-name>
<url-pattern>/updates</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RemoteHttpServlet_stage</servlet-name>
<servlet-class>irisimobile.StageImpl</servlet-class>
<!-- use init-params for configuring your service -->
</servlet>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_stage</servlet-name>
<url-pattern>/stages</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_mdl</servlet-name>
<url-pattern>/modules</url-pattern>
</servlet-mapping>
7
<servlet-class>irisimobile.AvisImpl</servlet-class>
<!-- use init-params for configuring your service -->
</servlet>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_avis</servlet-name>
<url-pattern>/avis</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RemoteHttpServlet_nots</servlet-name>
<url-pattern>/notes</url-pattern>
</servlet-mapping>
</web-app>
package irisimobile;
import irisimobile.model.Avis;
import irisimobile.model.Classe;
import java.util.Vector;
import de.enough.polish.rmi.Remote;
import de.enough.polish.rmi.RemoteException;
classe AvisImpl.java :
Classe implémentation ou classe coté serveur permet l’implémentation des méthodes et des
fonction qui sont définit dans l’interface.
package irisimobile;
8
import irisimobile.model.Avis;
import irisimobile.model.Classe;
import java.util.Date;
import java.util.Vector;
import de.enough.polish.rmi.RemoteException;
import de.enough.polish.rmi.RemoteHttpServlet;
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Vector<Avis> getAvis(Classe classe) throws RemoteException {
Vector<Avis> avis=new Vector<Avis>();
Object[][] rs=SQL.executeQuerySelect("SELECT *" +
" FROM avis WHERE id_classe="+classe.getIdClass());
for(int i=0;i<rs.length;i++){
Object[] r=rs[i];
avis.add(
new Avis((Integer) r[0], (String)r[3],
(Date)r[5],classe.getNiveau())
);
}
return avis;
}
}
3.2. Irisimobile.model.Avis.java :
Classe avis Serializable c’est une classe permet l’instanciation des objets avis pour assurer la
communication des objets dans le réseau :
package irisimobile.model;
import java.util.Date;
import de.enough.polish.io.Serializable;
/**
* @author naoual
*
*/
9
public class Avis implements Serializable {
10
3.3. irisimobile.vue.Avis.java :
L’interface graphique avis permet de présenter l’interface de la classe avis pour faciliter la
manipulation :
package irisimobile.vue;
import java.io.IOException;
import javax.microedition.lcdui.Image;
import irisimobile.lang.LANGUE;
import irisimobile.util.DATE;
import de.enough.polish.ui.Alert;
import de.enough.polish.ui.AlertType;
import de.enough.polish.ui.Command;
import de.enough.polish.ui.CommandListener;
import de.enough.polish.ui.Displayable;
import de.enough.polish.ui.Form;
import de.enough.polish.ui.List;
import de.enough.polish.ui.StyleSheet;
this.addCommand(masquer);
this.addCommand(IRISIMobile.PRECEDENT);
this.addCommand(IRISIMobile.AIDE);
this.addCommand(IRISIMobile.APROPOS);
this.addCommand(IRISIMobile.QUITTER);
this.setCommandListener(this);
//}
11
public void commandAction(Command c, Displayable disp) {
if(c == this.masquer){
Alert alert = new Alert("Avis", "description", null, AlertType.INFO);
midlet.switchDisplayable(alert, this);
}else if(c==IRISIMobile.QUITTER){
midlet.quitter();
}
else if(c==IRISIMobile.PRECEDENT){
midlet.switchDisplayable(null, new Menu(midlet, LANGUE.APPLICATION,
"ecranPrincipale", "rebrique",false));
}
3.4. Irisimobile.ModuleInterf.java :
Cette interface permet la communication avec le serveur pour l’appel et l’instensiation des module
package irisimobile;
import irisimobile.model.Module;
import irisimobile.model.Niveau;
import java.util.Vector;
import de.enough.polish.rmi.Remote;
import de.enough.polish.rmi.RemoteException;
3.5. Irisimobile.model.Module.java :
La classe module permet qui est serializable permet d’instancier des module au niveau Client
package irisimobile.model;
import java.util.Date;
import java.util.Vector;
import de.enough.polish.io.Serializable;
/**
* @author naoual
12
*
*/
public class Module implements Serializable {
13
this.id_module = id_module;
}
3.6. Irisimobile.vue.Module.java :
La classe Module permet de présenter l’interface graphique des modules qui appells lui même
l’interface des cours.
package irisimobile.vue;
import irisimobile.lang.LANGUE;
import irisimobile.model.Etudiant;
import irisimobile.model.Module;
import irisimobile.model.Niveau;
import irisimobile.util.HOST;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Image;
import de.enough.polish.io.RmsStorage;
import de.enough.polish.rmi.RemoteClient;
14
import de.enough.polish.rmi.RemoteException;
import de.enough.polish.ui.Alert;
import de.enough.polish.ui.AlertType;
import de.enough.polish.ui.Command;
import de.enough.polish.ui.CommandListener;
import de.enough.polish.ui.Displayable;
import de.enough.polish.ui.List;
import de.enough.polish.ui.StyleSheet;
IRISIMobile midlet;
private Vector<Module> modules;
private boolean maj;
super(LANGUE.MES_MODULE,List.IMPLICIT);
this.midlet = midlet;
this.maj=mettre_a_jour;
modules=this.getModules();
this.addCommand(IRISIMobile.PRECEDENT);
this.addCommand(IRISIMobile.QUITTER);
this.setSelectCommand(IRISIMobile.SELECT);
this.setCommandListener(this);
this.append(s.getLibModule(),Image.createImage("/module.png"),
StyleSheet.getStyle("rebrique"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
15
try {
return (Vector<Module>) storage.read( "Modules" );
} catch (IOException e) {
//sa veu dir qu'ocun enregistremen n'existe encor sur le tel
//on va alor du cot� serveur
return null;
}
}
3.7. Irisimobile.vue.Emploi.java :
La classe emploi est la vue la plus importante dans notre projet, elle peut avoir sa mise a jour
automatiquement ainsi qu’elle utilise des composants graphique un peu complexe comme
Tree.
package irisimobile.vue;
import irisimobile.lang.LANGUE;
import irisimobile.model.Module;
import irisimobile.util.DATE;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import javax.microedition.lcdui.Image;
16
import de.enough.polish.io.RmsStorage;
import de.enough.polish.ui.Command;
import de.enough.polish.ui.CommandListener;
import de.enough.polish.ui.Displayable;
import de.enough.polish.ui.Item;
import de.enough.polish.ui.StyleSheet;
import de.enough.polish.ui.TabbedForm;
import de.enough.polish.ui.TreeItem;
17
//#style fils1
tree.appendToRoot("10-12", null);
tree.get(2).setLabel("3");
//#style fils1
tree.appendToRoot("14-16", null);
tree.get(3).setLabel("4");
//#style fils1
tree.appendToRoot("16-18", null);
tree.get(4).setLabel("5");
int a=1,b=1,cc=1,d=1;
if(cours!=null || cours.size()!=0)
for(irisimobile.model.Cours c:cours){
if(c.getFaisseau().equalsIgnoreCase("8H-10H")){
Item child=tree.appendToNode(tree.get(1),c.getType()+":
"+c.getLibCours(),null);
child.setLabel(""+a);
child.addCommand(cmd);
a++;
}
else if(c.getFaisseau().equalsIgnoreCase("10H-12H")){
Item child=tree.appendToNode(tree.get(1),c.getType()+":
"+c.getLibCours(),null);
child.setLabel(""+b);
child.addCommand(cmd);
b++;
}
else if(c.getFaisseau().equalsIgnoreCase("14H-16H")){
Item child=tree.appendToNode(tree.get(1),c.getType()+":
"+c.getLibCours(),null);
child.setLabel(""+cc);
child.addCommand(cmd);
cc++;
}
else if(c.getFaisseau().equalsIgnoreCase("16H-18H")){
Item child=tree.appendToNode(tree.get(1),c.getType()+":
"+c.getLibCours(),null);
child.setLabel(""+d);
child.addCommand(cmd);
d++;
}
}
this.append(i, tree);
}
this.addCommand(semaine);
this.addCommand(semainesuiv);
18
this.addCommand(semaineprec);
this.addCommand(IRISIMobile.SELECT);
this.addCommand(IRISIMobile.PRECEDENT);
this.addCommand(IRISIMobile.AIDE);
this.addCommand(IRISIMobile.APROPOS);
this.addCommand(IRISIMobile.QUITTER);
this.setCommandListener(this);
goToAvis(dates[this.getActiveTab()],Integer.parseInt(it[1].getLabel())-1);
}
else if(it[0].getLabel().equalsIgnoreCase("2")){
System.out.println("c1");
goToCours(dates[this.getActiveTab()],"8H-10H");
}
else if(it[0].getLabel().equalsIgnoreCase("3")){
System.out.println("c2");
goToCours(dates[this.getActiveTab()],"10H-12H");
}
else if(it[0].getLabel().equalsIgnoreCase("4")){
System.out.println("c3");
goToCours(dates[this.getActiveTab()],"14H-16H");
}
19
else if(it[0].getLabel().equalsIgnoreCase("5")){
System.out.println("c4");
goToCours(dates[this.getActiveTab()],"16H-18H");
}
}
}else if(cmd==IRISIMobile.QUITTER){
midlet.quitter();
}
20
}
else{
for(int i=0;i>dif;i++){
date=DATE.getNextDate(date);
}
}
dates=new Date[6];
System.out.println(date);
for(int i=0;i<6;i++){
dates[i]=date;
date=DATE.getNextDate(date);
}
}
if(DATE.equals(DATE.getNextDate(c.getDate()),date))
cours.addElement(c);
}
}
return cours;
} catch (IOException e) {
//sa veu dir qu'ocun enregistremen n'existe encor sur le tel
//on va alor du cot� serveur
return null;
}
}
return avis;
21
} catch (IOException e) {
//sa veu dir qu'ocun enregistremen n'existe encor sur le tel
//on va alor du cot� serveur
return null;
}
}
4. La traduction :
Dans notre projet, on a réalisé une classe qui permet la traduction en 3 langue cette classe est
la suivante :
package irisimobile.lang;
22
public static String PRENOM=null;
public static String TEL=null;
public static String CLASSE=null;
public static String FILIERE=null;
public static String NIVEAU=null;
public static String ADRESSE=null;
public static String PROFILE_TITLE=null;
public static String CHANGE_ID=null;
public static String VALIDER=null;
public static String CHANGE_TITLE=null;
public static String OLD_PASS=null;
public static String NEW_PASS=null;
public static String CONFIRM_PASS=null;
public static String ERR_ALL_FIELD=null;
public static String ERR_PASS_INVALIDE=null;
public static String ERR_CONF_INVALIDE=null;
public static String SUCCES=null;
public static String SUCCES_CHANG_PASS=null;
public static String ERR_CHANG_PASS=null;
public static String NO_STAGE=null;
public static String INFO_STAGE=null;
public static String INFO_ENTREPRISE=null;
public static String ENTREPRISE=null;
public static String WEBSITE=null;
public static String NO_MODULE=null;
public static String DATE=null;
public static String HORAIRE=null;
public static String MES_MODULE=null;
public static String MES_COURS=null;
public static String TELECHARGER=null;
public static String SYLLABUS=null;
public static String SALLLE=null;
public static String TP=null;
public static String COUR=null;
public static String TD=null;
public static String NO_RATT=null;
public static String NOT_AP_RATT=null;
public static String NOT_AV_RATT=null;
public static String MOYENNE=null;
public static String NO_NOT=null;
LA_LANGUE=";"العربية
LANGUE_TITRE=";"إعدادات اللغة
BIENVENU=";"مرحبا
APPLICATION=" IRISI ;" جوال
SELECT=";"اختيار
PRECEDENT=";"رجوع
AIDE=";"مساعدة
APROPOS=";"حول
QUITTER=";"خروج
SAUVEGARDE=";"حفظ
ERREUR_SAUVEGARDE=" خطأ أثناء محاولة حفظ إعدادت
المستخدم.";
EMPLOIS_TEMP=";"استعمال الزمن
COURS=";"دروس
NOTES=";"نقط
DEMANDE=";"طلب
23
;"تدريب"=STAGE
;"ألبوم"=TROMBINOSCOPE
;"حسابي"=PROFILE
;"اعدادات"=CONFIG
;"تسجيل الخروج"=DECONNEXION
;"مستخدم جديد"=NEW_USER
;"دخول"=CONNEXION
;"اسم المستخدم"=LOGIN
;"كلمة السر"=PASSWORD
;" IRISIدخول جوال"=CONNEXION_TITLE
خطأ ,اسم المستخدم أو كلمة المرور "=ERR_LOG_PASS_VIDE
;"فارغ
خطأ ,اسم المستخدم أو كلمة المرور "=ERR_LOGPASS_INVALIDE
;".غير صحيح
;".خطأ ,يتعذر اإلتصال بالجهاز الخادم"=ERR_HOTE
;"الئحة فارغة"=NO_ETUDIANT
;"بيانات"=INFO
;"ر.و.ط"=CNE
;"بريد الكتروني"=EMAIL
;"إسم عائلي"=NOM
;"إسم شخصي"=PRENOM
;"هاتف"=TEL
;"قسم"=CLASSE
;"شعبة"=FILIERE
;"مستوى"=NIVEAU
;"عنوان"=ADRESSE
;"الحساب الشخصي"=PROFILE_TITLE
;"تغيير كلمة السر"=CHANGE_ID
;"موافق"=VALIDER
;"تغيير كلمة السر"=CHANGE_TITLE
;"كلمة السر الحالية"=OLD_PASS
;"كلمة السر الجديدة"=NEW_PASS
;"تأكيد كلمة السر"=CONFIRM_PASS
;"يجب تعبئة جميع الحقول الفارغة"=ERR_ALL_FIELD
;"كلمة السر غير صحيحة"=ERR_PASS_INVALIDE
;"التأكيد اليطابق"=ERR_CONF_INVALIDE
;"تمت العملية بنجاح"=SUCCES
;"لقد تم تغيير كلمة السر لحسابكم"=SUCCES_CHANG_PASS
;"خطأ أثناء تغيير كلمة السر"=ERR_CHANG_PASS
;"تدريب غير متوفر"=NO_STAGE
;":معلومات الشركة"=INFO_ENTREPRISE
;":معلومات التدريب"=INFO_STAGE
;"الشركة"=ENTREPRISE
;"الموقع اإللكتروني"=WEBSITE
;"التوجد دروس لهذا المستوى"=NO_MODULE
;"تاريخ"=DATE
;"توقيت"=HORAIRE
;"دروسي"=MES_MODULE
;"دروسي"=MES_COURS
;"تحميل"=TELECHARGER
;"ملخص"=SYLLABUS
;"قاعة"=SALLLE
;"تطبيق"=TP
;"درس"=COUR
;"تمرين"=TD
;"التوجد دورة استدراكية"=NO_RATT
;"نقط ما بعد االستدراكية"=NOT_AP_RATT
;" نقط ما قبل االستدراكية NOT_AV_RATT=" :
;"المعدل"=MOYENNE
;"ال توجد نقط" =NO_NOT
}
24
else if(langue.equalsIgnoreCase(LANGUE.FRANCAIS)){
LA_LANGUE="Français";
LANGUE_TITRE="Configuration langue";
BIENVENU="Bienvnue";
APPLICATION=" Mobile IRISI";
SELECT="Choisir";
PRECEDENT="Retour";
AIDE="Aide";
APROPOS="Apropos";
QUITTER="Quitter";
SAUVEGARDE="Enregistrer";
ERREUR_SAUVEGARDE="Une erreur est survenue, Les
paramètres de votre profile n'ont pas pu être enregistrées";
EMPLOIS_TEMP="Emploi du temps";
COURS="Cours";
NOTES="Notes";
DEMANDE="Demande";
STAGE="Stage";
TROMBINOSCOPE="Trombinoscope";
PROFILE="Profil";
CONFIG="Configuration";
DECONNEXION="Deconnexion";
NEW_USER="Nouvel utilisateur";
CONNEXION="Connexion";
LOGIN="Nom d'utilisateur";
PASSWORD="Mot de passe";
CONNEXION_TITLE="Connexion Mobile IRISI";
ERR_LOG_PASS_VIDE="Attention, nom d'utilisateur ou mot de
passe vide";
ERR_LOGPASS_INVALIDE="Erreur, nom d'utilisateur ou Mot de
passe incorrect";
ERR_HOTE="Erreur: Impossible de joindre l'hôte distant";
NO_ETUDIANT="Aucun Etudiant";
INFO="Infos ";
CNE="CNE";
EMAIL="E-mail";
NOM="Nom";
PRENOM="Prénom";
TEL="Tel";
CLASSE="Classe";
FILIERE="Filière";
NIVEAU="Niveau";
ADRESSE="Adresse";
PROFILE_TITLE="Mon profile";
CHANGE_ID="Changer Mot de passe";
VALIDER="Valider";
CHANGE_TITLE="Changement mot de passe";
OLD_PASS="Mot de passe actuel";
NEW_PASS="Nouveau mot de passe";
CONFIRM_PASS="Confirmation";
ERR_ALL_FIELD="Attention, vous devez remplir tous les
champs";
ERR_PASS_INVALIDE="Erreur, ot de passe incorrect";
ERR_CONF_INVALIDE="Erreur, Confirmation incorrecte";
SUCCES="Opération términée avec succès";
SUCCES_CHANG_PASS="Votre mot de passe a été changer avec
succès";
ERR_CHANG_PASS="Erreur lors du changement de votre mot de
passe";
NO_STAGE="aucun stage disponible";
25
INFO_ENTREPRISE="Infos Entreprise:";
INFO_STAGE="Inofs Stage:";
ENTREPRISE="Entreprise";
WEBSITE="Site web";
NO_MODULE="Aucun module pour votre niveau";
DATE="Date";
HORAIRE="Horaire";
MES_MODULE="Mes modules";
MES_COURS="Mes cours";
TELECHARGER="Télécharger";
SYLLABUS="Syllabus";
SALLLE="Salle";
TP="TP";
COUR="Cours";
TD="TD";
NO_RATT="Pas de rattrapage";
NOT_AP_RATT="Note après rattrapage";
NOT_AV_RATT="Note avant rattrapage :";
MOYENNE="Moyenne :";
NO_NOT="Pas de notes";
}
else if(langue.equalsIgnoreCase(LANGUE.ANGLAIS)){
LA_LANGUE="English";
LANGUE_TITRE="Language settings";
BIENVENU="Welcome";
APPLICATION="IRISI Mobile";
SELECT="Select";
PRECEDENT="Back";
AIDE="Help";
APROPOS="About";
QUITTER="Exit";
SAUVEGARDE="Saving";
ERREUR_SAUVEGARDE="An error has acured,Your profile
settings may not be saved.";
EMPLOIS_TEMP="Schedule";
COURS="Course";
NOTES="Marks";
DEMANDE="Request";
STAGE="Trainning";
TROMBINOSCOPE="Trombinoscope";
PROFILE="Profile";
CONFIG="Settings";
DECONNEXION="Disconnect";
NEW_USER="New user";
CONNEXION="Connect";
LOGIN="User name";
PASSWORD="Password";
CONNEXION_TITLE="IRISI Mobile Connexion";
ERR_LOG_PASS_VIDE="Attention, Your user name or password
are empty";
ERR_LOGPASS_INVALIDE="Error, incorrect user name or
password";
ERR_HOTE="Error, enable to reach server Host ";
NO_ETUDIANT="No student";
INFO="Info";
CNE="CNE";
EMAIL="E-mail";
NOM="Last name";
PRENOM="First name";
26
TEL="Phone";
CLASSE="Class";
FILIERE="Major";
NIVEAU="Level";
ADRESSE="Address";
PROFILE_TITLE="My ACCOUNT";
CHANGE_ID="Change password";
VALIDER="Validate";
CHANGE_TITLE="Changing password";
OLD_PASS="Current password";
NEW_PASS="New password";
CONFIRM_PASS="Confirm password";
ERR_ALL_FIELD="Attention, All fields must be filled";
ERR_PASS_INVALIDE="Error, invalid password";
ERR_CONF_INVALIDE="Error, incorrect confirmation";
SUCCES="Operation succes";
SUCCES_CHANG_PASS="Your password has been succesfully
changed";
ERR_CHANG_PASS="Error, Can't change your password";
NO_STAGE="No available training";
INFO_ENTREPRISE="Company infos:";
INFO_STAGE="Training infos:";
ENTREPRISE="Company";
WEBSITE="Web site";
NO_MODULE="No available courses for your level";
DATE="Date";
HORAIRE="Time";
MES_MODULE="My Subjects";
MES_COURS="My Courses";
TELECHARGER="Download";
SYLLABUS="Resume";
SALLLE="Room";
TP="PW";
COUR="Course";
TD="DW";
NO_RATT="No catching up";
NOT_AP_RATT="Mark after catching up :";
NOT_AV_RATT="Mark before catching up :";
MOYENNE="Average :";
NO_NOT="No Marks";
}
}
5. L’embarqué :
MIDP ne peut pas utiliser un système de fichiers pour enregistrer les données d'application,et pour
assurer le stockage les informations dans une mémoire non-volatile,on utilise la technique du stockage
appelé Record Management System (RMS).
RMS
La méthode de création :
RecordStore rs = RecordStore.openRecordStore("MyAppointments",true);
27
La méthode de fermeture :
Rs.closeRecordStore();
RecordStore.deleteRecordStore("MyAppointments");
6. Conclusion :
Dans notre projet on a pu réaliser une application embarqué, qui s’appuie sue la
technologie RMS pour le stockage des données dans le portable, ainsi que la communication
avec un serveur distant par la technologie RMI pour assurer les mises à jour des données du
portable.
Pour l’outil de traduction qui permet la navigation entre les trois, l’arabe le français et
l’anglais, on a utilisé une classe qui s’appelle LANGUE qui assure cette navigation.
28