IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Optimisation de mon BreadCrumb


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Par défaut Optimisation de mon BreadCrumb
    Bonjour,

    j'ai voudrais faire un BreadCrumb à partir d'une url. Ce que j'ai fait est loin d’être optimiser et claire. (C'est un peu du bricolage :s)
    Pouvez m'aider à l'améliorer?

    mon path peut etre du genre : /admin/blabla/list/12/edit.html
    ou
    /admin/blabla/list/edit/12.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        private static String REGEX_NOMBRE       = "([0-9]+/)";
        private static String REGEX_VIEW         = "/view";
        private static String REGEX_DOUBLE_SLASH = "//";
     
     
             String path = request.getServletPath().replace(".html", "").toString();
     
                path = path.replaceAll(REGEX_NOMBRE, "");
                path = path.replace(REGEX_VIEW, "");
                path = path.replace(REGEX_DOUBLE_SLASH, "");
                path = path.substring(1);
                path = path.replaceAll("(/[0-9]+)", "");
     
                int from = path.indexOf('/');
                int to = path.indexOf('/', from);
                // String str;
                ArrayList<String> str = new ArrayList<String>();
                if (from == -1)
                    str.add(path);
                else {
                    str.add(path.substring(0, from));
                    str.add(path.substring(from + 1, path.length()).replace("/", "."));
                }
    Et je voudrais récuperer dans mon tableau "str"
    le premier token1 : admin
    puis le reste de l'url sans les nombres et html
    token2 : blabla.list.edit


    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Question optimisation, c'est un peu tout pareil.

    Pour le rendre plus clair, le mieux serait de programmer en montrant directement ton intention. Je te donne un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    static List<String> extractPathTokens(String path) {
      path = removeHtml(path);
      List<String> tokens = separateTokens(path);
      String token2 = tokens.get(1);
      token2 = removeNumbers(token2);
      token2 = replaceSeparators(token2);
      tokens.set(1, token2);
      return tokens;
    }
     
    private static String removeHtml(String path) {
        final String SUFFIX = ".html";
        if(path.endsWith(SUFFIX)) {
            return path.substring(0, path.length() - SUFFIX.length());
        } else {
            return path;
        }
    }
     
    private static final Pattern PATH_PATTERN = Pattern.compile("/(.+?)/(.*)");
     
    private static List<String> separateTokens(String path) {
      Matcher matcher = PATH_PATTERN.matcher(path);
      if(!matcher.matches()) {
        throw new IllegalArgumentException("Unknown path pattern: " + path);
      }
      List<String> tokens = new ArrayList<>();
      tokens.add(matcher.group(1));
      tokens.add(matcher.group(2));
      return tokens;
    }
     
    private static String removeNumbers(String token) {
      // On veut pouvoir remplacer /12/blablah par /blablah alors on force un / devant, qu'on enlèvera ensuite
      token = "/" + token;
      token = token.replaceAll("/[0-9]+", "");
      // on enlève le / ajouté au début
      return token.substring(1);
    }
     
    private static String replaceSeparators(String token) {
      return token.replace('/', '.');
    }
    Le programme est bien décomposé en méthodes qui ont chacune leur travail, chaque ligne est claire, ça se relit assez bien, et c'est pas trop compliqué de se replonger dedans s'il y a des choses à changer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide optimisation de mon programme.
    Par Warfdog dans le forum Prolog
    Réponses: 5
    Dernier message: 15/12/2010, 13h20
  2. [MySQL] Optimisation de mon formulaire
    Par Zarvox dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/07/2009, 15h16
  3. [Débutant] optimisation de mon programme
    Par zepek dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/05/2009, 09h14
  4. Optimisation de mon code
    Par ordner dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/03/2009, 16h19
  5. Optimisation de mon code ActionScript
    Par amnesias dans le forum Flash
    Réponses: 9
    Dernier message: 01/04/2007, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo