Statistics
| Revision:

svn-gvsig-desktop / 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 / DefaultGrammarSet.java @ 44154

History | View | Annotate | Download (2.28 KB)

1 44139 jjdelcerro
package org.gvsig.expressionevaluator.impl;
2
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.Iterator;
6
import java.util.List;
7
import org.apache.commons.lang3.StringUtils;
8
import org.gvsig.expressionevaluator.Grammar;
9
import org.gvsig.expressionevaluator.GrammarSet;
10
import org.gvsig.expressionevaluator.Statement;
11
import org.gvsig.expressionevaluator.Statement.StatementContext;
12
13
/**
14
 *
15
 * @author jjdelcerro
16
 */
17
public class DefaultGrammarSet implements GrammarSet {
18
19
    private final List<Grammar> grammars;
20
21
    public DefaultGrammarSet() {
22
        this.grammars = new ArrayList<>();
23
    }
24
25
    @Override
26
    public Statement getApplicableStatement(StatementContext context) {
27
        for (Grammar grammar : this.grammars) {
28
            Statement stmt = grammar.getApplicableStatement(context);
29
            if( stmt != null ) {
30
                return stmt;
31
            }
32
        }
33
        return null;
34
    }
35
36
    @Override
37
    public boolean isReservedWord(String id) {
38
        for (Grammar grammar : this.grammars) {
39
            if( grammar.isReservedWord(id) ) {
40
                return true;
41
            }
42
        }
43
        return false;
44
    }
45
46
    public boolean contains(Grammar grammar) {
47
        if( grammar == null ) {
48
            return false;
49
        }
50
        for (Grammar theGrammar : this.grammars) {
51
            if( StringUtils.equalsIgnoreCase(theGrammar.getName(), grammar.getName()) ) {
52
                return true;
53
            }
54
        }
55
        return false;
56
    }
57
58
    @Override
59
    public void add(Grammar grammar) {
60
        if( grammar == null ) {
61
            return;
62
        }
63
        if( this.contains(grammar) ) {
64
            throw new IllegalArgumentException("The grammar set already contains the grammar '"+grammar+"'.");
65
        }
66
        this.grammars.add(grammar);
67
    }
68
69
    @Override
70
    public Grammar get(int i) {
71
        return this.grammars.get(i);
72
    }
73
74
    @Override
75
    public int size() {
76
        return this.grammars.size();
77
    }
78
79
    @Override
80
    public boolean isEmpty() {
81
        return this.grammars.isEmpty();
82
    }
83
84
    @Override
85
    public List<Grammar> toList() {
86
        return Collections.unmodifiableList(this.grammars);
87
    }
88
89
    @Override
90
    public Iterator<Grammar> iterator() {
91
        return this.grammars.iterator();
92
    }
93
94
}