Subversion Repositories eFlore/Applications.del

Rev

Rev 846 | Rev 876 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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