Subversion Repositories eFlore/Applications.del

Rev

Rev 837 | Rev 870 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
500 aurelien 1
package org.tela_botanica.del.client.utils;
2
 
3
import java.util.ArrayList;
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.List;
7
 
690 gduche 8
import org.tela_botanica.del.client.modeles.Contributeur;
500 aurelien 9
import org.tela_botanica.del.client.modeles.Image;
846 aurelien 10
import org.tela_botanica.del.client.modeles.InterventionForum;
500 aurelien 11
import org.tela_botanica.del.client.modeles.Observation;
12
import org.tela_botanica.del.client.modeles.PropositionDetermination;
516 aurelien 13
import org.tela_botanica.del.client.modeles.Utilisateur;
846 aurelien 14
import org.tela_botanica.del.client.modeles.VoteDetermination;
500 aurelien 15
import org.tela_botanica.del.client.modeles.VoteProtocole;
16
 
17
import com.google.gwt.i18n.client.DateTimeFormat;
18
import com.google.gwt.json.client.JSONObject;
516 aurelien 19
import com.google.gwt.json.client.JSONValue;
500 aurelien 20
 
21
public class UtilitairesServiceResultat {
22
 
23
	public static Image parserImageJSON (JSONObject imageJson) {
24
 
25
		Image image = new Image();
763 aurelien 26
		String idImage = imageJson.get("id_image").isString().stringValue();
500 aurelien 27
		image.setIdImage(idImage);
28
		image.setUrlFormat("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"%s%.jpg");
29
		image.setUrl("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"CRS.jpg");
30
		image.setMiniature("http://www.tela-botanica.org/appli:cel-img:"+getIdAvecPadding(idImage)+"XS.jpg");
31
 
32
		return image;
33
	}
34
 
846 aurelien 35
	public static Observation parserObservationEtCreerPropositionDetermination(JSONObject observationJson) {
500 aurelien 36
		Observation observation = parserObservationJSON(observationJson);
37
		return observation;
38
	}
39
 
40
	public static Observation parserObservationJSON(JSONObject observationJson) {
41
 
42
		Observation observation = new Observation();
763 aurelien 43
		observation.setAuteur(getValeurOuVide(observationJson, "auteur.prenom")+
44
				" "+getValeurOuVide(observationJson,"auteur.nom"));
837 aurelien 45
		observation.setNomAuteur(getValeurOuVide(observationJson,"auteur.nom"));
46
		observation.setPrenomAuteur(getValeurOuVide(observationJson,"auteur.nom"));
47
		//TODO: renvoyer le courriel de l'auteur dans les obs
48
		observation.setCourrielAuteur("");
763 aurelien 49
		observation.setDateTransmission(getValeurOuVide(observationJson,"date_observation"));
50
		observation.setDateReleve(getValeurOuVide(observationJson, "date_observation"));
51
		observation.setFamille(getValeurOuVide(observationJson, "determination.famille"));
846 aurelien 52
		observation.setId(getValeurOuVide(observationJson, "id_observation"));
53
		observation.setIdLocalite(getValeurOuVide(observationJson, "id_zone_geo"));
54
		observation.setLocalite(getValeurOuVide(observationJson, "zone_geo"));
55
		observation.setNomRetenu(getValeurOuVide(observationJson, "determination.ns"));
56
		observation.setMilieu(getValeurOuVide(observationJson, "milieu"));
57
		observation.setLieuDit(getValeurOuVide(observationJson, "lieudit"));
58
		observation.setNumNomenclatural(getValeurOuVide(observationJson, "determination.nn"));
763 aurelien 59
		//TODO: renvoyer les mots clés des observations
60
		//observation.setMotsClefs(parserMotsCles(UtilitairesServiceResultat.getValeurOuVide(observationJson, "mots_cles_texte")));
61
		//TODO: renvoyer les commentaires des obs
62
		//observation.setCommentaire(UtilitairesServiceResultat.getValeurOuVide(observationJson, "commentaire"));
846 aurelien 63
		JSONValue propositions = observationJson.get("commentaires");
64
 
65
		if(propositions != null && propositions.isObject() != null) {
66
			observation.setInterventionsForum(parserInterventions(propositions.isObject(), observation));
67
		} else {
68
			observation.ajouterPropositionDetermination(creerPropositionDeterminationAPartirObservation(observation));
69
		}
500 aurelien 70
		return observation;
71
	}
72
 
814 aurelien 73
	public static String getValeurOuVide(JSONObject objet, String index) {
763 aurelien 74
		return (objet.get(index).isString() != null) ? objet.get(index).isString().stringValue() : "";
75
	}
76
 
837 aurelien 77
	public static PropositionDetermination creerPropositionDeterminationAPartirObservation(Observation observation) {
763 aurelien 78
 
837 aurelien 79
		String utilisateurNom = observation.getNomAuteur();
80
		String utilisateurPrenom = observation.getPrenomAuteur();
81
		String utilisateurCourriel = observation.getCourrielAuteur();
82
		PropositionDetermination propositionDetermination = new PropositionDetermination(observation);
763 aurelien 83
		Contributeur contributeur = new Contributeur(utilisateurNom, utilisateurPrenom, utilisateurCourriel);
690 gduche 84
		propositionDetermination.setContributeur(contributeur);
837 aurelien 85
		java.util.Date datePropDeter = parserDateObservation(observation.getDateReleve());
500 aurelien 86
		propositionDetermination.setDate(datePropDeter);
837 aurelien 87
		propositionDetermination.setEspece(observation.getNomRetenu());
500 aurelien 88
 
89
		return propositionDetermination;
90
	}
91
 
846 aurelien 92
	public static List<InterventionForum> parserInterventions(JSONObject interventions, Observation observation) {
93
		List<InterventionForum> listeInterventions = new ArrayList<InterventionForum>();
94
		//TODO: ne faire ceci que si la proposition correspondant à la détermination originale n'a pas été créée
95
		PropositionDetermination determinationOriginale = creerPropositionDeterminationAPartirObservation(observation);
96
		listeInterventions.add(determinationOriginale);
97
 
98
		java.util.Iterator<String> itInterventions = interventions.keySet().iterator();
99
		while (itInterventions.hasNext()) {
100
			JSONObject intervention = interventions.get(itInterventions.next()).isObject();
101
			String nomSel = getValeurOuVide(intervention, "nom_sel");
102
			if(!nomSel.equals("")) {
103
				PropositionDetermination propDeter = new PropositionDetermination(observation);
104
				Contributeur auteurProposition = new Contributeur(getValeurOuVide(intervention, "utilisateur_nom"),
105
						getValeurOuVide(intervention, "utilisateur_prenom"), getValeurOuVide(intervention, "utilisateur_courriel"));
106
				propDeter.setContributeur(auteurProposition);
107
				//TODO: parser date proposition
108
				propDeter.setDate(new Date());
109
				propDeter.setEspece(nomSel);
110
				propDeter.setId(getValeurOuVide(intervention, "id_commentaire"));
111
				if(intervention.get("votes") != null && intervention.get("votes").isObject() != null) {
112
					propDeter.setVotesDeterminations(parserVotesDetermination(intervention.get("votes").isObject(), propDeter));
113
				}
114
				listeInterventions.add(propDeter);
115
			}
116
		}
117
 
118
		return listeInterventions;
119
	}
120
 
121
	public static HashMap<String, VoteDetermination> parserVotesDetermination(JSONObject votes, PropositionDetermination proposition) {
122
		HashMap<String, VoteDetermination> votesDetermination = new HashMap<String, VoteDetermination>();
123
		java.util.Iterator<String> itVotes = votes.keySet().iterator();
124
		while (itVotes.hasNext()) {
125
			JSONObject vote = votes.get(itVotes.next()).isObject();
126
			VoteDetermination vd = new VoteDetermination();
127
			vd.setContributeur(getValeurOuVide(vote, "auteur.id"));
128
			vd.setDate(new Date());
129
			vd.setId(getValeurOuVide(vote, "vote.id"));
130
			vd.setPropositionDetermination(proposition);
131
			vd.setVote(Integer.parseInt(getValeurOuVide(vote, "vote")));
132
 
133
			votesDetermination.put(getValeurOuVide(vote, "auteur.id"), vd);
134
		}
135
		return votesDetermination;
136
	}
137
 
777 aurelien 138
	public static HashMap<String, HashMap<String,VoteProtocole>> parserVotesProtocoles(JSONObject votes) {
500 aurelien 139
 
629 aurelien 140
		HashMap<String, HashMap<String,VoteProtocole>> votesProtocoles = new HashMap<String, HashMap<String,VoteProtocole>>();
777 aurelien 141
		java.util.Iterator<String> itProtocoles = votes.keySet().iterator();
142
		while(itProtocoles.hasNext()) {
143
			JSONObject protocole = votes.get(itProtocoles.next()).isObject();
144
			JSONObject votesPourCeProtocoles = protocole.get("votes").isObject();
145
			String idProtocoleVote = protocole.get("protocole.id").isString().stringValue();
146
			java.util.Iterator<String> itVotes = votesPourCeProtocoles.keySet().iterator();
147
			while(itVotes.hasNext()) {
148
				JSONObject voteEnCours = votesPourCeProtocoles.get(itVotes.next()).isObject();
149
				VoteProtocole vd = new VoteProtocole();
150
				vd.setContributeur(voteEnCours.get("auteur.id").isString().stringValue());
151
				// TODO récupérer la date du vote et la parser
152
				vd.setDate(new Date());
153
				int valeurVote = Integer.parseInt(voteEnCours.get("vote").isString().stringValue());
154
				vd.setVote(valeurVote);
155
				if(!votesProtocoles.containsKey(idProtocoleVote)) {
156
					votesProtocoles.put(idProtocoleVote, new HashMap<String,VoteProtocole>());
157
				}
158
				votesProtocoles.get(idProtocoleVote).put(vd.getContributeur(), vd);
500 aurelien 159
			}
160
		}
161
 
162
		return votesProtocoles;
163
	}
164
 
165
	public static Date parserDateObservation(String date) {
166
		Date dateParsee = new Date();
167
		DateTimeFormat formatDateObs = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss");
168
        try{
169
          dateParsee = formatDateObs.parse(date);
170
        } catch (IllegalArgumentException e) {
171
        	dateParsee = new java.sql.Date(0);
172
		}
173
        return dateParsee;
174
	}
175
 
176
	public static List<String> parserMotsCles(String motsClesTexte) {
177
		String[] tabMotsCle = motsClesTexte.split(",");
178
		List<String> motsClesParses = new ArrayList<String>();
179
		for (int i = 0; i < tabMotsCle.length; i++) {
180
			motsClesParses.add(tabMotsCle[i]);
181
		}
182
 
183
		return motsClesParses;
184
	}
185
 
186
	public static String getIdAvecPadding(String id) {
187
 
188
		int maxZeros = 9 - id.length();
189
 
190
		for (int i = 0; i < maxZeros; i++) {
191
			id = "0" + id;
192
		}
193
 
194
		return id;
195
	}
516 aurelien 196
 
197
	public static Utilisateur parserUtilisateurJson(JSONValue valeurJson) {
198
 
199
		JSONObject utilisateurJson = valeurJson.isObject();
200
		boolean connecteUtilisateur = utilisateurJson.get("connecte").isBoolean().booleanValue();
201
		String idUtilisateur = utilisateurJson.get("id_utilisateur").isString().stringValue();
202
 
203
		Utilisateur utilisateur;
204
 
205
		if(connecteUtilisateur) {
522 aurelien 206
			String courrielUtilisateur = utilisateurJson.get("courriel").isString().stringValue();
516 aurelien 207
			String nomUtilisateur = utilisateurJson.get("nom").isString().stringValue();
208
			String prenomUtilisateur = utilisateurJson.get("prenom").isString().stringValue();
209
 
210
			utilisateur = new Utilisateur(idUtilisateur, prenomUtilisateur, nomUtilisateur, courrielUtilisateur);
211
		} else {
212
			utilisateur = new Utilisateur(idUtilisateur);
213
		}
214
 
215
		return utilisateur;
216
	}
500 aurelien 217
}