Revision 44198 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
5 5
import java.util.List;
6 6
import org.apache.commons.lang3.ArrayUtils;
7 7
import org.apache.commons.lang3.StringUtils;
8
import org.gvsig.expressionevaluator.ExpressionBuilder.Config;
8
import org.gvsig.expressionevaluator.ExpressionBuilder;
9
import org.gvsig.expressionevaluator.ExpressionBuilder.Variable;
9 10
import org.gvsig.fmap.dal.exception.DataException;
10 11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11 12
import org.gvsig.fmap.dal.feature.FeatureQuery;
......
16 17
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
17 18
import org.gvsig.fmap.dal.store.jdbc2.ResulSetControler.ResultSetEntry;
18 19
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
20
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_FEATURE_TYPE;
21
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_TABLE;
19 22
import org.gvsig.fmap.geom.DataTypes;
20 23
import org.gvsig.tools.evaluator.Evaluator;
21 24

  
......
82 85
        
83 86
        double tolerance = -1 ; //query.getScale();
84 87
        JDBCSQLBuilderBase sqlbuilder = createSQLBuilder();
88
        ExpressionBuilder expbuilder = sqlbuilder.expression();
85 89
        
86 90
        List<String> primaryKeys = new ArrayList<>();
87 91
        for(FeatureAttributeDescriptor attr : storeType.getPrimaryKey() ) {
......
101 105
                forcedColumns.remove(attr.getName());
102 106
            }
103 107
            if( attr.getType() == DataTypes.GEOMETRY ) {
104
                if( tolerance<=0 || !sqlbuilder.getConfig().has_functionality(Config.ST_Simplify)) {
105
                    sqlbuilder.select().column().name(attr.getName()).as_geometry();
106
                } else {
107
                    sqlbuilder.select().column().value(
108
                        sqlbuilder.ST_Simplify( 
109
                            sqlbuilder.column(attr.getName()),
110
                            sqlbuilder.constant(tolerance)
111
                        )
112
                    ).as_geometry();
113
                }
108
                sqlbuilder.select().column().name(attr.getName()).as_geometry();
109
//                if( tolerance<=0 || !sqlbuilder.getConfig().has_functionality(Config.ST_Simplify)) {
110
//                    sqlbuilder.select().column().name(attr.getName()).as_geometry();
111
//                } else {
112
//                    sqlbuilder.select().column().value(
113
//                        sqlbuilder.ST_Simplify( 
114
//                            sqlbuilder.column(attr.getName()),
115
//                            sqlbuilder.constant(tolerance)
116
//                        )
117
//                    ).as_geometry();
118
//                }
114 119
                columns.add(attr);
115 120
            } else {
116 121
                sqlbuilder.select().column().name(attr.getName());
......
132 137
        if( filter != null ) {
133 138
            String sqlfilter = filter.getSQL();
134 139
            if( ! StringUtils.isEmpty(sqlfilter) ) {
135
                sqlbuilder.select().where().set( sqlbuilder.custom(sqlfilter) );
140
                if( this.helper.supportFilter(this.storeType, filter) ) {
141
                    sqlbuilder.select().where().set(expbuilder.toValue(sqlfilter));
142
                }
136 143
            }
137 144
        }
138 145
        if( ! StringUtils.isEmpty(baseFilter) ) {
139
            sqlbuilder.select().where().and(sqlbuilder.custom(baseFilter));
146
            sqlbuilder.select().where().and(expbuilder.toValue(baseFilter));
140 147
        }
141 148
        
142 149
        FeatureQueryOrder order = query==null? null:query.getOrder();
......
170 177
            // obtener los primeros elementos sin importarnos su orden.
171 178
            for(String attrName : primaryKeys ) {
172 179
                // Se precisa indicar un orden para usar OFFSET.
173
                sqlbuilder.select().order_by().column(sqlbuilder.identifier(attrName)).ascending();
180
                sqlbuilder.select().order_by().column(sqlbuilder.as_identifier(attrName)).ascending();
174 181
            }
175 182
        }        
176 183
        if( limit > 0 ) {
......
181 188
        if( offset>0 ) {
182 189
            sqlbuilder.select().offset(offset);
183 190
        }
184
        
191
        sqlbuilder.setProperties(
192
                Variable.class, 
193
                PROP_FEATURE_TYPE, this.storeType,
194
                PROP_TABLE, table
195
        );
185 196
        String sql = sqlbuilder.toString();
186 197
        ResultSetEntry resultSetEntry = this.helper.getResulSetControler().create(
187 198
                sql, fetchSize, columns.toArray(new FeatureAttributeDescriptor[columns.size()])

Also available in: Unified diff