root / branches / v2_0_0_prep / libraries / libRemoteServices / src / org / gvsig / remoteclient / wfs / wfs_1_0_0 / WFSProtocolHandler1_0_0.java @ 34026
History | View | Annotate | Download (17.1 KB)
1 |
package org.gvsig.remoteclient.wfs.wfs_1_0_0; |
---|---|
2 |
|
3 |
import java.io.File; |
4 |
import java.io.FileNotFoundException; |
5 |
import java.io.IOException; |
6 |
|
7 |
import org.kxml2.io.KXmlParser; |
8 |
import org.xmlpull.v1.XmlPullParserException; |
9 |
|
10 |
import org.gvsig.compat.CompatLocator; |
11 |
import org.gvsig.compat.lang.StringUtils; |
12 |
import org.gvsig.remoteclient.utils.CapabilitiesTags; |
13 |
import org.gvsig.remoteclient.wfs.WFSProtocolHandler; |
14 |
import org.gvsig.remoteclient.wfs.WFSStatus; |
15 |
import org.gvsig.remoteclient.wfs.edition.WFSTTags; |
16 |
import org.gvsig.remoteclient.wfs.edition.WFSTTransaction; |
17 |
import org.gvsig.remoteclient.wfs.exceptions.ExceptionsFactory; |
18 |
import org.gvsig.remoteclient.wfs.exceptions.WFSException; |
19 |
import org.gvsig.remoteclient.wfs.exceptions.WFSGetFeatureException; |
20 |
import org.gvsig.remoteclient.wfs.request.WFSDescribeFeatureTypeRequest; |
21 |
import org.gvsig.remoteclient.wfs.request.WFSGetFeatureRequest; |
22 |
import org.gvsig.remoteclient.wfs.request.WFSTLockFeatureRequest; |
23 |
import org.gvsig.remoteclient.wfs.schema.XMLSchemaParser; |
24 |
import org.gvsig.remoteclient.wfs.wfs_1_0_0.request.WFSDescribeFeatureTypeRequest1_0_0; |
25 |
import org.gvsig.remoteclient.wfs.wfs_1_0_0.request.WFSGetFeatureRequest1_0_0; |
26 |
import org.gvsig.remoteclient.wfs.wfs_1_0_0.request.WFSTLockFeatureRequest1_0_0; |
27 |
|
28 |
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
29 |
*
|
30 |
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
|
31 |
*
|
32 |
* This program is free software; you can redistribute it and/or
|
33 |
* modify it under the terms of the GNU General Public License
|
34 |
* as published by the Free Software Foundation; either version 2
|
35 |
* of the License, or (at your option) any later version.
|
36 |
*
|
37 |
* This program is distributed in the hope that it will be useful,
|
38 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
39 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
40 |
* GNU General Public License for more details.
|
41 |
*
|
42 |
* You should have received a copy of the GNU General Public License
|
43 |
* along with this program; if not, write to the Free Software
|
44 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
45 |
*
|
46 |
* For more information, contact:
|
47 |
*
|
48 |
* Generalitat Valenciana
|
49 |
* Conselleria d'Infraestructures i Transport
|
50 |
* Av. Blasco Ib??ez, 50
|
51 |
* 46010 VALENCIA
|
52 |
* SPAIN
|
53 |
*
|
54 |
* +34 963862235
|
55 |
* gvsig@gva.es
|
56 |
* www.gvsig.gva.es
|
57 |
*
|
58 |
* or
|
59 |
*
|
60 |
* IVER T.I. S.A
|
61 |
* Salamanca 50
|
62 |
* 46005 Valencia
|
63 |
* Spain
|
64 |
*
|
65 |
* +34 963163400
|
66 |
* dac@iver.es
|
67 |
*/
|
68 |
/* CVS MESSAGES:
|
69 |
*
|
70 |
* $Id: WFSProtocolHandler1_0_0.java 34026 2010-11-08 13:06:02Z jpiera $
|
71 |
* $Log$
|
72 |
* Revision 1.12 2007-02-19 11:43:10 jorpiell
|
73 |
* A?adidos los filtros por ?rea
|
74 |
*
|
75 |
* Revision 1.11 2007/02/09 14:11:01 jorpiell
|
76 |
* Primer piloto del soporte para WFS 1.1 y para WFS-T
|
77 |
*
|
78 |
* Revision 1.10 2007/01/16 08:30:22 csanchez
|
79 |
* Sistema de Warnings y Excepciones adaptado a BasicException
|
80 |
*
|
81 |
* Revision 1.9 2006/12/22 11:31:01 jorpiell
|
82 |
* Cambio del parser 2.x
|
83 |
*
|
84 |
* Revision 1.8 2006/10/31 09:36:51 jorpiell
|
85 |
* Se devuelve el tipo de la entidad completo, y no sus hijos
|
86 |
*
|
87 |
* Revision 1.7 2006/10/10 12:52:28 jorpiell
|
88 |
* Soporte para features complejas.
|
89 |
*
|
90 |
* Revision 1.6 2006/06/14 07:54:18 jorpiell
|
91 |
* Se parsea el online resource que antes se ignoraba
|
92 |
*
|
93 |
* Revision 1.5 2006/05/25 10:20:57 jorpiell
|
94 |
* Se ha cambiado el nombre de la clase WFSField por la clase WFSAttribute, porque resultaba confuso
|
95 |
*
|
96 |
* Revision 1.4 2006/05/23 13:23:22 jorpiell
|
97 |
* Se ha cambiado el final del bucle de parseado y se tiene en cuenta el online resource
|
98 |
*
|
99 |
* Revision 1.2 2006/04/20 16:39:16 jorpiell
|
100 |
* A?adida la operacion de describeFeatureType y el parser correspondiente.
|
101 |
*
|
102 |
* Revision 1.1 2006/04/19 12:51:35 jorpiell
|
103 |
* A?adidas algunas de las clases del servicio WFS
|
104 |
*
|
105 |
*
|
106 |
*/
|
107 |
/**
|
108 |
* @author Jorge Piera Llodr? (piera_jor@gva.es)
|
109 |
*/
|
110 |
public class WFSProtocolHandler1_0_0 extends WFSProtocolHandler{ |
111 |
|
112 |
private static final StringUtils stringUtils = CompatLocator.getStringUtils(); |
113 |
|
114 |
public WFSProtocolHandler1_0_0(){
|
115 |
this.version = "1.0.0"; |
116 |
this.name = "WFS1.0.0"; |
117 |
} |
118 |
|
119 |
/*
|
120 |
* (non-Javadoc)
|
121 |
* @see org.gvsig.remoteClient.OGCProtocolHandler#parseCapabilities(java.io.File)
|
122 |
*/
|
123 |
public boolean parseCapabilities(File f) { |
124 |
int tag;
|
125 |
XMLSchemaParser parser = null;
|
126 |
parser = new XMLSchemaParser();
|
127 |
try
|
128 |
{ |
129 |
parser.setInput(f); |
130 |
parser.nextTag(); |
131 |
|
132 |
if ( parser.getEventType() != KXmlParser.END_DOCUMENT )
|
133 |
{ |
134 |
parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.WFS_CAPABILITIES_ROOT1_0_0);
|
135 |
//Parses the Namespaces...
|
136 |
parseNamespaces(parser); |
137 |
//Parse the capabilities document
|
138 |
tag = parser.nextTag(); |
139 |
while(tag != KXmlParser.END_DOCUMENT)
|
140 |
{ |
141 |
switch(tag)
|
142 |
{ |
143 |
case KXmlParser.START_TAG:
|
144 |
if (parser.getName().compareTo(CapabilitiesTags.SERVICE)==0) |
145 |
{ |
146 |
parseServiceTag(parser); |
147 |
} |
148 |
else if (parser.getName().compareTo(CapabilitiesTags.CAPABILITY)==0) |
149 |
{ |
150 |
parseCapabilityTag(parser); |
151 |
} |
152 |
else if (parser.getName().compareTo(CapabilitiesTags.WFS_FEATURETYPELIST)==0) |
153 |
{ |
154 |
parseFeatureTypeListTag(parser); |
155 |
} |
156 |
break;
|
157 |
case KXmlParser.END_TAG:
|
158 |
break;
|
159 |
case KXmlParser.TEXT:
|
160 |
break;
|
161 |
} |
162 |
tag = parser.next(); |
163 |
} |
164 |
parser.require(KXmlParser.END_DOCUMENT, null, null); |
165 |
} |
166 |
} |
167 |
catch(XmlPullParserException parser_ex){
|
168 |
parser_ex.printStackTrace(); |
169 |
return false; |
170 |
} |
171 |
catch (IOException ioe) { |
172 |
ioe.printStackTrace(); |
173 |
return false; |
174 |
} |
175 |
return true; |
176 |
} |
177 |
|
178 |
/**
|
179 |
* <p>Parses the Service Information </p>
|
180 |
*/
|
181 |
private void parseServiceTag(KXmlParser parser) throws IOException, XmlPullParserException |
182 |
{ |
183 |
int currentTag;
|
184 |
boolean end = false; |
185 |
|
186 |
parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.SERVICE);
|
187 |
currentTag = parser.next(); |
188 |
|
189 |
while (!end)
|
190 |
{ |
191 |
switch(currentTag)
|
192 |
{ |
193 |
case KXmlParser.START_TAG:
|
194 |
if (parser.getName().compareToIgnoreCase(CapabilitiesTags.NAME)==0) |
195 |
{ |
196 |
serviceInfo.name = parser.nextText(); |
197 |
} |
198 |
else if (parser.getName().compareTo(CapabilitiesTags.WFS_TITLE)==0) |
199 |
{ |
200 |
serviceInfo.title = parser.nextText(); |
201 |
} |
202 |
else if (parser.getName().compareTo(CapabilitiesTags.WFS_ABSTRACT)==0) |
203 |
{ |
204 |
serviceInfo.abstr = parser.nextText(); |
205 |
} |
206 |
else if (parser.getName().compareTo(CapabilitiesTags.ONLINERESOURCE)==0) |
207 |
{ |
208 |
serviceInfo.online_resource = parser.nextText(); |
209 |
|
210 |
} |
211 |
break;
|
212 |
case KXmlParser.END_TAG:
|
213 |
if (parser.getName().compareTo(CapabilitiesTags.SERVICE) == 0) |
214 |
end = true;
|
215 |
break;
|
216 |
case KXmlParser.TEXT:
|
217 |
break;
|
218 |
} |
219 |
if (!end){
|
220 |
currentTag = parser.next(); |
221 |
} |
222 |
} |
223 |
} |
224 |
|
225 |
private void parseCapabilityTag(KXmlParser parser) throws IOException, XmlPullParserException |
226 |
{ |
227 |
int currentTag;
|
228 |
boolean end = false; |
229 |
|
230 |
parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.CAPABILITY);
|
231 |
currentTag = parser.next(); |
232 |
|
233 |
while (!end)
|
234 |
{ |
235 |
switch(currentTag)
|
236 |
{ |
237 |
case KXmlParser.START_TAG:
|
238 |
if (parser.getName().compareTo(CapabilitiesTags.REQUEST)==0) |
239 |
{ |
240 |
parseRequestTag(parser); |
241 |
} |
242 |
else if (parser.getName().compareTo(CapabilitiesTags.EXCEPTION)==0) |
243 |
{ |
244 |
//TODO Parse exception tags...
|
245 |
parser.skipSubTree(); |
246 |
} |
247 |
else if ((parser.getName().compareTo(CapabilitiesTags.VENDORSPECIFICCAPABILITIES)==0) || |
248 |
(parser.getName().compareTo(CapabilitiesTags.USERDEFINEDSYMBOLIZATION )==0))
|
249 |
{ |
250 |
parser.skipSubTree(); |
251 |
} |
252 |
break;
|
253 |
case KXmlParser.END_TAG:
|
254 |
if (parser.getName().compareTo(CapabilitiesTags.CAPABILITY) == 0) |
255 |
end = true;
|
256 |
break;
|
257 |
case KXmlParser.TEXT:
|
258 |
break;
|
259 |
} |
260 |
if (!end){
|
261 |
currentTag = parser.next(); |
262 |
} |
263 |
} |
264 |
} |
265 |
|
266 |
/**
|
267 |
* <p>Parses the Request tag </p>
|
268 |
*/
|
269 |
private void parseRequestTag(KXmlParser parser) throws IOException, XmlPullParserException |
270 |
{ |
271 |
int currentTag;
|
272 |
boolean end = false; |
273 |
|
274 |
parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.REQUEST);
|
275 |
currentTag = parser.next(); |
276 |
|
277 |
while (!end)
|
278 |
{ |
279 |
switch(currentTag)
|
280 |
{ |
281 |
case KXmlParser.START_TAG:
|
282 |
if (parser.getName().compareTo(CapabilitiesTags.GETCAPABILITIES)==0){ |
283 |
parserDcpType(parser, CapabilitiesTags.GETCAPABILITIES); |
284 |
} else if (parser.getName().compareTo(CapabilitiesTags.WFS_DESCRIBEFEATURETYPE)==0) { |
285 |
parserDcpType(parser, CapabilitiesTags.WFS_DESCRIBEFEATURETYPE); |
286 |
}else if (parser.getName().compareTo(CapabilitiesTags.WFS_GETFEATURE)==0){ |
287 |
parserDcpType(parser, CapabilitiesTags.WFS_GETFEATURE); |
288 |
}else if (parser.getName().compareTo(CapabilitiesTags.WFS_LOCKFEATURE)==0){ |
289 |
parserDcpType(parser, CapabilitiesTags.WFS_LOCKFEATURE); |
290 |
}else if (parser.getName().compareTo(CapabilitiesTags.WFS_TRANSACTION)==0){ |
291 |
parserDcpType(parser, CapabilitiesTags.WFS_TRANSACTION); |
292 |
} |
293 |
break;
|
294 |
case KXmlParser.END_TAG:
|
295 |
if (parser.getName().compareTo(CapabilitiesTags.REQUEST) == 0) |
296 |
end = true;
|
297 |
break;
|
298 |
case KXmlParser.TEXT:
|
299 |
break;
|
300 |
} |
301 |
if (!end){
|
302 |
currentTag = parser.next(); |
303 |
} |
304 |
} |
305 |
} |
306 |
|
307 |
/**
|
308 |
* It parses the feature typelist tag
|
309 |
* @param parser
|
310 |
* @throws IOException
|
311 |
* @throws XmlPullParserException
|
312 |
*/
|
313 |
private void parseFeatureTypeListTag(KXmlParser parser) throws IOException, XmlPullParserException{ |
314 |
int currentTag;
|
315 |
boolean end = false; |
316 |
|
317 |
parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.WFS_FEATURETYPELIST);
|
318 |
currentTag = parser.next(); |
319 |
|
320 |
while (!end)
|
321 |
{ |
322 |
switch(currentTag)
|
323 |
{ |
324 |
case KXmlParser.START_TAG:
|
325 |
if (parser.getName().compareToIgnoreCase(CapabilitiesTags.WFS_FEATURETYPE)==0){ |
326 |
//Parse the namespaces...
|
327 |
parseNamespaces(parser); |
328 |
WFSFeature1_0_0 feature = new WFSFeature1_0_0(serviceInfo);
|
329 |
feature.parse(parser); |
330 |
features.put(feature.getName(),feature); |
331 |
} |
332 |
break;
|
333 |
case KXmlParser.END_TAG:
|
334 |
if (parser.getName().compareTo(CapabilitiesTags.WFS_FEATURETYPELIST) == 0) |
335 |
end = true;
|
336 |
break;
|
337 |
case KXmlParser.TEXT:
|
338 |
break;
|
339 |
} |
340 |
if (!end){
|
341 |
currentTag = parser.next(); |
342 |
} |
343 |
} |
344 |
} |
345 |
|
346 |
/*
|
347 |
* (non-Javadoc)
|
348 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#parseGetFeature(java.io.File, java.lang.String)
|
349 |
*/
|
350 |
protected boolean parseGetFeature(File f, String nameSpace) throws WFSException { |
351 |
XMLSchemaParser parser = null;
|
352 |
parser = new XMLSchemaParser();
|
353 |
try
|
354 |
{ |
355 |
parser.setInput(f); |
356 |
parser.nextTag(); |
357 |
if (parser.getName().compareTo(CapabilitiesTags.SERVICE_EXCEPTION_REPORT)==0){ |
358 |
throw ExceptionsFactory.parseExceptionReport(parser);
|
359 |
} |
360 |
} catch (FileNotFoundException e) { |
361 |
e.printStackTrace(); |
362 |
throw new WFSGetFeatureException(e); |
363 |
} catch (XmlPullParserException e) {
|
364 |
e.printStackTrace(); |
365 |
throw new WFSGetFeatureException(e); |
366 |
} catch (IOException e) { |
367 |
e.printStackTrace(); |
368 |
throw new WFSGetFeatureException(e); |
369 |
} |
370 |
|
371 |
return true; |
372 |
} |
373 |
|
374 |
/*
|
375 |
* (non-Javadoc)
|
376 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#parseTransaction(java.io.File, java.lang.String)
|
377 |
*/
|
378 |
protected boolean parseTransaction(File f, String nameSpace, WFSTTransaction transaction) throws WFSException { |
379 |
int tag;
|
380 |
XMLSchemaParser parser = null;
|
381 |
parser = new XMLSchemaParser();
|
382 |
try
|
383 |
{ |
384 |
parser.setInput(f); |
385 |
parser.nextTag(); |
386 |
if (parser.getName().compareTo(CapabilitiesTags.SERVICE_EXCEPTION_REPORT)==0){ |
387 |
throw ExceptionsFactory.parseExceptionReport(parser);
|
388 |
} |
389 |
|
390 |
|
391 |
if ( parser.getEventType() != KXmlParser.END_DOCUMENT )
|
392 |
{ |
393 |
tag = parser.nextTag(); |
394 |
while(tag != KXmlParser.END_DOCUMENT)
|
395 |
{ |
396 |
switch(tag)
|
397 |
{ |
398 |
case KXmlParser.START_TAG:
|
399 |
if (parser.getName().compareTo(WFSTTags.WFST_TRANSACTIONRESULT)==0){ |
400 |
parseTransactionResult(parser, transaction); |
401 |
}else if (parser.getName().compareTo(WFSTTags.WFST_TRANSACTIONRESPONSE)==0){ |
402 |
parseFeaturesLocked(parser); |
403 |
} |
404 |
break;
|
405 |
case KXmlParser.END_TAG:
|
406 |
break;
|
407 |
case KXmlParser.TEXT:
|
408 |
break;
|
409 |
} |
410 |
tag = parser.next(); |
411 |
} |
412 |
parser.require(KXmlParser.END_DOCUMENT, null, null); |
413 |
} |
414 |
} |
415 |
catch(XmlPullParserException parser_ex){
|
416 |
parser_ex.printStackTrace(); |
417 |
return false; |
418 |
} |
419 |
catch (IOException ioe) { |
420 |
ioe.printStackTrace(); |
421 |
return false; |
422 |
} |
423 |
return true; |
424 |
} |
425 |
|
426 |
/**
|
427 |
* Parse the transaction result XML sub tree
|
428 |
* @param parser
|
429 |
* @param transaction
|
430 |
* @throws IOException
|
431 |
* @throws XmlPullParserException
|
432 |
*/
|
433 |
private void parseTransactionResult(XMLSchemaParser parser, |
434 |
WFSTTransaction transaction) throws XmlPullParserException, IOException { |
435 |
int currentTag;
|
436 |
boolean end = false; |
437 |
|
438 |
currentTag = parser.next(); |
439 |
|
440 |
while (!end)
|
441 |
{ |
442 |
switch(currentTag)
|
443 |
{ |
444 |
case KXmlParser.START_TAG:
|
445 |
if (parser.getName().compareTo(WFSTTags.WFST_STATUS)==0){ |
446 |
parseStatus(parser, transaction); |
447 |
}else if (parser.getName().compareTo(WFSTTags.WFST_TRANSACTIONMESSAGE)==0){ |
448 |
parser.next(); |
449 |
transaction.setMessage(parser.getText()); |
450 |
} |
451 |
break;
|
452 |
case KXmlParser.END_TAG:
|
453 |
if (parser.getName().compareTo(WFSTTags.WFST_TRANSACTIONRESULT)==0) |
454 |
end = true;
|
455 |
break;
|
456 |
case KXmlParser.TEXT:
|
457 |
break;
|
458 |
} |
459 |
if (!end){
|
460 |
currentTag = parser.next(); |
461 |
} |
462 |
} |
463 |
} |
464 |
|
465 |
/**
|
466 |
* Parser WFST Status subtree
|
467 |
* @param parser
|
468 |
* Teh xML parser
|
469 |
* @param transaction
|
470 |
* The current transaction
|
471 |
* @throws IOException
|
472 |
* @throws XmlPullParserException
|
473 |
*/
|
474 |
private void parseStatus(XMLSchemaParser parser, WFSTTransaction transaction) throws XmlPullParserException, IOException { |
475 |
int currentTag;
|
476 |
boolean end = false; |
477 |
|
478 |
currentTag = parser.next(); |
479 |
|
480 |
while (!end)
|
481 |
{ |
482 |
switch(currentTag)
|
483 |
{ |
484 |
case KXmlParser.START_TAG:
|
485 |
if (parser.getName().compareTo(WFSTTags.WFST_SUCCESS)==0){ |
486 |
transaction.setStatus(WFSTTransaction.STATUS_SUCCESS); |
487 |
}else if (parser.getName().compareTo(WFSTTags.WFST_FAILED)==0){ |
488 |
transaction.setStatus(WFSTTransaction.STATUS_FAILED); |
489 |
} |
490 |
break;
|
491 |
case KXmlParser.END_TAG:
|
492 |
if (parser.getName().compareTo(WFSTTags.WFST_STATUS)==0) |
493 |
end = true;
|
494 |
break;
|
495 |
case KXmlParser.TEXT:
|
496 |
break;
|
497 |
} |
498 |
if (!end){
|
499 |
currentTag = parser.next(); |
500 |
} |
501 |
} |
502 |
} |
503 |
|
504 |
/*
|
505 |
* (non-Javadoc)
|
506 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#parseLockFeature(java.io.File, java.lang.String)
|
507 |
*/
|
508 |
protected boolean parseLockFeature(File f, String nameSpace, WFSStatus status) throws WFSException { |
509 |
int tag;
|
510 |
XMLSchemaParser parser = null;
|
511 |
parser = new XMLSchemaParser();
|
512 |
try
|
513 |
{ |
514 |
parser.setInput(f); |
515 |
parser.nextTag(); |
516 |
if (parser.getName().compareTo(CapabilitiesTags.SERVICE_EXCEPTION_REPORT)==0){ |
517 |
throw ExceptionsFactory.parseExceptionReport(parser);
|
518 |
} |
519 |
|
520 |
|
521 |
if ( parser.getEventType() != KXmlParser.END_DOCUMENT )
|
522 |
{ |
523 |
tag = parser.nextTag(); |
524 |
while(tag != KXmlParser.END_DOCUMENT)
|
525 |
{ |
526 |
switch(tag)
|
527 |
{ |
528 |
case KXmlParser.START_TAG:
|
529 |
if (parser.getName().compareTo(WFSTTags.WFST_LOCKID)==0){ |
530 |
parser.next(); |
531 |
status.addFeatureLocked(parser.getText()); |
532 |
}else if (parser.getName().compareTo(WFSTTags.WFST_FEATURESLOCKED)==0){ |
533 |
parseFeaturesLocked(parser); |
534 |
} |
535 |
break;
|
536 |
case KXmlParser.END_TAG:
|
537 |
break;
|
538 |
case KXmlParser.TEXT:
|
539 |
break;
|
540 |
} |
541 |
tag = parser.next(); |
542 |
} |
543 |
parser.require(KXmlParser.END_DOCUMENT, null, null); |
544 |
} |
545 |
} |
546 |
catch(XmlPullParserException parser_ex){
|
547 |
parser_ex.printStackTrace(); |
548 |
return false; |
549 |
} |
550 |
catch (IOException ioe) { |
551 |
ioe.printStackTrace(); |
552 |
return false; |
553 |
} |
554 |
return true; |
555 |
} |
556 |
|
557 |
/**
|
558 |
* It parses the featuresLocked tag
|
559 |
* @param parser
|
560 |
* @throws IOException
|
561 |
* @throws XmlPullParserException
|
562 |
*/
|
563 |
private void parseFeaturesLocked(XMLSchemaParser parser) throws XmlPullParserException, IOException { |
564 |
int currentTag;
|
565 |
boolean end = false; |
566 |
|
567 |
currentTag = parser.next(); |
568 |
|
569 |
while (!end)
|
570 |
{ |
571 |
switch(currentTag)
|
572 |
{ |
573 |
case KXmlParser.START_TAG:
|
574 |
if (parser.getName().compareTo(WFSTTags.WFST_FEATURESID)==0){ |
575 |
|
576 |
} |
577 |
break;
|
578 |
case KXmlParser.END_TAG:
|
579 |
if (parser.getName().compareTo(WFSTTags.WFST_FEATURESLOCKED)==0) |
580 |
end = true;
|
581 |
break;
|
582 |
case KXmlParser.TEXT:
|
583 |
break;
|
584 |
} |
585 |
if (!end){
|
586 |
currentTag = parser.next(); |
587 |
} |
588 |
} |
589 |
} |
590 |
|
591 |
/*
|
592 |
* (non-Javadoc)
|
593 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#createDescribeFeatureTypeRequest(org.gvsig.remoteClient.wfs.WFSStatus)
|
594 |
*/
|
595 |
protected WFSDescribeFeatureTypeRequest createDescribeFeatureTypeRequest(
|
596 |
WFSStatus status) { |
597 |
return new WFSDescribeFeatureTypeRequest1_0_0(status, this); |
598 |
} |
599 |
|
600 |
/*
|
601 |
* (non-Javadoc)
|
602 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#createGetFeatureRequest(org.gvsig.remoteClient.wfs.WFSStatus)
|
603 |
*/
|
604 |
protected WFSGetFeatureRequest createGetFeatureRequest(WFSStatus status) {
|
605 |
return new WFSGetFeatureRequest1_0_0(status, this); |
606 |
} |
607 |
|
608 |
/*
|
609 |
* (non-Javadoc)
|
610 |
* @see org.gvsig.remoteClient.wfs.WFSProtocolHandler#createLockFeatureRequest(org.gvsig.remoteClient.wfs.WFSStatus)
|
611 |
*/
|
612 |
protected WFSTLockFeatureRequest createLockFeatureRequest(WFSStatus status) {
|
613 |
return new WFSTLockFeatureRequest1_0_0(status, this); |
614 |
} |
615 |
} |