Revision 38055 branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleSetProvider.java

View differences:

OracleSetProvider.java
35 35
import org.gvsig.fmap.dal.exception.DataException;
36 36
import org.gvsig.fmap.dal.feature.FeatureQuery;
37 37
import org.gvsig.fmap.dal.feature.FeatureType;
38
import org.gvsig.fmap.dal.feature.spi.AbstractFeatureStoreProvider;
38 39
import org.gvsig.fmap.dal.store.jdbc.JDBCIterator;
39 40
import org.gvsig.fmap.dal.store.jdbc.JDBCSetProvider;
40 41
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreProvider;
......
90 91

  
91 92
		return new OracleJdbcFastIterator((JDBCStoreProvider) getStore(), this,
92 93
		getFeatureType(), resultSetID);
93
}
94 94

  
95
	}
96

  
95 97
	
96 98
	protected String getSqlForEvaluator(Evaluator filter) {
97 99
	    
98 100
	    String gfld = getFeatureType().getDefaultGeometryAttributeName();
101
	    if (gfld == null) {
102
	    	try {
103
	    		gfld = findGeometryName(getStore());
104
	    	} catch (Exception ex) {
105
	    		logger.error("While getting geom field name: "
106
	    				+ ex.getMessage() + ". Assumed: " + OracleValues.DEFAULT_CARTOCIUDAD_GEO_FIELD);
107
	    		gfld = OracleValues.DEFAULT_CARTOCIUDAD_GEO_FIELD;
108
	    	}
109
	    }
110
	    
99 111
	    Object envGeoOrNull = null;
100 112
	    
101 113
	    boolean isFilterApplicable = false;
......
127 139
		        is_geo = OracleUtils.getIsGCS(srs, srs != null && srs.length() > 0);
128 140
		        env = (Envelope) envGeoOrNull;
129 141
		        filterString = OracleUtils.getIntersectsEnvelopeSelect(
130
                    getFeatureType().getDefaultGeometryAttributeName(),
131
                    env, srs, is_geo);
142
		        		gfld, env, srs, is_geo);
132 143
		        
133 144
		    } else {
134 145
	            if (envGeoOrNull instanceof Geometry) {
......
143 154
	                        srs = (String) getStore().getDynValue(OracleStoreParameters.ORA_TABLE_SRID_KEY);
144 155
	                        is_geo = OracleUtils.getIsGCS(srs, srs != null && srs.length() > 0);
145 156
	                        filterString = OracleUtils.getIntersectsEnvelopeSelect(
146
	                            getFeatureType().getDefaultGeometryAttributeName(),
147
	                            env, srs, is_geo);
157
	                        		gfld, env, srs, is_geo);
148 158
	                        
149 159
	                    } else {
150 160

  
......
159 169
	                        srs = (String) getStore().getDynValue(OracleStoreParameters.ORA_TABLE_SRID_KEY);
160 170
	                        is_geo = OracleUtils.getIsGCS(srs, srs != null && srs.length() > 0);
161 171
	                        filterString = OracleUtils.getIntersectsMultiRectSelect(
162
	                            getFeatureType().getDefaultGeometryAttributeName(),
163
	                            geom, srs, is_geo, conn);
172
	                        		gfld, geom, srs, is_geo, conn);
164 173
	                    }
165 174
	                }
166 175
	            } else {
......
170 179
	            }
171 180
		    }
172 181
		}
173
		
182

  
174 183
		//If the filter has not been completely applied
175 184
		if (!isFilterApplicable) {
176 185
		    if (filterString == null) {
......
183 192
		return filterString;
184 193
	}
185 194

  
186
    /**
195
    private String findGeometryName(AbstractFeatureStoreProvider store) throws Exception {
196
    	
197
    	if (store instanceof OracleStoreProvider) {
198
    		
199
    		OracleStoreProvider osp = (OracleStoreProvider) store;
200
    		FeatureType ft = osp.getFeatureStore().getDefaultFeatureType(); 
201
    		return ft.getDefaultGeometryAttributeName();
202
    		
203
    	} else {
204
    		logger.error("Unable to get geometry field name! Assumed: " +
205
    				OracleValues.DEFAULT_CARTOCIUDAD_GEO_FIELD);
206
    		return OracleValues.DEFAULT_CARTOCIUDAD_GEO_FIELD;
207
    	}
208
		
209
	}
210

  
211
	/**
187 212
     * @param filter
188 213
     * @param parameters
189 214
     * @return

Also available in: Unified diff