/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionPresenteur.java |
---|
15,6 → 15,10 |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack; |
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete; |
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService; |
import com.google.gwt.event.dom.client.ClickEvent; |
21,6 → 25,7 |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
47,6 → 52,7 |
private Vue vue; |
private Config config; |
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur; |
private PropositionDeterminationService propositionDeterminationService = new PropositionDeterminationServiceConcret(); |
public FormulairePropositionPresenteur(Vue vue) { |
this.vue = vue; |
91,11 → 97,22 |
if (!validerSaisieProposition()) { |
return; |
} else { |
PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition(); |
CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee); |
EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee); |
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination); |
final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition(); |
propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack(ModeRequete.AJOUT) { |
@Override |
public void surRetour(String messageRetour) { |
propositionAjoutee.setId(messageRetour); |
CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee); |
EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee); |
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}); |
} |
} |
}); |
/trunk/src/org/tela_botanica/del/client/modeles/InterventionForum.java |
---|
67,4 → 67,16 |
public void ajouterCommentaire(Commentaire commentaire) { |
listeCommentaires.add(commentaire); |
} |
public PropositionDetermination getPropositionParenteOuNulle() { |
InterventionForum parent = getParent(); |
PropositionDetermination proposition = null; |
while(parent != null && !(parent instanceof PropositionDetermination)) { |
parent = parent.getParent(); |
} |
if(parent != null) { |
proposition = (PropositionDetermination)parent; |
} |
return proposition; |
} |
} |
/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; |
} |
} |
/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/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/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()); |
} |