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 @ 44408

History | View | Annotate | Download (7.36 KB)

1 44163 jjdelcerro
package org.gvsig.expressionevaluator;
2
3 44389 jjdelcerro
import java.io.File;
4 44397 jjdelcerro
import org.apache.commons.lang3.ArrayUtils;
5 44215 jjdelcerro
import org.apache.commons.lang3.StringUtils;
6 44198 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
7 44163 jjdelcerro
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 44215 jjdelcerro
        if( StringUtils.isBlank(phrase) ) {
58
            return null;
59
        }
60 44163 jjdelcerro
        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 44198 jjdelcerro
85
    public static ExpressionBuilder createExpressionBuilder() {
86
        ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
87
        return builder;
88
    }
89
90
    public static Code compile(String expression) {
91 44215 jjdelcerro
        if( StringUtils.isBlank(expression) ) {
92
            return null;
93
        }
94 44198 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
95
        Code code = manager.compile(expression);
96
        return code;
97
    }
98
99 44346 jjdelcerro
    public static Object evaluate(String expression) {
100
        return evaluate(null, expression);
101
    }
102
103 44198 jjdelcerro
    public static Object evaluate(SymbolTable symbolTable, String expression) {
104 44215 jjdelcerro
        if( StringUtils.isBlank(expression) ) {
105
            return null;
106
        }
107 44346 jjdelcerro
        if( symbolTable==null ) {
108
            symbolTable = createSymbolTable();
109
        }
110 44198 jjdelcerro
        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 44215 jjdelcerro
    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 44397 jjdelcerro
173 44408 jjdelcerro
    public static String surroundByDynamicTextTag(String source) {
174
        return surroundByDynamicTextTag(source, true);
175
    }
176
177
    public static String surroundByDynamicTextTag(String source, boolean insert) {
178
        if( source==null ) {
179
            return null;
180
        }
181
        if( insert ) {
182
            return "<%=" + source + "%>";
183
        }
184
        return "<%" + source + "%>";
185
    }
186
187 44397 jjdelcerro
    public static boolean isDynamicText(String source) {
188
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
189
        if( ArrayUtils.isEmpty(sources) ) {
190
            return false;
191
        }
192
        return true;
193
    }
194 44215 jjdelcerro
195 44397 jjdelcerro
    public static String evaluateDynamicText(String source) {
196 44389 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
197 44397 jjdelcerro
        return manager.evaluateDynamicText(source);
198 44389 jjdelcerro
    }
199
200 44397 jjdelcerro
    public static String evaluateDynamicText(SymbolTable symbolTable, String source) {
201 44389 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
202 44397 jjdelcerro
        return manager.evaluateDynamicText(symbolTable, source);
203 44389 jjdelcerro
    }
204
205 44390 jjdelcerro
    public static File evaluateFilename(File source) {
206 44389 jjdelcerro
        return evaluateFilename(null, source);
207
    }
208 44397 jjdelcerro
209
    public static boolean isDynamicFilename(File source) {
210
        if( source == null ) {
211
            return false;
212
        }
213
        return isDynamicText(source.getPath());
214
    }
215 44389 jjdelcerro
216
    @SuppressWarnings("StringEquality")
217 44390 jjdelcerro
    public static File evaluateFilename(SymbolTable symbolTable, File source) {
218 44389 jjdelcerro
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
219
        String src =  source.getPath();
220 44397 jjdelcerro
        String r = manager.evaluateDynamicText(symbolTable, src);
221 44389 jjdelcerro
        if( r == src ) { // !!! I compare that it is the same pointer, it is what I want.
222
            return source;
223
        }
224
        File f = new File(r);
225
        return f;
226
    }
227
228 44163 jjdelcerro
}