Le blog d'Arcade Village

De l'applet vers l'application (Partie 3) : getDocumentBase et getCodeBase

Nous atteignons presque la fin de notre périple. L'applet est encapsulée dans une Frame et peut récupérer ses paramètres. Il nous reste à nous attaquer aux deux dernières fonctions : GetDocumentBase et GetCodeBase.
Ces deux fonctions n'ont pas vraiment de sens pour une application, j'ai donc décidé de les faire pointer sur le répertoire utilisateur. Pour cela, le code suivant est suffisant :

public class CCApplet extends Panel
{
private static final long serialVersionUID = 1L;
private String udb = null;
private Properties params = new Properties();
private CCAppletContext ca;

public CCApplet()
{
ca = new CCAppletContext(this);
}

public static String getCompleteDirPath( String srelatif )
{
String s = System.getProperty("user.dir")+System.getProperty("file.separator")+srelatif;
s = s.replace("./", "");
s = "file:"+System.getProperty("file.separator")+ s;
s = s.replace("/", System.getProperty("file.separator"));
s = s.replace("", System.getProperty("file.separator"));
return s;
}

public URL getDocumentBase()
{
try
{
return new URL(CCApplet.getCompleteDirPath(this.udb));
}
catch(Exception e)
{
System.out.println("Erreur URL : "+CCApplet.getCompleteDirPath(this.udb));
return null;
}
}

public URL getCodeBase()
{
try
{
return new URL(CCApplet.getCompleteDirPath(this.udb));
}
catch(Exception e)
{
System.out.println("Erreur URL :"+CCApplet.getCompleteDirPath(this.udb));
return null;
}
}

public void setDocumentBase(String iudb)
{
this.udb = iudb;
}

udb est une chaine contenant le nom répertoire. Elle est mise à jour dans les premières lignes de code de l'application au moyen de la fonction setDocumentBase, qui n'existe pas dans la class applet.
getCodeBase et getDocumentBase retourneront le même chemin.
Exemple pour Hebi sous windows :
c:\users\christophe\hebi\
(Christophe est mon nom d'utilisateur.

Les applets avait une dernière particularité : elle pouvaient sauvegarder ou retrouver leurs données dans des cookies. C'est ainsi que mes applets de jeu sauvegardaient le meilleur score du joueur.

Dans la dernière partie, nous implémenterons la classe AppletCookieMgr qui simule cette possibilité.


ArcadeVillage.com 1999 - 2024