Revision 44644 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/FeatureQueryOrder.java
FeatureQueryOrder.java | ||
---|---|---|
23 | 23 |
package org.gvsig.fmap.dal.feature; |
24 | 24 |
|
25 | 25 |
import java.util.ArrayList; |
26 |
import java.util.Collections; |
|
26 | 27 |
import java.util.Comparator; |
27 | 28 |
import java.util.Iterator; |
28 | 29 |
import java.util.List; |
... | ... | |
97 | 98 |
return (FeatureQueryOrderMember) super.clone(); |
98 | 99 |
} |
99 | 100 |
|
101 |
public void setAscending(boolean ascending) { |
|
102 |
this.ascending = ascending; |
|
103 |
} |
|
104 |
|
|
100 | 105 |
} |
101 | 106 |
|
102 |
private List members = new ArrayList(); |
|
107 |
private List<FeatureQueryOrderMember> members = new ArrayList();
|
|
103 | 108 |
|
104 | 109 |
public FeatureQueryOrder() { |
105 | 110 |
} |
106 | 111 |
|
112 |
@Override |
|
113 |
public String toString() { |
|
114 |
StringBuilder builder = new StringBuilder(); |
|
115 |
boolean needComma = false; |
|
116 |
for (FeatureQueryOrderMember member : members) { |
|
117 |
if( member!=null && !StringUtils.isBlank(member.getAttributeName()) ) { |
|
118 |
if( needComma ) { |
|
119 |
builder.append(","); |
|
120 |
} |
|
121 |
if( member.ascending ) { |
|
122 |
builder.append("+"); |
|
123 |
} else { |
|
124 |
builder.append("-"); |
|
125 |
} |
|
126 |
builder.append(member.getAttributeName()); |
|
127 |
needComma = true; |
|
128 |
} |
|
129 |
} |
|
130 |
String s = builder.toString(); |
|
131 |
if( StringUtils.isBlank(s) ) { |
|
132 |
return null; |
|
133 |
} |
|
134 |
return s; |
|
135 |
} |
|
136 |
|
|
107 | 137 |
public Object add(String order) { |
108 | 138 |
if( StringUtils.isEmpty(order) ) { |
109 | 139 |
return null; |
... | ... | |
198 | 228 |
public int size() { |
199 | 229 |
return this.members.size(); |
200 | 230 |
} |
231 |
|
|
232 |
public int getIndex(String attributeName) { |
|
233 |
int n = 0; |
|
234 |
for (FeatureQueryOrderMember member : members) { |
|
235 |
if( member!=null && StringUtils.equalsIgnoreCase(attributeName, member.getAttributeName()) ) { |
|
236 |
return n; |
|
237 |
} |
|
238 |
n++; |
|
239 |
} |
|
240 |
return -1; |
|
241 |
} |
|
242 |
|
|
243 |
public void movePrevious(String name) { |
|
244 |
int n = this.getIndex(name); |
|
245 |
if( n<1 ) { |
|
246 |
return; |
|
247 |
} |
|
248 |
Collections.swap(members, n, n-1); |
|
249 |
} |
|
201 | 250 |
|
202 |
public Comparator getFeatureComparator() { |
|
251 |
public void moveNext(String name) { |
|
252 |
int n = this.getIndex(name); |
|
253 |
if( n>=this.members.size()-1 ) { |
|
254 |
return; |
|
255 |
} |
|
256 |
Collections.swap(members, n, n+1); |
|
257 |
} |
|
258 |
|
|
259 |
public boolean isEmpty() { |
|
260 |
return this.members==null || this.members.isEmpty(); |
|
261 |
} |
|
262 |
|
|
263 |
public FeatureQueryOrderMember get(String attributeName) { |
|
264 |
for (FeatureQueryOrderMember member : members) { |
|
265 |
if( member!=null && StringUtils.equalsIgnoreCase(attributeName, member.getAttributeName()) ) { |
|
266 |
return member; |
|
267 |
} |
|
268 |
} |
|
269 |
return null; |
|
270 |
} |
|
271 |
|
|
272 |
public boolean contains(String attributeName) { |
|
273 |
for (FeatureQueryOrderMember member : members) { |
|
274 |
if( member!=null && StringUtils.equalsIgnoreCase(attributeName, member.getAttributeName()) ) { |
|
275 |
return true; |
|
276 |
} |
|
277 |
} |
|
278 |
return false; |
|
279 |
} |
|
280 |
|
|
281 |
public Comparator<Feature> getFeatureComparator() { |
|
203 | 282 |
return new DefaultFeatureComparator(this); |
204 | 283 |
} |
205 | 284 |
|
206 |
public Object clone() throws CloneNotSupportedException { |
|
285 |
@Override |
|
286 |
public FeatureQueryOrder clone() throws CloneNotSupportedException { |
|
207 | 287 |
FeatureQueryOrder clone = (FeatureQueryOrder) super.clone(); |
208 | 288 |
|
209 | 289 |
if (members != null) { |
210 | 290 |
clone.members = new ArrayList(members.size()); |
211 | 291 |
for (int i = 0; i < members.size(); i++) { |
212 |
clone.members.add(((Cloneable) members.get(i)).clone());
|
|
292 |
clone.members.add((members.get(i)).clone()); |
|
213 | 293 |
} |
214 | 294 |
} |
215 | 295 |
|
... | ... | |
231 | 311 |
return aCopy; |
232 | 312 |
} |
233 | 313 |
|
314 |
@Override |
|
234 | 315 |
public void loadFromState(PersistentState state) |
235 | 316 |
throws PersistenceException { |
236 | 317 |
this.members = (List) state.get("menbers"); |
237 | 318 |
} |
238 | 319 |
|
320 |
@Override |
|
239 | 321 |
public void saveToState(PersistentState state) throws PersistenceException { |
240 | 322 |
state.set("menbers", members); |
241 | 323 |
} |
242 | 324 |
|
243 |
private class DefaultFeatureComparator implements Comparator { |
|
325 |
private class DefaultFeatureComparator implements Comparator<Feature> {
|
|
244 | 326 |
|
245 |
private FeatureQueryOrder order; |
|
327 |
private final FeatureQueryOrder order;
|
|
246 | 328 |
|
247 | 329 |
public DefaultFeatureComparator(FeatureQueryOrder order) { |
248 | 330 |
this.order = order; |
... | ... | |
278 | 360 |
|
279 | 361 |
} |
280 | 362 |
|
281 |
public int compare(Object arg0, Object arg1) { |
|
363 |
@Override |
|
364 |
public int compare(Feature f0, Feature f1) { |
|
282 | 365 |
Iterator iter = this.order.iterator(); |
283 | 366 |
int returnValue = 0; |
284 |
Feature f0 = (Feature) arg0; |
|
285 |
Feature f1 = (Feature) arg1; |
|
367 |
// Feature f0 = (Feature) arg0;
|
|
368 |
// Feature f1 = (Feature) arg1;
|
|
286 | 369 |
Object item; |
287 | 370 |
String attrName; |
288 | 371 |
Evaluator evaluator; |
Also available in: Unified diff