Revision 43026 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
37 37
import org.gvsig.tools.persistence.PersistentState;
38 38
import org.gvsig.tools.persistence.exception.PersistenceException;
39 39

  
40
public class FeatureQueryOrder implements Persistent, Cloneable, Iterable<FeatureQueryOrderMember> {
40
public class FeatureQueryOrder implements Persistent, Cloneable {
41 41

  
42
    public class FeatureQueryOrderMember implements Persistent, org.gvsig.tools.lang.Cloneable {
43

  
44
        String attributeName = null;
45
        Evaluator evaluator = null;
46
        boolean ascending;
47

  
48
        FeatureQueryOrderMember(String attributeName, boolean ascending) {
49
            this.attributeName = attributeName;
50
            this.ascending = ascending;
51
        }
52

  
53
        FeatureQueryOrderMember(Evaluator evaluator, boolean ascending) {
54
            this.evaluator = evaluator;
55
            this.ascending = ascending;
56
        }
57

  
58
        public boolean hasEvaluator() {
59
            return this.evaluator != null;
60
        }
61

  
62
        public Evaluator getEvaluator() {
63
            return this.evaluator;
64
        }
65

  
66
        public boolean getAscending() {
67
            return this.ascending;
68
        }
69

  
70
        public String getAttributeName() {
71
            return this.attributeName;
72
        }
73

  
74
        @Override
75
        public void loadFromState(PersistentState state)
76
                throws PersistenceException {
77
            this.attributeName = state.getString("attributeName");
78
            this.ascending = state.getBoolean("ascending");
79
            this.evaluator = (Evaluator) state.get("evaluator");
80
        }
81

  
82
        @Override
83
        public void saveToState(PersistentState state)
84
                throws PersistenceException {
85
            state.set("attributeName", this.attributeName);
86
            state.set("ascending", this.ascending);
87
            if (this.evaluator != null) {
88
                state.set("evaluator", evaluator);
89
            }
90

  
91
        }
92

  
93
        @Override
94
        public FeatureQueryOrderMember clone() throws CloneNotSupportedException {
95
            // Nothing more to clone
96
            return (FeatureQueryOrderMember) super.clone();
97
        }
98

  
99
    }
100

  
42 101
    private List members = new ArrayList();
43 102

  
103
    public FeatureQueryOrder() {
104
    }
105
        
44 106
    public Object add(String attributeName, boolean ascending) {
45 107
        FeatureQueryOrderMember member = new FeatureQueryOrderMember(
46 108
                attributeName, ascending);
......
60 122
        return null;
61 123
    }
62 124

  
63
    @Override
125
    public Iterable<FeatureQueryOrderMember> members() {
126
        //    Me hubiese gustado que FeatureQueryOrder fuese Iterable, pero no se deja por 
127
        //    que FeatureQueryOrderMember es una clase interna y no esta definida en el 
128
        //    momento de poner el :
129
        //            implements Iterable<FeatureQueryOrderMember>
130
        //    Y si saco a una clase independiente FeatureQueryOrderMember se pierde 
131
        //    compatibilidad binaria con quien la esta usando.
132
        //    Para rodearlo, he creado el metodo members.
133
        return new Iterable<FeatureQueryOrderMember> () {
134

  
135
            @Override
136
            public Iterator<FeatureQueryOrderMember> iterator() {
137
                return FeatureQueryOrder.this.iterator();
138
            }
139
        };
140
    }
141
    
64 142
    public Iterator<FeatureQueryOrderMember> iterator() {
65
        if( members == null ) {
143
        if (members == null) {
66 144
            return new Iterator<FeatureQueryOrderMember>() {
67 145
                @Override
68 146
                public boolean hasNext() {

Also available in: Unified diff