Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src / org / gvsig / fmap / dal / feature / FeatureQueryOrder.java @ 38608

History | View | Annotate | Download (3.74 KB)

1 24496 jmvivo
package org.gvsig.fmap.dal.feature;
2 23754 jjdelcerro
3
import java.util.ArrayList;
4 23820 jjdelcerro
import java.util.Comparator;
5 23754 jjdelcerro
import java.util.Iterator;
6 23785 cordinyana
import java.util.List;
7 23754 jjdelcerro
8 24496 jmvivo
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureComparator;
9 23754 jjdelcerro
import org.gvsig.tools.evaluator.Evaluator;
10 31126 cordinyana
import org.gvsig.tools.lang.Cloneable;
11 29520 jmvivo
import org.gvsig.tools.persistence.Persistent;
12
import org.gvsig.tools.persistence.PersistentState;
13 32880 jjdelcerro
import org.gvsig.tools.persistence.exception.PersistenceException;
14 23754 jjdelcerro
15 31126 cordinyana
public class FeatureQueryOrder implements Persistent, Cloneable {
16 23754 jjdelcerro
17 23785 cordinyana
        private List members = new ArrayList();
18 23754 jjdelcerro
19 31126 cordinyana
        public class FeatureQueryOrderMember implements Persistent, Cloneable {
20 23754 jjdelcerro
                String attributeName = null;
21
                Evaluator evaluator = null;
22 23785 cordinyana
                boolean ascending;
23 23754 jjdelcerro
24 23785 cordinyana
                FeatureQueryOrderMember(String attributeName, boolean ascending) {
25 23754 jjdelcerro
                        this.attributeName = attributeName;
26 23785 cordinyana
                        this.ascending = ascending;
27 23754 jjdelcerro
                }
28 23785 cordinyana
                FeatureQueryOrderMember(Evaluator evaluator, boolean ascending) {
29 23754 jjdelcerro
                        this.evaluator = evaluator;
30 23785 cordinyana
            this.ascending = ascending;
31 23754 jjdelcerro
                }
32 23820 jjdelcerro
                public boolean hasEvaluator() {
33
                        return this.evaluator != null;
34
                }
35
                public Evaluator getEvaluator() {
36
                        return this.evaluator;
37
                }
38
                public boolean getAscending() {
39
                        return this.ascending;
40
                }
41
                public String getAttributeName() {
42
                        return this.attributeName;
43
                }
44 29520 jmvivo
                public void loadFromState(PersistentState state)
45
                                throws PersistenceException {
46
                        this.attributeName = state.getString("attributeName");
47
                        this.ascending = state.getBoolean("ascending");
48
                        this.evaluator = (Evaluator) state.get("evaluator");
49
                }
50
51
                public void saveToState(PersistentState state)
52
                                throws PersistenceException {
53
                        state.set("attributeName", this.attributeName);
54
                        state.set("ascending", this.ascending);
55
                        if (this.evaluator != null) {
56 30208 jmvivo
                                state.set("evaluator", evaluator);
57 29520 jmvivo
                        }
58
59
                }
60 31126 cordinyana
61
                public Object clone() throws CloneNotSupportedException {
62
                        // Nothing more to clone
63
                        return super.clone();
64
                }
65 23754 jjdelcerro
        }
66
67 23785 cordinyana
        public Object add(String attributeName, boolean ascending) {
68
        FeatureQueryOrderMember member = new FeatureQueryOrderMember(
69
                attributeName, ascending);
70 23754 jjdelcerro
                if( members.add(member) ) {
71
                        return member;
72
                }
73
                return null;
74
        }
75
76 23785 cordinyana
        public Object add(Evaluator evaluator, boolean ascending) {
77 23754 jjdelcerro
                FeatureQueryOrderMember member = new FeatureQueryOrderMember(
78
                                evaluator,
79 23785 cordinyana
                                ascending);
80 23754 jjdelcerro
                if (members.add(member)) {
81
                        return member;
82
                }
83
                return null;
84
        }
85
86
        public Iterator iterator() {
87
                return members.iterator();
88
        }
89
90
        public boolean remove(FeatureQueryOrderMember member) {
91
                return members.remove(member);
92
        }
93 23820 jjdelcerro
94 26321 jmvivo
        public void remove(int index) {
95
                members.remove(index);
96
        }
97
98
        public void clear() {
99
                members.clear();
100
        }
101
102 23820 jjdelcerro
        public int size() {
103
                return this.members.size();
104
        }
105
106
        public Comparator getFeatureComparator() {
107
                return new DefaultFeatureComparator(this);
108
        }
109 25917 jmvivo
110 31126 cordinyana
        public Object clone() throws CloneNotSupportedException {
111
                FeatureQueryOrder clone = (FeatureQueryOrder) super.clone();
112
113
                if (members != null) {
114
                        clone.members = new ArrayList(members.size());
115
                        for (int i = 0; i < members.size(); i++) {
116
                                clone.members.add(((Cloneable) members.get(i)).clone());
117
                        }
118
                }
119
120
                return clone;
121
        }
122
123 25917 jmvivo
        public FeatureQueryOrder getCopy() {
124
                FeatureQueryOrder aCopy = new FeatureQueryOrder();
125
                Iterator iter = this.members.iterator();
126
                FeatureQueryOrderMember member;
127
                while (iter.hasNext()) {
128
                        member = (FeatureQueryOrderMember) iter.next();
129
                        if (member.hasEvaluator()) {
130
                                aCopy.add(member.getEvaluator(), member.getAscending());
131
                        } else {
132
                                aCopy.add(member.getAttributeName(), member.getAscending());
133
                        }
134
                }
135
                return aCopy;
136
        }
137 29520 jmvivo
138
        public void loadFromState(PersistentState state)
139
                        throws PersistenceException {
140
                this.members = (List) state.get("menbers");
141
        }
142
143
        public void saveToState(PersistentState state) throws PersistenceException {
144
                state.set("menbers", members);
145
        }
146 31126 cordinyana
}