Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 886 → Rev 887

/trunk/src/org/tela_botanica/del/client/services/rest/PropositionDeterminationService.java
1,10 → 1,10
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
 
public interface PropositionDeterminationService {
 
public void ajouterProposition(String idObservation, PropositionDetermination validationData) throws ExceptionClient;
public void ajouterProposition(PropositionDetermination proposition, PropositionDeterminationCallBack callback);
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/CommentaireCallback.java
1,12 → 1,15
package org.tela_botanica.del.client.services.rest.async;
 
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
public abstract class CommentaireCallback implements RequestCallback {
//TODO: voir si l'on fusionne les deux classes de vote callback qui sont tout à fait semblables
//TODO: voir si l'on fusionne les classes de commentaire et proposition callback qui sont tout à fait semblables
// pour ne pas dire identiques
public enum ModeRequete {
AJOUT, MODIFICATION, SUPPRESSION
46,7 → 49,8
}
if (statusCode == codeAttendu) {
surRetour(response.getText());
String id = UtilitairesServiceResultat.parserRetourAjoutCommentaire(JSONParser.parseStrict(response.getText()).isObject());
surRetour(id);
} else {
surErreur("Erreur " + statusCode + ": " + response.getText());
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/PropositionDeterminationCallBack.java
New file
0,0 → 1,68
package org.tela_botanica.del.client.services.rest.async;
 
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
public abstract class PropositionDeterminationCallBack implements RequestCallback {
 
//TODO: voir si l'on fusionne les classes de vote callback qui sont tout à fait semblables
// pour ne pas dire identiques
public enum ModeRequete {
AJOUT, MODIFICATION, SUPPRESSION
}
protected ModeRequete mode;
public PropositionDeterminationCallBack(ModeRequete mode) {
this.mode = mode;
}
 
public PropositionDeterminationCallBack() {
// TODO Auto-generated constructor stub
}
public void setMode(ModeRequete mode) {
this.mode = mode;
}
 
@Override
public void onResponseReceived(Request request, Response response){
int statusCode = response.getStatusCode();
int codeAttendu = 500;
switch (mode) {
case AJOUT:
codeAttendu = 201;
break;
case MODIFICATION:
codeAttendu = 200;
break;
case SUPPRESSION:
codeAttendu = 200;
break;
default:
codeAttendu = 500;
break;
}
if (statusCode == codeAttendu) {
String id = UtilitairesServiceResultat.parserRetourAjoutCommentaire(JSONParser.parseStrict(response.getText()).isObject());
surRetour(id);
} else {
surErreur("Erreur " + statusCode + ": " + response.getText());
}
}
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
public abstract void surRetour(String messageRetour);
public abstract void surErreur(String messageErreur);
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/CommentaireServiceConcret.java
47,12 → 47,11
chaineRequete += "&auteur.id="+commentaire.getContributeur().getId();
}
 
// TODO voir à quoi on rattache les commentaires
if(commentaire.getParent() != null && commentaire.getParent().getId() != null) {
if(commentaire.getParent() instanceof PropositionDetermination) {
chaineRequete += "&ce_proposition="+commentaire.getParent().getId();
} else if(commentaire.getParent() instanceof Commentaire) {
chaineRequete += "&ce_commentaire_parent="+commentaire.getParent().getId();
chaineRequete += "&id_parent="+commentaire.getParent().getId();
PropositionDetermination propositionParente = commentaire.getPropositionParenteOuNulle();
if(propositionParente != null) {
chaineRequete += "&proposition="+commentaire.getPropositionParenteOuNulle();
}
}
chaineRequete += "&texte="+commentaire.getCommentaire()+
/trunk/src/org/tela_botanica/del/client/services/rest/PropositionDeterminationServiceConcret.java
New file
0,0 → 1,69
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.URL;
 
public class PropositionDeterminationServiceConcret implements
PropositionDeterminationService {
private String baseUrl;
 
public PropositionDeterminationServiceConcret() {
Config config = new Config();
this.baseUrl = config.getServiceBaseUrl();
}
public PropositionDeterminationServiceConcret(Config config) {
this.baseUrl = config.getServiceBaseUrl();
}
 
@Override
public void ajouterProposition(PropositionDetermination proposition, PropositionDeterminationCallBack callback) {
String urlService = baseUrl+"commentaires/";
RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, urlService);
callback.setMode(ModeRequete.AJOUT);
String chainePost = assemblerChaineRequeteAjoutModif(proposition);
try {
// TODO urlencoder toutes les requetes;
rb.sendRequest(URL.encode(chainePost), callback);
} catch (Exception e) {
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
}
}
private String assemblerChaineRequeteAjoutModif(PropositionDetermination proposition) {
 
String chaineRequete = "";
//TODO: tests sur les num nn et nt et la famille quand ils seront implémentés
chaineRequete += "nom_sel="+proposition.getEspece()+
"&auteur.prenom="+proposition.getContributeur().getPrenom()+
"&auteur.nom="+proposition.getContributeur().getNom()+
"&auteur.courriel="+proposition.getContributeur().getAdresseEmail();
if(proposition.getObservation() != null && proposition.getObservation().getId() != null) {
chaineRequete += "&observation="+proposition.getObservation().getId();
}
if(proposition.getContributeur().getId() != null) {
chaineRequete += "&auteur.id="+proposition.getContributeur().getId();
}
if(proposition.getParent() != null && proposition.getParent().getId() != null) {
chaineRequete += "&id_parent="+proposition.getParent().getId();
PropositionDetermination propositionParente = proposition.getPropositionParenteOuNulle();
if(propositionParente != null) {
chaineRequete += "&proposition="+proposition.getPropositionParenteOuNulle();
}
}
//TODO prise en compte du texte qui pourrait être saisi avec le commentaire
 
return chaineRequete;
}
}