Initialisation de variable a condition

Fermé
Rami50 Messages postés 36 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 22 mars 2013 - 22 mars 2013 à 06:06
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 22 mars 2013 à 06:41
Bonjour,


je voudrais creer une classe qui permet dee faire un login et logout depuis un serveur, l'adresse ip de celui-la est definie d'une facon statique au debut de la fonction , comme suit:


private static String loginURL = "http://192.168.1.5/android_login_api/"


je voudrais savoir si c'est possible d'initialiser cet url depondament d'une condition(d'une facon dynamique). par exemple(c'est juste pour clarifier ce que je veux faire):
if(this.isConnectedToServer("192.168.1.5", 500)) {
    private static String loginURL = "http://192.168.1.5/android_login_api/";
}

if(this.isConnectedToServer("192.168.1.9", 500)) {
    private static String loginURL = "http://192.168.1.9/android_login_api/";
}


j'ai pensé a passer l'url en parametre dans tous les fonctions de ma classe mais je crois que c'est moche. je fais utiliser ca comme dernier recours.
toute proposition est le bienvenue ,je n'ais pas de contraintes. voici ma classe :

public class UserFunctions {

private JSONParser jsonParser;

private static String loginURL = "http://192.168.1.5/android_login_api/";
private static String mplayerURL = "http://192.168.1.5/android_mplayer_api/";
private static String registerURL = "http://192.168.1.5/android_login_api/";

private static String login_tag = "login";
private static String register_tag = "register";
private static String delete_tag = "delete";
private static String update_tag = "update";
private static String music_tag = "music";
private static String getusers_tag = "getusers";


// constructor
public UserFunctions(){
    jsonParser = new JSONParser();
}

/**
 * function make Login Request
 * @param email
 * @param password
 * */
public JSONObject loginUser(String email, String password){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", login_tag));
    params.add(new BasicNameValuePair("email", email));
    params.add(new BasicNameValuePair("password", password));
    JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
    // return json
    Log.i("JSON", json.toString());
    return json;
}
public JSONObject deleteUser(String email){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", delete_tag));
    params.add(new BasicNameValuePair("email", email));
    JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
    // return json
    Log.i("JSON", json.toString());
    return json;
}

public JSONObject updateUser(String email, String field, String value){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", update_tag));
    params.add(new BasicNameValuePair("email", email));
    params.add(new BasicNameValuePair("field", field));
    params.add(new BasicNameValuePair("value", value));
    JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
    // return json
    Log.i("JSON", json.toString());
    return json;
}



public boolean isConnectedToServer(String url, int timeout) {
    try{
        URL myUrl = new URL(url);
        URLConnection connection = myUrl.openConnection();
        connection.setConnectTimeout(timeout);
        connection.connect();
        return true;
    } catch (Exception e) {
        // Handle your exceptions
        return false;
    }
}

/**
 * function make Login Request
 * @param name
 * @param email
 * @param password
 * */
public JSONObject registerUser(String name, String email, String mode, String password){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", register_tag));
    params.add(new BasicNameValuePair("name", name));
    params.add(new BasicNameValuePair("email", email));
    params.add(new BasicNameValuePair("mode", mode));
    params.add(new BasicNameValuePair("password", password));

    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(registerURL, params);
    // return json
    return json;
}

    public JSONObject PlayMusic(String name){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", "play"));
    params.add(new BasicNameValuePair("name", name));
    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
    // return json
    return json;
}

public JSONObject ChangeVol(String volume){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", "volume"));
    params.add(new BasicNameValuePair("volume", volume));
    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
    // return json
    return json;
}

public JSONObject StopMusic(){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", "stop"));
    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
    // return json
    return json;
}


public JSONObject ParcourirMusic(){
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", "parcourir"));
    // getting JSON Object
    JSONObject json = jsonParser.getJSONFromUrl(mplayerURL, params);
    // return json
    return json;
}


/**
 * Function get Login status
 * */
public boolean isUserLoggedIn(Context context){
    DatabaseHandler db = new DatabaseHandler(context);
    int count = db.getRowCount();
    if(count > 0){
        // user logged in
        return true;
    }
    return false;
}

/**
 * Function to logout user
 * Reset Database
 * */
public boolean logoutUser(Context context){
    DatabaseHandler db = new DatabaseHandler(context);
    db.resetTables();
    return true;
}

public void ReadMail(){

try{
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "rami.mtiri@gmail.com", "pass");
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);


SearchTerm term = new SearchTerm() {
  @Override
  public boolean match(Message mess) {
    try {
      return mess.getContent().toString().toLowerCase().indexOf("boston") != -1;
    } catch (IOException ex) {
     // Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (MessagingException ex) {
     // Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
    }
    return false;
  }
};

Message[] searchResults = inbox.search(term);
for(Message m:searchResults){
    Log.e("mail",m.getFrom()[0].toString() );
  System.out.println("MATCHED: " + m.getFrom()[0]);

}
} catch (Exception e) {

}

}

}


merci

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
22 mars 2013 à 06:41
Tu n'es pas obligé d'initialiser une variable au moment de sa déclaration, par ailleurs, à moins de déclarer ta variable avec le mot clé final, rien ne t'empêches de changer sa valeur au fur et à mesure de l'exécution...

Par contre, tu as un problème plus "théorique" c'est que tu déclares loginUrl static mais en l'initialisant avec this, ça risque de ne pas faire ce que tu veux...

// quelques constantes pour pouvoir adapter le code rapidement en cas de changements d'adressage
private static final String URL_PREFIX = "http://", URL_SUFFIX= "/android_login_api/", IP_1 = "192.168.1.5", IP_2 = "192.168.1.9";
private static final int TIME_OUT = 500;

private /*static*/ String loginURL; // null par défaut

private void initURL()
{
    String ip;
    
    if (isConnectedToServer(IP_1, TIME_OUT))
        ip=IP_1;
    else if(isConnectedToServer(IP_2, TIME_OUT))
        ip=IP_2;
    else
        throw new RuntimeException("Not connected to server");
    
    loginURL = URL_PREFIX+ip+URL_SUFFIX;
}
Evidemment, il faut ensuite utiliser la méthode "initURL" au bon endroit, c'est à dire à un moment où "isConnectedToServer" va renvoyer vrai pour une adresse, c'est à dire une fois que tu es bien connecté quelque part...
1