Revision 44058 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

View differences:

ResultSetForSetProviderOperation.java
13 13
import org.gvsig.fmap.dal.feature.FeatureQueryOrder.FeatureQueryOrderMember;
14 14
import org.gvsig.fmap.dal.feature.FeatureType;
15 15
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
16
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
16 17
import org.gvsig.fmap.dal.store.jdbc2.ResulSetControler.ResultSetEntry;
17 18
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
18 19
import org.gvsig.fmap.geom.DataTypes;
19 20
import org.gvsig.tools.evaluator.Evaluator;
20 21

  
21 22
public class ResultSetForSetProviderOperation extends AbstractConnectionOperation {
22
    private final String schema;
23
    private final String table;
24
    private final String subquery;
23
    private final TableReference table;
25 24
    private final String baseFilter;
26 25
    private final String baseOrder;
27 26
    private final FeatureType storeType;
......
30 29
    private final long limit;
31 30
    private final long offset;
32 31
    private final int fetchSize;
33
    private final String database;
34 32

  
35 33
    public ResultSetForSetProviderOperation(
36 34
            JDBCHelper helper,
37
            String database,
38
            String schema,
39
            String table,
40
            String subquery,
35
            TableReference table,
41 36
            String baseFilter,
42 37
            String baseOrder,
43 38
            FeatureQuery query,
......
48 43
            int fetchSize
49 44
        ) {
50 45
        super(helper);
51
        this.database = database;
52
        this.schema = schema;
53 46
        this.table = table;
54
        this.subquery = subquery;
55 47
        this.baseFilter = baseFilter;
56 48
        this.baseOrder = baseOrder;
57 49
        this.storeType = storeType;
......
65 57
    @Override
66 58
    protected Object perform_operation() throws Exception {
67 59
        ResultSetEntry rs = createResultSet(
68
                database, schema, table, subquery, 
69
                baseFilter, baseOrder, storeType, setType, query, 
60
                table, baseFilter, baseOrder, storeType, setType, query, 
70 61
                limit, offset, fetchSize);
71 62
        return rs;
72 63
    }
......
77 68
    }
78 69
    
79 70
    public ResultSetEntry createResultSet(
80
            String database,
81
            String schema,
82
            String table,
83
            String subquery,
71
            TableReference table,
84 72
            String baseFilter,
85 73
            String baseOrder,
86 74
            FeatureType storeType,
......
134 122
            columns.add(setType.getAttributeDescriptor(attrName));
135 123
        }
136 124
        
137
        if( StringUtils.isEmpty(subquery)  ) {
138
            sqlbuilder.select().from().table().database(database).schema(schema).name(table);
139
        } else {
140
            sqlbuilder.select().from().subquery(subquery);
141
        }
125
        sqlbuilder.select().from().table()
126
                .database(this.table.getDatabase())
127
                .schema(this.table.getSchema())
128
                .name(this.table.getTable());
129
        sqlbuilder.select().from().subquery(this.table.getSubquery());
142 130
        
143
        Evaluator filter = query.getFilter();
131
        Evaluator filter = query==null? null:query.getFilter();
144 132
        if( filter != null ) {
145 133
            String sqlfilter = filter.getSQL();
146 134
            if( ! StringUtils.isEmpty(sqlfilter) ) {
......
151 139
            sqlbuilder.select().where().and(sqlbuilder.custom(baseFilter));
152 140
        }
153 141
        
154
        FeatureQueryOrder order = query.getOrder();
142
        FeatureQueryOrder order = query==null? null:query.getOrder();
155 143
        if( order != null ) {
156 144
            for( FeatureQueryOrderMember member : order.members() ) {
157 145
                if( member.hasEvaluator() ) {
......
188 176
        if( limit > 0 ) {
189 177
            sqlbuilder.select().limit(limit);
190 178
        } else {
191
            sqlbuilder.select().limit(query.getLimit());
179
            sqlbuilder.select().limit(query==null? null:query.getLimit());
192 180
        }
193 181
        if( offset>0 ) {
194 182
            sqlbuilder.select().offset(offset);

Also available in: Unified diff