Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/BoxTypeBinding.java
BoxTypeBinding.java | ||
---|---|---|
8 | 8 |
import org.gvsig.gpe.gml.parser.v2.coordinates.CoordTypeIterator; |
9 | 9 |
import org.gvsig.gpe.gml.parser.v2.coordinates.CoordinatesTypeIterator; |
10 | 10 |
import org.gvsig.gpe.gml.utils.GMLTags; |
11 |
import org.gvsig.gpe.xml.stream.EventType; |
|
11 | 12 |
import org.gvsig.gpe.xml.stream.IXmlStreamReader; |
12 | 13 |
import org.gvsig.gpe.xml.stream.XmlStreamException; |
13 | 14 |
import org.gvsig.gpe.xml.utils.CompareUtils; |
... | ... | |
102 | 103 |
* @throws IOException |
103 | 104 |
*/ |
104 | 105 |
public Object parse(IXmlStreamReader parser,GPEDefaultGmlParser handler) throws XmlStreamException, IOException { |
106 |
|
|
107 |
parser.require(EventType.START_ELEMENT, GMLTags.GML_BOX); |
|
108 |
|
|
105 | 109 |
boolean endFeature = false; |
106 |
int currentTag;
|
|
110 |
EventType currentTag;
|
|
107 | 111 |
Object bbox = null; |
108 | 112 |
|
109 | 113 |
super.setAtributtes(parser, handler.getErrorHandler()); |
110 | 114 |
|
111 |
QName tag = parser.getName(); |
|
115 |
QName tag = parser.getElementName();
|
|
112 | 116 |
currentTag = parser.getEventType(); |
113 | 117 |
|
114 | 118 |
while (!endFeature){ |
115 |
switch(currentTag){ |
|
116 |
case IXmlStreamReader.START_ELEMENT:
|
|
119 |
switch(currentTag.getCode()){
|
|
120 |
case EventType.START_ELEMENT_CODE:
|
|
117 | 121 |
if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_COORDINATES)){ |
118 | 122 |
CoordinatesTypeIterator coordinatesIterator = handler.getProfile().getCoordinatesTypeBinding(); |
119 | 123 |
coordinatesIterator.initialize(parser, handler,GMLTags.GML_BOX); |
120 | 124 |
bbox = handler.getContentHandler().startBbox(id, |
121 | 125 |
coordinatesIterator, |
122 | 126 |
srsName); |
123 |
//The parser pointer is in the </gml:Box> tag |
|
124 |
return bbox; |
|
125 | 127 |
}else if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_COORD)){ |
126 | 128 |
CoordTypeIterator coordinatesIterator = handler.getProfile().getCoordTypeBinding(); |
127 | 129 |
coordinatesIterator.initialize(parser, handler,GMLTags.GML_BOX); |
128 | 130 |
bbox = handler.getContentHandler().startBbox(id, |
129 | 131 |
coordinatesIterator, |
130 | 132 |
srsName); |
131 |
//The parser pointer is in the </gml:Box> tag |
|
132 |
return bbox; |
|
133 | 133 |
} |
134 | 134 |
break; |
135 |
case IXmlStreamReader.END_ELEMENT:
|
|
135 |
case EventType.END_ELEMENT_CODE:
|
|
136 | 136 |
if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_BOX)){ |
137 | 137 |
endFeature = true; |
138 | 138 |
handler.getContentHandler().endBbox(bbox); |
139 | 139 |
} |
140 | 140 |
break; |
141 |
case IXmlStreamReader.CHARACTERS: |
|
142 |
|
|
143 |
break; |
|
144 | 141 |
} |
145 | 142 |
if (!endFeature){ |
146 |
currentTag = parser.next(); |
|
147 |
tag = parser.getName(); |
|
143 |
currentTag = parser.nextTag();
|
|
144 |
tag = parser.getElementName();
|
|
148 | 145 |
} |
149 | 146 |
} |
150 | 147 |
return bbox; |
Also available in: Unified diff