Revision 23

View differences:

trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/fmap/dal/store/postgresql/PostgreSQLHelper.java
60 60
import org.gvsig.fmap.dal.feature.EditableFeatureType;
61 61
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
62 62
import org.gvsig.fmap.dal.feature.FeatureType;
63
import org.gvsig.fmap.dal.feature.exception.CreateGeometryException;
63 64
import org.gvsig.fmap.dal.feature.exception.UnsupportedDataTypeException;
64 65
import org.gvsig.fmap.dal.feature.exception.UnsupportedGeometryException;
65 66
import org.gvsig.fmap.dal.resource.ResourceAction;
......
76 77
import org.gvsig.fmap.geom.Geometry;
77 78
import org.gvsig.fmap.geom.GeometryLocator;
78 79
import org.gvsig.fmap.geom.GeometryManager;
80
import org.gvsig.fmap.geom.operation.GeometryOperationException;
81
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
79 82
import org.gvsig.fmap.geom.operation.fromwkb.FromWKB;
80 83
import org.gvsig.fmap.geom.operation.fromwkb.FromWKBGeometryOperationContext;
81 84
import org.gvsig.fmap.geom.primitive.Envelope;
......
153 156
			throws DataException {
154 157

  
155 158
		StringBuilder strb = new StringBuilder();
156
		strb.append("Select asbinary(extent(");
159
		strb.append("Select ST_asbinary(ST_extent(");
157 160
		strb.append(escapeFieldName(geometryAttrName));
158 161
		strb.append(")) from ");
159 162

  
......
166 169
			strb.append(storeParams.tableID());
167 170
		}
168 171

  
169

  
170 172
		if (limit != null){
171
			strb.append(" where  intersects(GeomFromText('");
172
			strb.append(limit.toString());
173
			strb.append("')), envelope(");
173
			strb.append(" where  ST_intersects(ST_GeomFromText('");
174
			String workAreaWkt = null;
175
			try {
176
				workAreaWkt = limit.getGeometry().convertToWKT();
177
			} catch (Exception e) {
178
				throw new CreateGeometryException(e);
179
			}
180
			strb.append(workAreaWkt);
181
			strb.append("', ");
182
			
183
			IProjection proj = storeParams.getCRS();
184
			int sridInt = this.getProviderSRID(proj); 
185
			if (sridInt == -1) {
186
				throw new CreateGeometryException(
187
						new Exception("CRS is null or unknown."));
188
			} else {
189
				strb.append(Integer.toString(sridInt));
190
			}
191
			strb.append("), ST_envelope(");
174 192
			strb.append(escapeFieldName(geometryAttrName));
175 193
			strb.append(")) ");
176 194
		}

Also available in: Unified diff