Subversion Repositories eFlore/Applications.del

Rev

Rev 1775 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
887 aurelien 1
package org.tela_botanica.del.client.services.rest;
2
 
2109 mathias 3
import org.tela_botanica.del.client.cache.CacheClient;
887 aurelien 4
import org.tela_botanica.del.client.config.Config;
975 aurelien 5
import org.tela_botanica.del.client.modeles.Commentaire;
887 aurelien 6
import org.tela_botanica.del.client.modeles.PropositionDetermination;
2109 mathias 7
import org.tela_botanica.del.client.modeles.Utilisateur;
939 benjamin 8
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
2109 mathias 9
import org.tela_botanica.del.client.utils.Analytics;
887 aurelien 10
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
975 aurelien 11
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
12
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
1255 aurelien 13
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
887 aurelien 14
 
1496 aurelien 15
import org.tela_botanica.del.client.services.RequestBuilderWithCredentials;
887 aurelien 16
import com.google.gwt.http.client.URL;
17
 
18
public class PropositionDeterminationServiceConcret implements
19
		PropositionDeterminationService {
20
 
21
	private String baseUrl;
22
 
23
	public PropositionDeterminationServiceConcret() {
24
		Config config = new Config();
25
		this.baseUrl = config.getServiceBaseUrl();
26
	}
27
 
28
	public PropositionDeterminationServiceConcret(Config config) {
29
		this.baseUrl = config.getServiceBaseUrl();
30
	}
31
 
32
	@Override
33
	public void ajouterProposition(PropositionDetermination proposition, PropositionDeterminationCallBack callback) {
34
 
35
		String urlService = baseUrl+"commentaires/";
1496 aurelien 36
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.PUT, urlService);
887 aurelien 37
 
38
		callback.setMode(ModeRequete.AJOUT);
39
		String chainePost = assemblerChaineRequeteAjoutModif(proposition);
40
		try {
41
			// TODO urlencoder toutes les requetes;
908 aurelien 42
			rb.sendRequest(chainePost, callback);
887 aurelien 43
		} catch (Exception e) {
44
			//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
45
		}
2109 mathias 46
		// stats
47
		Analytics.evenement("proposition", "ajout", "{\"observation\": {\"id\": \"" + proposition.getObservation().getId() + "\", \"auteur\": \"" + proposition.getObservation().getAuteur()
48
				+ "\"}, \"proposition\": {\"auteur\": \"" + proposition.getAuteur() + "\", \"nom_sci\": \"" + proposition.getEspece() + "\", \"referentiel\": \"" + proposition.getReferentiel() + "\"}}");
887 aurelien 49
	}
50
 
51
	private String assemblerChaineRequeteAjoutModif(PropositionDetermination proposition) {
52
 
53
		String chaineRequete = "";
54
		//TODO: tests sur les num nn et nt et la famille quand ils seront implémentés
908 aurelien 55
		chaineRequete += "nom_sel="+URL.encodeQueryString(proposition.getEspece())+
56
		"&auteur.prenom="+URL.encodeQueryString(proposition.getContributeur().getPrenom())+
57
		"&auteur.nom="+URL.encodeQueryString(proposition.getContributeur().getNom())+
58
		"&auteur.courriel="+URL.encodeQueryString(proposition.getContributeur().getAdresseEmail());
887 aurelien 59
 
1255 aurelien 60
		if(proposition.getNumNomenclatural() != null) {
61
			chaineRequete += "&nom_sel_nn="+URL.encodeQueryString(proposition.getNumNomenclatural());
62
		}
1393 aurelien 63
		if(proposition.getReferentiel() != null && !proposition.getReferentiel().equals("tous")) {
64
			chaineRequete += "&nom_referentiel="+URL.encodeQueryString(proposition.getReferentiel());
1367 aurelien 65
		}
898 aurelien 66
		if (proposition.getObservation() != null && proposition.getObservation().getId() != null) {
908 aurelien 67
			chaineRequete += "&observation="+URL.encodeQueryString(proposition.getObservation().getId());
887 aurelien 68
		}
898 aurelien 69
		if (proposition.getContributeur().getId() != null) {
908 aurelien 70
			chaineRequete += "&auteur.id="+URL.encodeQueryString(proposition.getContributeur().getId());
887 aurelien 71
		}
72
 
898 aurelien 73
		if (proposition.getParent() != null && proposition.getParent().getId() != null) {
908 aurelien 74
			chaineRequete += "&id_parent="+URL.encodeQueryString(proposition.getParent().getId());
887 aurelien 75
			PropositionDetermination propositionParente = proposition.getPropositionParenteOuNulle();
76
			if(propositionParente != null) {
908 aurelien 77
				chaineRequete += "&proposition="+URL.encodeQueryString(propositionParente.getId());
887 aurelien 78
			}
79
		}
80
 
898 aurelien 81
		if (proposition.getCommentaire() != null) {
908 aurelien 82
			chaineRequete += "&texte="+URL.encodeQueryString(proposition.getCommentaire());
898 aurelien 83
		}
887 aurelien 84
 
85
		return chaineRequete;
86
	}
975 aurelien 87
 
88
	@Override
89
	public void supprimerProposition(PropositionDetermination proposition, SuppressionPropositionDeterminationCallback callback) {
90
 
91
		String urlService = baseUrl+"commentaires/"+proposition.getId();
1496 aurelien 92
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.DELETE, urlService);
975 aurelien 93
 
94
		callback.setMode(ModeRequete.SUPPRESSION);
95
		try {
96
			rb.sendRequest(null, callback);
97
		} catch (Exception e) {
98
			//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
99
		}
2109 mathias 100
		// stats
101
		Analytics.evenement("proposition", "suppression", "{\"observation\": {\"id\": \"" + proposition.getObservation().getId() + "\", \"auteur\": \"" + proposition.getObservation().getAuteur()
102
				+ "\"}, \"proposition\": {\"auteur\": \"" + proposition.getAuteur() + "\", \"nom_sci\": \"" + proposition.getEspece() + "\", \"referentiel\": \"" + proposition.getReferentiel() + "\"}}");
975 aurelien 103
	}
1255 aurelien 104
 
105
 
106
	@Override
107
	public void validerProposition(PropositionDetermination proposition, ValidationPropositionCallback callback) {
108
 
109
		String urlService = baseUrl+"determinations/valider-determination/"+proposition.getId();
1496 aurelien 110
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, urlService);
1255 aurelien 111
 
112
		callback.setMode(ModeRequete.MODIFICATION);
1775 aurelien 113
		String chainePost = "auteur.id="+URL.encodeQueryString(proposition.getContributeur().getId())+
114
							"&validateur.id="+URL.encodeQueryString(proposition.getValideePar());
1255 aurelien 115
		try {
116
			rb.sendRequest(chainePost, callback);
117
		} catch (Exception e) {
118
			//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
119
		}
2109 mathias 120
		// stats
121
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
122
		Analytics.evenement("proposition", "validation", "{\"validateur\": \"" + utilisateur.getNomPrenomFormate() + "\", \"observation\": {\"id\": \"" + proposition.getObservation().getId() + "\", \"auteur\": \"" + proposition.getObservation().getAuteur()
123
				+ "\"}, \"proposition\": {\"auteur\": \"" + proposition.getAuteur() + "\", \"nom_sci\": \"" + proposition.getEspece() + "\", \"referentiel\": \"" + proposition.getReferentiel() + "\"}}");
1255 aurelien 124
	}
887 aurelien 125
}