Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.api / src / main / java / org / gvsig / expressionevaluator / ExpressionUtils.java @ 44397

History | View | Annotate | Download (6.96 KB)

1
package org.gvsig.expressionevaluator;
2

    
3
import java.io.File;
4
import org.apache.commons.lang3.ArrayUtils;
5
import org.apache.commons.lang3.StringUtils;
6
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
7
import org.gvsig.tools.script.Script;
8

    
9
/**
10
 *
11
 * @author jjdelcerro
12
 */
13
public class ExpressionUtils {
14

    
15
    public static boolean isEmpty(Expression expression) {
16
        return expression == null || expression.isEmpty();
17
    }
18

    
19
    public static boolean isPhraseEmpty(Expression expression) {
20
        return expression == null || expression.isPhraseEmpty();
21
    }
22
    
23
    public static Expression defaultIfEmpty(Expression expression, Expression defaultValue) {
24
        if( expression==null || expression.isEmpty() ) {
25
            return defaultValue;
26
        }
27
        return expression;
28
    }
29
    
30
    public static Expression defaultNullIfEmpty(Expression expression) {
31
        if( expression==null || expression.isEmpty() ) {
32
            return null;
33
        }
34
        return expression;
35
    }
36
    
37
    public static Expression defaultIfPhraseEmpty(Expression expression, Expression defaultValue) {
38
        if( expression==null || expression.isPhraseEmpty() ) {
39
            return defaultValue;
40
        }
41
        return expression;
42
    }
43

    
44
    public static Expression defaultNullIfPhraseEmpty(Expression expression) {
45
        if( expression==null || expression.isPhraseEmpty() ) {
46
            return null;
47
        }
48
        return expression;
49
    }
50
   
51
    public static Expression createExpression() {
52
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
53
        return expression;
54
    }
55

    
56
    public static Expression createExpression(String phrase) {
57
        if( StringUtils.isBlank(phrase) ) {
58
            return null;
59
        }
60
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
61
        expression.setPhrase(phrase);
62
        return expression;
63
    }
64

    
65
    public static Expression createExpression(String phrase, String code, Script... scripts) {
66
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
67
        expression.setPhrase(phrase);
68
        expression.setUserScript(code);
69
        for (Script script : scripts) {
70
            expression.addScript(script);
71
        }
72
        return expression;
73
    }
74

    
75
    public static Expression createExpression(String phrase, String code, String languaje, Script... scripts) {
76
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
77
        expression.setPhrase(phrase);
78
        expression.setUserScript(code, languaje);
79
        for (Script script : scripts) {
80
            expression.addScript(script);
81
        }
82
        return expression;
83
    }
84

    
85
    public static ExpressionBuilder createExpressionBuilder() {
86
        ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
87
        return builder;
88
    }
89

    
90
    public static Code compile(String expression) {
91
        if( StringUtils.isBlank(expression) ) {
92
            return null;
93
        }
94
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
95
        Code code = manager.compile(expression);
96
        return code;
97
    }
98

    
99
    public static Object evaluate(String expression) {
100
        return evaluate(null, expression);
101
    }
102
    
103
    public static Object evaluate(SymbolTable symbolTable, String expression) {
104
        if( StringUtils.isBlank(expression) ) {
105
            return null;
106
        }
107
        if( symbolTable==null ) {
108
            symbolTable = createSymbolTable();
109
        }
110
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
111
        Object x = manager.evaluate(symbolTable, expression);
112
        return x;
113
    }
114

    
115
    public static Object evaluate(SymbolTable symbolTable, Code code) {
116
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
117
        Object x = manager.evaluate(symbolTable, code);
118
        return x;
119
    }
120

    
121
    public static Code optimize(SymbolTable symbolTable, Code code) {
122
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
123
        code = manager.optimize(symbolTable, code);
124
        return code;
125
    }
126

    
127
    public static String toString(Value value, Formatter formatter) {
128
        if( value == null ) {
129
            return null;
130
        }
131
        if( formatter==null ) {
132
            formatter = ExpressionBuilder.EMPTY_FORMATTER;
133
        }
134
        return value.toString(formatter);
135
    }
136

    
137
    public static String toString(Value value) {
138
        if( value == null ) {
139
            return null;
140
        }
141
        return value.toString(ExpressionBuilder.EMPTY_FORMATTER);
142
    }
143

    
144
    public static String toString(Code code, Formatter formatter) {
145
        if( code == null ) {
146
            return null;
147
        }
148
        if( formatter==null ) {
149
            formatter = Code.EMPTY_FORMATTER;
150
        }
151
        return code.toString(formatter);
152
    }
153

    
154
    public static String toString(Code code) {
155
        if( code == null ) {
156
            return null;
157
        }
158
        return code.toString(Code.EMPTY_FORMATTER);
159
    }
160

    
161
    public static Expression createExpressionFromJSON(String json) {
162
        Expression expression = ExpressionUtils.createExpression();
163
        expression.fromJSON(json);
164
        return expression;
165
    }
166

    
167
    public static MutableSymbolTable createSymbolTable() {
168
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
169
        MutableSymbolTable symbolTable = manager.createSymbolTable();
170
        return symbolTable;
171
    }
172
    
173
    public static boolean isDynamicText(String source) {
174
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
175
        if( ArrayUtils.isEmpty(sources) ) {
176
            return false;
177
        }
178
        return true;
179
    }
180

    
181
    public static String evaluateDynamicText(String source) {
182
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
183
        return manager.evaluateDynamicText(source);
184
    }
185
    
186
    public static String evaluateDynamicText(SymbolTable symbolTable, String source) {
187
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
188
        return manager.evaluateDynamicText(symbolTable, source);
189
    }
190

    
191
    public static File evaluateFilename(File source) {
192
        return evaluateFilename(null, source);
193
    }
194

    
195
    public static boolean isDynamicFilename(File source) {
196
        if( source == null ) {
197
            return false;
198
        }
199
        return isDynamicText(source.getPath());
200
    }
201
    
202
    @SuppressWarnings("StringEquality")
203
    public static File evaluateFilename(SymbolTable symbolTable, File source) {
204
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
205
        String src =  source.getPath();
206
        String r = manager.evaluateDynamicText(symbolTable, src);
207
        if( r == src ) { // !!! I compare that it is the same pointer, it is what I want.
208
            return source;
209
        }
210
        File f = new File(r);
211
        return f;
212
    }
213
    
214
}