Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / feature / FeatureQueryOrder.java @ 26321

History | View | Annotate | Download (2.29 KB)

1
package org.gvsig.fmap.dal.feature;
2

    
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.Iterator;
6
import java.util.List;
7

    
8
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureComparator;
9
import org.gvsig.tools.evaluator.Evaluator;
10

    
11
public class FeatureQueryOrder {
12

    
13
        private List members = new ArrayList();
14

    
15
        public class FeatureQueryOrderMember {
16
                String attributeName = null;
17
                Evaluator evaluator = null;
18
                boolean ascending;
19

    
20
                FeatureQueryOrderMember(String attributeName, boolean ascending) {
21
                        this.attributeName = attributeName;
22
                        this.ascending = ascending;
23
                }
24
                FeatureQueryOrderMember(Evaluator evaluator, boolean ascending) {
25
                        this.evaluator = evaluator;
26
            this.ascending = ascending;
27
                }
28
                public boolean hasEvaluator() {
29
                        return this.evaluator != null;
30
                }
31
                public Evaluator getEvaluator() {
32
                        return this.evaluator;
33
                }
34
                public boolean getAscending() {
35
                        return this.ascending;
36
                }
37
                public String getAttributeName() {
38
                        return this.attributeName;
39
                }
40
        }
41

    
42
        public Object add(String attributeName, boolean ascending) {
43
        FeatureQueryOrderMember member = new FeatureQueryOrderMember(
44
                attributeName, ascending);
45
                if( members.add(member) ) {
46
                        return member;
47
                }
48
                return null;
49
        }
50

    
51
        public Object add(Evaluator evaluator, boolean ascending) {
52
                FeatureQueryOrderMember member = new FeatureQueryOrderMember(
53
                                evaluator,
54
                                ascending);
55
                if (members.add(member)) {
56
                        return member;
57
                }
58
                return null;
59
        }
60

    
61
        public Iterator iterator() {
62
                return members.iterator();
63
        }
64

    
65
        public boolean remove(FeatureQueryOrderMember member) {
66
                return members.remove(member);
67
        }
68

    
69
        public void remove(int index) {
70
                members.remove(index);
71
        }
72

    
73
        public void clear() {
74
                members.clear();
75
        }
76

    
77
        public int size() {
78
                return this.members.size();
79
        }
80

    
81
        public Comparator getFeatureComparator() {
82
                return new DefaultFeatureComparator(this);
83
        }
84

    
85
        public FeatureQueryOrder getCopy() {
86
                FeatureQueryOrder aCopy = new FeatureQueryOrder();
87
                Iterator iter = this.members.iterator();
88
                FeatureQueryOrderMember member;
89
                while (iter.hasNext()) {
90
                        member = (FeatureQueryOrderMember) iter.next();
91
                        if (member.hasEvaluator()) {
92
                                aCopy.add(member.getEvaluator(), member.getAscending());
93
                        } else {
94
                                aCopy.add(member.getAttributeName(), member.getAscending());
95
                        }
96
                }
97
                return aCopy;
98
        }
99
}