Revision 44163

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpression.java
54 54
    }
55 55

  
56 56
    @Override
57
    public boolean isEmpty() {
58
        if( !StringUtils.isBlank(this.phrase) ) {
59
            return false;
60
        }
61
        if( this.scripts!=null && !this.scripts.isEmpty() ) {
62
            return false;
63
        }
64
        if( !StringUtils.isBlank(this.userScript.getCode()) ) {
65
            return false;
66
        }
67
        return true;
68
    }
69

  
70
    @Override
57 71
    public Script getUserScript() {
58 72
        return this.userScript;
59 73
    }
......
70 84
    }
71 85

  
72 86
    @Override
73
    public void setPhrase(String phrase) {
87
    public Expression setPhrase(String phrase) {
74 88
        this.phrase = phrase;
75 89
        this.code = null;
76 90
        this.hasNotBeenOptimized = true;
91
        return this;
77 92
    }
78 93

  
79 94
    @Override
80
    public void setUserScript(String code, String languaje) {
95
    public Expression setUserScript(String code, String languaje) {
81 96
        if (this.userScript == null) {
82 97
            ScriptManager scriptMananger = ToolsLocator.getScriptManager();
83 98
            this.userScript = scriptMananger.createScript("user", code, languaje);
......
87 102
            ScriptManager scriptMananger = ToolsLocator.getScriptManager();
88 103
            this.userScript = scriptMananger.createScript("user", code, languaje);
89 104
        }
105
        return this;
90 106
    }
91 107

  
92 108
    @Override
93
    public void setUserScript(Script script) {
109
    public Expression setUserScript(Script script) {
94 110
        this.userScript = script;
111
        return this;
95 112
    }
96 113

  
97 114
    @Override
98
    public void setUserScript(String code) {
115
    public Expression setUserScript(String code) {
99 116
        this.setUserScript(code, "python");
117
        return this;
100 118
    }
101 119

  
102 120
    @Override
......
106 124
    }
107 125

  
108 126
    @Override
109
    public void addScript(Script script) {
127
    public Expression addScript(Script script) {
110 128
        if (this.scripts == null) {
111 129
            this.scripts = new ArrayList<>();
112 130
        }
113 131
        this.scripts.add(script);
132
        return this;
114 133
    }
115 134

  
116 135
    @Override
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/Expression.java
22 22
    
23 23
    public UnmodifiableBasicList<Script> getScripts();
24 24

  
25
    public void setPhrase(String phrase);
25
    public Expression setPhrase(String phrase);
26 26
    
27
    public void setUserScript(String code, String languaje);
27
    public Expression setUserScript(String code, String languaje);
28 28
    
29
    public void setUserScript(String code);
29
    public Expression setUserScript(String code);
30 30
    
31
    public void setUserScript(Script script);
31
    public Expression setUserScript(Script script);
32 32
    
33 33
    public void removeAllScripts();
34 34
    
35
    public void addScript(Script script);
35
    public Expression addScript(Script script);
36 36
    
37 37
    public Object execute(SymbolTable symbolTable);
38 38
    
......
46 46
    
47 47
    public boolean isPhraseEmpty();
48 48
    
49
    public boolean isEmpty();
49 50
}
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
1
package org.gvsig.expressionevaluator;
2

  
3
import org.gvsig.tools.script.Script;
4

  
5
/**
6
 *
7
 * @author jjdelcerro
8
 */
9
public class ExpressionUtils {
10

  
11
    public static boolean isEmpty(Expression expression) {
12
        return expression == null || expression.isEmpty();
13
    }
14

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

  
40
    public static Expression defaultNullIfPhraseEmpty(Expression expression) {
41
        if( expression==null || expression.isPhraseEmpty() ) {
42
            return null;
43
        }
44
        return expression;
45
    }
46
   
47
    public static Expression createExpression() {
48
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
49
        return expression;
50
    }
51

  
52
    public static Expression createExpression(String phrase) {
53
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
54
        expression.setPhrase(phrase);
55
        return expression;
56
    }
57

  
58
    public static Expression createExpression(String phrase, String code, Script... scripts) {
59
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
60
        expression.setPhrase(phrase);
61
        expression.setUserScript(code);
62
        for (Script script : scripts) {
63
            expression.addScript(script);
64
        }
65
        return expression;
66
    }
67

  
68
    public static Expression createExpression(String phrase, String code, String languaje, Script... scripts) {
69
        Expression expression = ExpressionEvaluatorLocator.getManager().createExpression();
70
        expression.setPhrase(phrase);
71
        expression.setUserScript(code, languaje);
72
        for (Script script : scripts) {
73
            expression.addScript(script);
74
        }
75
        return expression;
76
    }
77
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/ExpressionPickerController.java
10 10
public interface ExpressionPickerController 
11 11
        extends PickerController<Expression>, ExpressionBuilderConfig {
12 12

  
13
    /**
14
     * Return the expression in the picker.
15
     * If a non-null value is assigned as the expression, it will return 
16
     * this value updated with what the user entered.
17
     * If a null value is assigned as the expression, when the user did not 
18
     * enter any value return null. When the user enter values, and the 
19
     * expression is not empty, it will return a new expression.
20
     * 
21
     * @return 
22
     */
23
    @Override
24
    public Expression get();
25

  
26
    
13 27
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultExpressionPickerController.java
14 14
import org.gvsig.expressionevaluator.DataTypes;
15 15
import org.gvsig.expressionevaluator.Expression;
16 16
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
17
import org.gvsig.expressionevaluator.ExpressionUtils;
17 18
import org.gvsig.expressionevaluator.SymbolTable;
18 19
import org.gvsig.expressionevaluator.swing.Element;
19 20
import org.gvsig.tools.ToolsLocator;
......
59 60
    private final ActionListener buttonAction;
60 61
    private final JMenuItem menuItem;
61 62
    private final AbstractAutomaticExpressionChecker automaticExpressionChecker;
63
    private boolean returnNullWhenEmptyExpression;
62 64
    
63 65
    public DefaultExpressionPickerController(ExpressionEvaluatorSwingManager manager, JTextComponent text, JButton button) {
64 66
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
......
69 71
        this.text = text;
70 72
        this.button = button;
71 73
        this.value = null;
74
        this.returnNullWhenEmptyExpression = true;
72 75
        this.button.setIcon(this.getIcon("picker-expression"));
73 76
        this.buttonAction = new ActionListener() {
74 77
            @Override
......
115 118
    @Override
116 119
    public Expression get() {
117 120
        String s = this.text.getText();
118
        if( StringUtils.isBlank(s) ) {
119
            return null;
121
        if( this.returnNullWhenEmptyExpression ) {
122
            if( ExpressionUtils.isEmpty(this.value) &&  StringUtils.isBlank(s) ) {
123
                return null;
124
            }
120 125
        }
121
        if( value == null ) {
122
            value = ExpressionEvaluatorLocator.getManager().createExpression();
126
        if( this.value == null ) {
127
            this.value = ExpressionEvaluatorLocator.getManager().createExpression();
123 128
        }
124
        this.value.setPhrase(this.text.getText());
129
        this.value.setPhrase(StringUtils.defaultIfBlank(this.text.getText(),null));
125 130
        return this.value;
126 131
    }
127 132

  
......
130 135
        if( value==null ) {
131 136
            this.text.setText("");
132 137
            this.value = null;
138
            this.returnNullWhenEmptyExpression = true;
133 139
        } else {
134 140
            this.value = value;
135 141
            this.text.setText(this.value.getPhrase());
142
            this.returnNullWhenEmptyExpression = false;
136 143
        }
137 144
    }
138 145

  

Also available in: Unified diff