Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/MultiPolygonTypeBinding.java
MultiPolygonTypeBinding.java | ||
---|---|---|
6 | 6 |
|
7 | 7 |
import org.gvsig.gpe.gml.parser.GPEDefaultGmlParser; |
8 | 8 |
import org.gvsig.gpe.gml.utils.GMLTags; |
9 |
import org.gvsig.gpe.xml.stream.EventType; |
|
9 | 10 |
import org.gvsig.gpe.xml.stream.IXmlStreamReader; |
10 | 11 |
import org.gvsig.gpe.xml.stream.XmlStreamException; |
11 | 12 |
import org.gvsig.gpe.xml.utils.CompareUtils; |
... | ... | |
116 | 117 |
* @throws IOException |
117 | 118 |
*/ |
118 | 119 |
public Object parse(IXmlStreamReader parser,GPEDefaultGmlParser handler) throws XmlStreamException, IOException { |
119 |
boolean endFeature = false; |
|
120 |
int currentTag; |
|
120 |
|
|
121 |
parser.require(EventType.START_ELEMENT, GMLTags.GML_NAMESPACE_URI, null); |
|
122 |
|
|
123 |
QName tag = parser.getElementName(); |
|
124 |
if (!(GMLTags.GML_MULTIPOLYGON.getLocalPart().equals(tag.getLocalPart()) || GMLTags.GML_MULTISURFACE |
|
125 |
.getLocalPart().equals(tag.getLocalPart()))) { |
|
126 |
throw new IllegalStateException( |
|
127 |
"Expected gml:MiltiPolygon or gml:MultiSurface, but got " + tag); |
|
128 |
} |
|
129 |
boolean endFeature = false; |
|
130 |
EventType currentTag; |
|
121 | 131 |
Object multiPolygon = null; |
122 | 132 |
|
123 | 133 |
super.setAtributtes(parser, handler.getErrorHandler()); |
124 | 134 |
|
125 | 135 |
multiPolygon = handler.getContentHandler().startMultiPolygon(id, srsName); |
126 | 136 |
|
127 |
QName tag = parser.getName(); |
|
128 | 137 |
currentTag = parser.getEventType(); |
129 | 138 |
|
130 | 139 |
while (!endFeature){ |
131 |
switch(currentTag){ |
|
132 |
case IXmlStreamReader.START_ELEMENT:
|
|
140 |
switch(currentTag.getCode()){
|
|
141 |
case EventType.START_ELEMENT_CODE:
|
|
133 | 142 |
parseTag(parser, handler, tag, id, multiPolygon, srsName); |
134 | 143 |
break; |
135 |
case IXmlStreamReader.END_ELEMENT:
|
|
144 |
case EventType.END_ELEMENT_CODE:
|
|
136 | 145 |
endFeature = parseLastTag(parser, handler, tag); |
137 | 146 |
if (endFeature){ |
138 | 147 |
handler.getContentHandler().endMultiPolygon(multiPolygon); |
139 | 148 |
} |
140 | 149 |
break; |
141 |
case IXmlStreamReader.CHARACTERS: |
|
142 |
|
|
143 |
break; |
|
144 | 150 |
} |
145 | 151 |
if (!endFeature){ |
146 |
currentTag = parser.next(); |
|
147 |
tag = parser.getName(); |
|
152 |
currentTag = parser.nextTag();
|
|
153 |
tag = parser.getElementName();
|
|
148 | 154 |
} |
149 | 155 |
} |
150 | 156 |
return multiPolygon; |
Also available in: Unified diff