Subversion Repositories eFlore/Applications.del

Rev

Rev 846 | Rev 876 | 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"));
870 aurelien 47
		observation.setIdAuteur(getValeurOuVide(observationJson,"auteur.id"));
837 aurelien 48
		//TODO: renvoyer le courriel de l'auteur dans les obs
49
		observation.setCourrielAuteur("");
763 aurelien 50
		observation.setDateTransmission(getValeurOuVide(observationJson,"date_observation"));
51
		observation.setDateReleve(getValeurOuVide(observationJson, "date_observation"));
52
		observation.setFamille(getValeurOuVide(observationJson, "determination.famille"));
846 aurelien 53
		observation.setId(getValeurOuVide(observationJson, "id_observation"));
54
		observation.setIdLocalite(getValeurOuVide(observationJson, "id_zone_geo"));
55
		observation.setLocalite(getValeurOuVide(observationJson, "zone_geo"));
56
		observation.setNomRetenu(getValeurOuVide(observationJson, "determination.ns"));
57
		observation.setMilieu(getValeurOuVide(observationJson, "milieu"));
58
		observation.setLieuDit(getValeurOuVide(observationJson, "lieudit"));
59
		observation.setNumNomenclatural(getValeurOuVide(observationJson, "determination.nn"));
763 aurelien 60
		//TODO: renvoyer les mots clés des observations
61
		//observation.setMotsClefs(parserMotsCles(UtilitairesServiceResultat.getValeurOuVide(observationJson, "mots_cles_texte")));
62
		//TODO: renvoyer les commentaires des obs
63
		//observation.setCommentaire(UtilitairesServiceResultat.getValeurOuVide(observationJson, "commentaire"));
846 aurelien 64
		JSONValue propositions = observationJson.get("commentaires");
65
 
66
		if(propositions != null && propositions.isObject() != null) {
67
			observation.setInterventionsForum(parserInterventions(propositions.isObject(), observation));
68
		} else {
69
			observation.ajouterPropositionDetermination(creerPropositionDeterminationAPartirObservation(observation));
70
		}
500 aurelien 71
		return observation;
72
	}
73
 
814 aurelien 74
	public static String getValeurOuVide(JSONObject objet, String index) {
763 aurelien 75
		return (objet.get(index).isString() != null) ? objet.get(index).isString().stringValue() : "";
76
	}
77
 
837 aurelien 78
	public static PropositionDetermination creerPropositionDeterminationAPartirObservation(Observation observation) {
763 aurelien 79
 
837 aurelien 80
		String utilisateurNom = observation.getNomAuteur();
81
		String utilisateurPrenom = observation.getPrenomAuteur();
82
		String utilisateurCourriel = observation.getCourrielAuteur();
83
		PropositionDetermination propositionDetermination = new PropositionDetermination(observation);
763 aurelien 84
		Contributeur contributeur = new Contributeur(utilisateurNom, utilisateurPrenom, utilisateurCourriel);
690 gduche 85
		propositionDetermination.setContributeur(contributeur);
837 aurelien 86
		java.util.Date datePropDeter = parserDateObservation(observation.getDateReleve());
500 aurelien 87
		propositionDetermination.setDate(datePropDeter);
837 aurelien 88
		propositionDetermination.setEspece(observation.getNomRetenu());
500 aurelien 89
 
90
		return propositionDetermination;
91
	}
92
 
846 aurelien 93
	public static List<InterventionForum> parserInterventions(JSONObject interventions, Observation observation) {
94
		List<InterventionForum> listeInterventions = new ArrayList<InterventionForum>();
95
 
870 aurelien 96
		boolean propositionDeterminationCreee = false;
97
 
846 aurelien 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);
870 aurelien 115
 
116
				String idContributeur = getValeurOuVide(intervention, "ce_utilisateur");
117
				if(nomSel.equals(observation.getNomRetenu()) && idContributeur.equals(observation.getIdAuteur())) {
118
					propositionDeterminationCreee = true;
119
				}
846 aurelien 120
			}
121
		}
122
 
870 aurelien 123
		if(!propositionDeterminationCreee) {
124
			PropositionDetermination determinationOriginale = creerPropositionDeterminationAPartirObservation(observation);
125
			listeInterventions.add(0, determinationOriginale);
126
		}
846 aurelien 127
		return listeInterventions;
128
	}
129
 
130
	public static HashMap<String, VoteDetermination> parserVotesDetermination(JSONObject votes, PropositionDetermination proposition) {
131
		HashMap<String, VoteDetermination> votesDetermination = new HashMap<String, VoteDetermination>();
132
		java.util.Iterator<String> itVotes = votes.keySet().iterator();
133
		while (itVotes.hasNext()) {
134
			JSONObject vote = votes.get(itVotes.next()).isObject();
135
			VoteDetermination vd = new VoteDetermination();
136
			vd.setContributeur(getValeurOuVide(vote, "auteur.id"));
137
			vd.setDate(new Date());
138
			vd.setId(getValeurOuVide(vote, "vote.id"));
139
			vd.setPropositionDetermination(proposition);
140
			vd.setVote(Integer.parseInt(getValeurOuVide(vote, "vote")));
141
 
142
			votesDetermination.put(getValeurOuVide(vote, "auteur.id"), vd);
143
		}
144
		return votesDetermination;
145
	}
146
 
777 aurelien 147
	public static HashMap<String, HashMap<String,VoteProtocole>> parserVotesProtocoles(JSONObject votes) {
500 aurelien 148
 
629 aurelien 149
		HashMap<String, HashMap<String,VoteProtocole>> votesProtocoles = new HashMap<String, HashMap<String,VoteProtocole>>();
777 aurelien 150
		java.util.Iterator<String> itProtocoles = votes.keySet().iterator();
151
		while(itProtocoles.hasNext()) {
152
			JSONObject protocole = votes.get(itProtocoles.next()).isObject();
153
			JSONObject votesPourCeProtocoles = protocole.get("votes").isObject();
154
			String idProtocoleVote = protocole.get("protocole.id").isString().stringValue();
155
			java.util.Iterator<String> itVotes = votesPourCeProtocoles.keySet().iterator();
156
			while(itVotes.hasNext()) {
157
				JSONObject voteEnCours = votesPourCeProtocoles.get(itVotes.next()).isObject();
158
				VoteProtocole vd = new VoteProtocole();
159
				vd.setContributeur(voteEnCours.get("auteur.id").isString().stringValue());
160
				// TODO récupérer la date du vote et la parser
161
				vd.setDate(new Date());
162
				int valeurVote = Integer.parseInt(voteEnCours.get("vote").isString().stringValue());
163
				vd.setVote(valeurVote);
164
				if(!votesProtocoles.containsKey(idProtocoleVote)) {
165
					votesProtocoles.put(idProtocoleVote, new HashMap<String,VoteProtocole>());
166
				}
167
				votesProtocoles.get(idProtocoleVote).put(vd.getContributeur(), vd);
500 aurelien 168
			}
169
		}
170
 
171
		return votesProtocoles;
172
	}
173
 
174
	public static Date parserDateObservation(String date) {
175
		Date dateParsee = new Date();
176
		DateTimeFormat formatDateObs = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss");
177
        try{
178
          dateParsee = formatDateObs.parse(date);
179
        } catch (IllegalArgumentException e) {
180
        	dateParsee = new java.sql.Date(0);
181
		}
182
        return dateParsee;
183
	}
184
 
185
	public static List<String> parserMotsCles(String motsClesTexte) {
186
		String[] tabMotsCle = motsClesTexte.split(",");
187
		List<String> motsClesParses = new ArrayList<String>();
188
		for (int i = 0; i < tabMotsCle.length; i++) {
189
			motsClesParses.add(tabMotsCle[i]);
190
		}
191
 
192
		return motsClesParses;
193
	}
194
 
195
	public static String getIdAvecPadding(String id) {
196
		int maxZeros = 9 - id.length();
197
		for (int i = 0; i < maxZeros; i++) {
198
			id = "0" + id;
199
		}
200
		return id;
201
	}
516 aurelien 202
 
203
	public static Utilisateur parserUtilisateurJson(JSONValue valeurJson) {
204
 
205
		JSONObject utilisateurJson = valeurJson.isObject();
206
		boolean connecteUtilisateur = utilisateurJson.get("connecte").isBoolean().booleanValue();
207
		String idUtilisateur = utilisateurJson.get("id_utilisateur").isString().stringValue();
208
 
209
		Utilisateur utilisateur;
210
 
211
		if(connecteUtilisateur) {
522 aurelien 212
			String courrielUtilisateur = utilisateurJson.get("courriel").isString().stringValue();
516 aurelien 213
			String nomUtilisateur = utilisateurJson.get("nom").isString().stringValue();
214
			String prenomUtilisateur = utilisateurJson.get("prenom").isString().stringValue();
215
 
216
			utilisateur = new Utilisateur(idUtilisateur, prenomUtilisateur, nomUtilisateur, courrielUtilisateur);
217
		} else {
218
			utilisateur = new Utilisateur(idUtilisateur);
219
		}
220
 
221
		return utilisateur;
222
	}
500 aurelien 223
}