Revision 43026

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/DefaultFeatureSet.java
37 37
import org.gvsig.fmap.dal.feature.FeatureIndexes;
38 38
import org.gvsig.fmap.dal.feature.FeatureQuery;
39 39
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
40
import org.gvsig.fmap.dal.feature.FeatureQueryOrderMember;
40
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
41 41
import org.gvsig.fmap.dal.feature.FeatureSet;
42 42
import org.gvsig.fmap.dal.feature.FeatureStore;
43 43
import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/FeatureProviderComparator.java
29 29
import org.gvsig.compat.CompatLocator;
30 30
import org.gvsig.fmap.dal.exception.DataEvaluatorRuntimeException;
31 31
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
32
import org.gvsig.fmap.dal.feature.FeatureQueryOrderMember;
32
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
33 33
import org.gvsig.fmap.dal.feature.FeatureType;
34 34
import org.gvsig.fmap.dal.feature.impl.DefaultFeature;
35 35
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/fmap/dal/feature/BaseTestFeatureStore.java
37 37
import org.gvsig.fmap.dal.DataTypes;
38 38
import org.gvsig.fmap.dal.exception.DataEvaluatorRuntimeException;
39 39
import org.gvsig.fmap.dal.exception.DataException;
40
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
40 41
import org.gvsig.fmap.dal.feature.testmulithread.StoreTask;
41 42
import org.gvsig.fmap.dal.resource.ResourceManager;
42 43
import org.gvsig.fmap.geom.Geometry;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc/JDBCSetProvider.java
35 35
import org.gvsig.fmap.dal.feature.FeatureQuery;
36 36
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
37 37
import org.gvsig.fmap.dal.feature.FeatureType;
38
import org.gvsig.fmap.dal.feature.FeatureQueryOrderMember;
38
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
39 39
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureSetProvider;
40 40
import org.gvsig.tools.evaluator.Evaluator;
41 41
import org.gvsig.tools.evaluator.EvaluatorFieldValue;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/ResultSetForSetProviderOperation.java
2 2

  
3 3
import java.sql.Connection;
4 4
import java.util.ArrayList;
5
import java.util.Arrays;
6 5
import java.util.List;
7 6
import org.apache.commons.lang3.StringUtils;
8 7
import org.gvsig.fmap.dal.exception.DataException;
9 8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
10 9
import org.gvsig.fmap.dal.feature.FeatureQuery;
11 10
import org.gvsig.fmap.dal.feature.FeatureQueryOrder;
12
import org.gvsig.fmap.dal.feature.FeatureQueryOrderMember;
11
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
13 12
import org.gvsig.fmap.dal.feature.FeatureType;
14 13
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
15 14
import org.gvsig.fmap.dal.store.jdbc2.ResulSetControler.ResultSetEntry;
......
125 124
        
126 125
        FeatureQueryOrder order = query.getOrder();
127 126
        if( order != null ) {
128
            for( FeatureQueryOrderMember member : order ) {
127
            for( FeatureQueryOrderMember member : order.members() ) {
129 128
                if( member.hasEvaluator() ) {
130 129
                    String sqlorder = member.getEvaluator().getSQL();
131 130
                    if( ! StringUtils.isEmpty(sqlorder) ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/impl/JDBCSetProvider.java
32 32
import org.gvsig.fmap.dal.DataTypes;
33 33
import org.gvsig.fmap.dal.exception.DataException;
34 34
import org.gvsig.fmap.dal.feature.FeatureQuery;
35
import org.gvsig.fmap.dal.feature.FeatureQueryOrderMember;
35
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
36 36
import org.gvsig.fmap.dal.feature.FeatureType;
37 37

  
38 38
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureSetProvider;
......
203 203
        if (!query.hasOrder()) {
204 204
            return true;
205 205
        }
206
        for( FeatureQueryOrderMember menber : query.getOrder() ) {
207
            if (menber.hasEvaluator()) {
208
                String sql = menber.getEvaluator().getSQL();
206
        for( FeatureQueryOrderMember member : query.getOrder().members() ) {
207
            if (member.hasEvaluator()) {
208
                String sql = member.getEvaluator().getSQL();
209 209
                if ( StringUtils.isEmpty(sql) ) {
210 210
                    return false;
211 211
                }
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/FeatureQueryOrderMember.java
1

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

  
4
import org.gvsig.tools.evaluator.Evaluator;
5
import org.gvsig.tools.persistence.Persistent;
6
import org.gvsig.tools.persistence.PersistentState;
7
import org.gvsig.tools.persistence.exception.PersistenceException;
8

  
9

  
10
public class FeatureQueryOrderMember implements Persistent, org.gvsig.tools.lang.Cloneable {
11

  
12
        String attributeName = null;
13
        Evaluator evaluator = null;
14
        boolean ascending;
15

  
16
        FeatureQueryOrderMember(String attributeName, boolean ascending) {
17
            this.attributeName = attributeName;
18
            this.ascending = ascending;
19
        }
20

  
21
        FeatureQueryOrderMember(Evaluator evaluator, boolean ascending) {
22
            this.evaluator = evaluator;
23
            this.ascending = ascending;
24
        }
25

  
26
        public boolean hasEvaluator() {
27
            return this.evaluator != null;
28
        }
29

  
30
        public Evaluator getEvaluator() {
31
            return this.evaluator;
32
        }
33

  
34
        public boolean getAscending() {
35
            return this.ascending;
36
        }
37

  
38
        public String getAttributeName() {
39
            return this.attributeName;
40
        }
41

  
42
        @Override
43
        public void loadFromState(PersistentState state)
44
                throws PersistenceException {
45
            this.attributeName = state.getString("attributeName");
46
            this.ascending = state.getBoolean("ascending");
47
            this.evaluator = (Evaluator) state.get("evaluator");
48
        }
49

  
50
        @Override
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
                state.set("evaluator", evaluator);
57
            }
58

  
59
        }
60

  
61
        @Override
62
        public FeatureQueryOrderMember clone() throws CloneNotSupportedException {
63
            // Nothing more to clone
64
            return (FeatureQueryOrderMember) super.clone();
65
        }
66
    
67
}
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
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