Revision 38055 branches/v2_0_0_prep/extensions/org.gvsig.oracle/src/org/gvsig/fmap/dal/store/oracle/OracleSetProvider.java
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