Page 1 sur 1

Tp5 question 1-Restaurer

Publié : 17 mars 2018 22:11
par GANKAMA
Bonsoir,

J'ai ce code qui marche correctement chez moi que jnews refuse:"pas de restauration"
Je ne vois pas du tout d’où provient l'erreur.

/** resturation complète de la liste rééelle à partir de la dernière sauvegarde */
public boolean restaurer(){
Connexion connexion = new Connexion(this.url,"nom=" + this.nom + "&commande=toString"); // à compléter
String resultatDistant=connexion.result();
StringTokenizer st = new StringTokenizer(resultatDistant, "[, ]");
//System.out.println("Dans restaurer :"+resultatDistant);
while(st.hasMoreTokens()){
this.liste.ajouter(st.nextToken());
}
if(liste.equals(resultatDistant) ) {return true;}
else {new CoherenceListeException("taille");
return false; // à compléter
}
}


Cordialement

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 2:10
par NAVARRO
Hello GANKAMA,

J'ai eu des soucis sur le toString() de ListeProxyHttp.
J'avais des espaces en trop autour des tokens. Vérifies que ce n'est pas ton cas.

Sinon juste pour ma "culture perso":
Que signifie le liste.equals? ça utilise le toString() de la liste en fait?
if(liste.equals(resultatDistant) ) {return true;}

Je ne savais pas qu'on pouvait utiliser cette syntaxe pour le StringTokenizer non plus pour le deuxième paramètre:
new StringTokenizer(resultatDistant, "[, ]")

Bon courage, la question 2 a l'air encore plus dure.
Vincent.

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 9:31
par GANKAMA
Bonjour Navarro,

Je galère avec la methode restaurer.Quand je fais ça: if(liste.equals(resultatDistant) ) {return true;}
je veux comparer la liste locale et la liste distante,mais j'ai comme l'impression que ça ne fonctionne pas.J'ai une autre question ,comment faire en sorte que la restauration ne se fasse que sur la liste locale .Quand je fais ceci :liste.ajouter(st.nextToken()); cela impacte aussi la liste distante.
Doit-on modifier la methode restaurer de listImpl:
public boolean restaurer(){
throw new UnsupportedOperationException(" pas de restauration");
}

Bref quelqu'un peut il m'eclaircir.

Cordialement

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 10:30
par julien_24
Bonjour,

@KANGAMA, dans le test que tu fais a la fin de ta methode restaurer, pour savoir si la liste a été restaurée, dans ton else, tu lèves une exception et ensuite tu veux retourner false.
Si tu lèves une exception, le code qui suit n'est pas exécuté, un catch est recherché, en gros ta méthode ne retourne jamais false.
Es ce que ta liste locale gère les doublons?

julien

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 11:20
par NAVARRO
Bonjour,

J'ai eu aussi du mal sur le restaurer. J'ai trouvé que l'énoncé était un peu flou.
Je suis parti du toString distant et j'ai recree ma liste locale ensuite.

String params = "nom="+ this.nom + "&commande=toString";
Connexion connexion = new Connexion (this.url, params);
String resultat = connexion.result();

Pour ta question : Doit-on modifier la methode restaurer de listImpl
je n'ai pas eu besoin de modifier la classe ListeImpl.

Bon courage

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 12:17
par GANKAMA
Merci Beaucoup Navarro et Julien_24,

j'ai modifié mon test de comparaison des deux listes.

public boolean restaurer(){
Connexion connexion = new Connexion(this.url,"nom=" + this.nom + "&commande=toString"); // à compléter
String resultatDistant=connexion.result();
StringTokenizer st = new StringTokenizer(resultatDistant,"[,]");
//System.out.println("Dans restaurer :"+resultatDistant);
while(st.hasMoreTokens()){
liste.ajouter(st.nextToken());
}
boolean testRestauration=liste.equals(resultatDistant);

if(testRestauration==true ) {return true;}
else {new CoherenceListeException("restauration");

}
//System.out.println("Dans restaurer :"+liste.toString());
return testRestauration;
}

Je récupère bien la liste distante mais pour la restauration c a d liste.ajouter(st.nextToken()); comment faire en sorte qu'elle n'impacte pas la liste distante?avoir plutôt quelque chose du genre liste.add(st.nextToken());

Re: Tp5 question 1-Restaurer

Publié : 18 mars 2018 16:11
par julien_24
Tu as oublié la clause throw pour lancer l'exception

throw new CoherenceListeException()

Perso avant de restaurer la liste locale dans la methode restaurer, je la vide (la liste locale), comme tu le fais ca fonctionne?