public static ExpressionModel computeExpression ( String expression ) { // Si l'expression est vide if ( expression == null || expression . trim ( ) . length ( ) == 0 ) { // On retourne null return null ; } // On Instancie un model d'expression ExpressionModel expressionModel = new ExpressionModel ( expression . trim ( ) ) ; // Index de l'iteration int i = 0 ; // Si la chaine contient des Fonctions if ( isExpressionContainPattern ( expression . trim ( ) , FUNC_CHAIN_PATTERN ) ) { // Obtention de la liste des Fonctions String [ ] functions = extractToken ( expression , FUNC_CHAIN_PATTERN ) ; // Parcours for ( String function : functions ) { // Chaine en cours String currentExpression = expressionModel . getComputedExpression ( ) ; // Nom de la Variable String parameterName = "var" + i ++ ; // On remplace l'occurence courante par le nom de la variable currentExpression = currentExpression . replace ( function , ":" + parameterName ) ; // On met a jour l'expression computee expressionModel . setComputedExpression ( currentExpression ) ; // On ajoute les parametres expressionModel . addParameter ( parameterName , function ) ; } } // Tant que la chaene traitee contient des ENVs while ( isExpressionContainPattern ( expressionModel . getComputedExpression ( ) , ENV_CHAIN_PATTERN ) ) { // Obtention de la liste des ENVs String [ ] envs = extractToken ( expressionModel . getComputedExpression ( ) , ENV_CHAIN_PATTERN ) ; // Parcours for ( String env : envs ) { // Chaine en cours String currentExpression = expressionModel . getComputedExpression ( ) ; // Nom de la Variable String parameterName = "var" + i ++ ; // On remplace l'occurence courante par le nom de la variable currentExpression = currentExpression . replace ( env , ":" + parameterName ) ; // On met a jour l'expression computee expressionModel . setComputedExpression ( currentExpression ) ; // On ajoute les parametres expressionModel . addParameter ( parameterName , env ) ; } } // On retourne l'expression return expressionModel ; }
Methode de resolution d une Expression