Revision 43987 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/expressionevaluator/FeatureAttributeElement.java
FeatureAttributeElement.java | ||
---|---|---|
3 | 3 |
import java.util.ArrayList; |
4 | 4 |
import java.util.Iterator; |
5 | 5 |
import java.util.List; |
6 |
import org.apache.commons.lang.mutable.MutableInt; |
|
7 | 6 |
import org.gvsig.expressionevaluator.Function; |
8 | 7 |
import org.gvsig.expressionevaluator.swing.Element; |
9 | 8 |
import org.gvsig.expressionevaluator.swing.Element.GroupElement; |
... | ... | |
79 | 78 |
} |
80 | 79 |
|
81 | 80 |
@Override |
81 |
public void reload() { |
|
82 |
this.elements=null; |
|
83 |
hasMoreElements = false; |
|
84 |
} |
|
85 |
|
|
86 |
@Override |
|
82 | 87 |
public List<Element> getElements() { |
83 | 88 |
if( this.elements==null ) { |
84 | 89 |
hasMoreElements = false; |
85 |
final int limit = this.configPanel==null? 1000 : this.configPanel.getSimpleElementsLimit(); |
|
86 | 90 |
ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager(); |
87 | 91 |
final List<Object> values = new ArrayList<>(); |
92 |
final int limit = this.configPanel==null? 60 : this.configPanel.getSimpleElementsLimit(); |
|
93 |
final long timeLimit = System.currentTimeMillis() + limit*1000; |
|
88 | 94 |
try { |
89 | 95 |
FeatureSet set = this.store.getFeatureSet(); |
90 |
final MutableInt count = new MutableInt(0); |
|
91 | 96 |
set.accept(new Visitor() { |
92 | 97 |
@Override |
93 | 98 |
public void visit(Object o) throws VisitCanceledException, BaseException { |
... | ... | |
95 | 100 |
if( !values.contains(value ) ) { |
96 | 101 |
values.add(value); |
97 | 102 |
} |
98 |
count.increment(); |
|
99 |
if( count.intValue()>= limit ) { |
|
103 |
if( System.currentTimeMillis() > timeLimit ) { |
|
100 | 104 |
hasMoreElements = true; |
101 | 105 |
throw new VisitCanceledException(); |
102 | 106 |
} |
Also available in: Unified diff