Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2805 → Rev 2806

/trunk/src/org/tela_botanica/client/modeles/dao/UtilisateurAsynchroneDAO.java
13,12 → 13,17
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
 
public class UtilisateurAsynchroneDAO {
27,6 → 32,7
* Le modèle associé au DAO
*/
private CarnetEnLigneModele carnetEnLigneModele = null ;
private Timer rafraichisseurJeton;
/**
* Constructeur
41,10 → 47,10
* @param retour : methode appelle en retour d'appel
*/
public void getEtatUtilisateur(final Rafraichissable r) {
 
public void getEtatUtilisateur(final Rafraichissable r) {
String url = Configuration.getIdentificationBaseUrl()+"/identite/";
// Recherche identifiant utilisateur identifie
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/") ;
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
58,19 → 64,29
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
// Drapeau leve si utilisateur deja identifie
boolean identifie = objetJsonUtilisateur.get("session").isBoolean().booleanValue();
if(identifie) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
}
}
// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
// une session temporaire
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
79,21 → 95,17
}
}
 
 
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()+ "/User/" + user) ;
public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
try {
String url = Configuration.getServiceBaseUrl()+"/User/";
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
100,26 → 112,32
public void onResponseReceived(Request request,
Response response) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
if(r != null) {
r.rafraichir(utilisateur,true);
}
} else {
}
}
}
}) ;
}) ;
} catch (RequestException e) {
}
}
 
public void connecteUtilisateur (final Rafraichissable r, String login, String password) {
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/" + login + "/" + password) ;
try {
rb.sendRequest(null, new RequestCallback() {
132,24 → 150,84
 
@Override
public void onResponseReceived(Request request,
Response response) {
Response response) {
Utilisateur.setJeton("");
gererTimerRafraichissementJeton(0, r);
obtenirInfosComplementairesUtilisateur(r);
}
}) ;
} catch (RequestException e) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
}
}
 
public void connecterUtilisateur (final Rafraichissable r, String login, String password) {
 
//connexion?login=aurelien@tela-botanica.org&password=Canard123$
if(!login.isEmpty() && !password.isEmpty()) {
String url = Configuration.getIdentificationBaseUrl() + "/connexion?login=" + URL.encodeComponent(login) + "&password=" + URL.encodeComponent(password);
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
}
}
@Override
public void onResponseReceived(Request request,
Response response) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
} catch (RequestException e) {
}) ;
e.printStackTrace() ;
}
}
}
private void gererTimerRafraichissementJeton(int duree, final Rafraichissable r) {
// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
if (!Utilisateur.getJeton().isEmpty() && duree > 0) {
} catch (RequestException e) {
e.printStackTrace() ;
if (rafraichisseurJeton == null) { // on sait jamais
// 3/4 de la durée de vie du jeton, en millisecondes (ça laisse de la marge)
int delaiRepetition = (duree * 1000) * 3 / 4;
rafraichisseurJeton = new Timer() {
@Override
public void run() {
// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
// en cours de connexion
getEtatUtilisateur(null);
}
};
rafraichisseurJeton.scheduleRepeating(delaiRepetition);
}
} else {
if (rafraichisseurJeton != null) { // on sait jamais non plus
rafraichisseurJeton.cancel();
rafraichisseurJeton = null;
}
}
}