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

View differences:

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