Rev 1836 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.services.rest;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
import org.tela_botanica.del.client.utils.Analytics;
import org.tela_botanica.del.client.services.RequestBuilderWithCredentials;
import com.google.gwt.http.client.URL;
public class CommentaireServiceConcret implements CommentaireService {
private String baseUrl;
public CommentaireServiceConcret() {
Config config = new Config();
this.baseUrl = config.getServiceBaseUrl();
}
public CommentaireServiceConcret(Config config) {
this.baseUrl = config.getServiceBaseUrl();
}
@Override
public void ajouterCommentaire(Commentaire commentaire, AjoutCommentaireCallback callback) {
String urlService = baseUrl+"commentaires/";
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.PUT, urlService);
callback.setMode(ModeRequete.AJOUT);
String chainePost = assemblerChaineRequeteAjoutModif(commentaire);
try {
rb.sendRequest(chainePost, callback);
} catch (Exception e) {
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
}
// stats
Analytics.evenement("commentaire", "ajout", "{\"auteur\": \"" + commentaire.getAuteur() + "\", \"observation\": \"" + commentaire.getObservation().getId() + "\"}");
}
private String assemblerChaineRequeteAjoutModif(Commentaire commentaire) {
String chaineRequete = "";
if(commentaire.getObservation() != null && commentaire.getObservation().getId() != null) {
chaineRequete += "observation="+URL.encodeQueryString(commentaire.getObservation().getId());
}
if(commentaire.getContributeur().getId() != null) {
chaineRequete += "&auteur.id="+URL.encodeQueryString(commentaire.getContributeur().getId());
}
if(commentaire.getParent() != null && commentaire.getParent().getId() != null) {
chaineRequete += "&id_parent="+URL.encodeQueryString(commentaire.getParent().getId());
PropositionDetermination propositionParente = commentaire.getPropositionParenteOuNulle();
if(propositionParente != null) {
chaineRequete += "&proposition="+URL.encodeQueryString(propositionParente.getId());
}
}
chaineRequete += "&texte="+URL.encodeQueryString(commentaire.getCommentaire())+
"&auteur.prenom="+URL.encodeQueryString(commentaire.getContributeur().getPrenom())+
"&auteur.nom="+URL.encodeQueryString(commentaire.getContributeur().getNom())+
"&auteur.courriel="+URL.encodeQueryString(commentaire.getContributeur().getAdresseEmail());
return chaineRequete;
}
public void chargerCommentaires(PropositionDetermination propositionDetermination, ListeCommentairesCallback commentaireCallback) {
String urlService = baseUrl+"commentaires/?proposition="+propositionDetermination.getId();
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, urlService);
commentaireCallback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, commentaireCallback);
} catch (Exception e) {
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
}
}
@Override
public void supprimerCommentaire(Commentaire commentaire, SuppressionCommentaireCallback callback) {
String urlService = baseUrl+"commentaires/"+commentaire.getId();
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.DELETE, urlService);
callback.setMode(ModeRequete.SUPPRESSION);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
}
// stats
Analytics.evenement("commentaire", "suppression", "{\"auteur\": \"" + commentaire.getAuteur() + "\", \"observation\": \"" + commentaire.getObservation().getId() + "\"}");
}
}