Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/PolygonMemberTypeBinding.java
PolygonMemberTypeBinding.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; |
... | ... | |
96 | 97 |
* @throws IOException |
97 | 98 |
*/ |
98 | 99 |
public Object parse(IXmlStreamReader parser,GPEDefaultGmlParser handler) throws XmlStreamException, IOException { |
99 |
boolean endFeature = false; |
|
100 |
int currentTag; |
|
100 |
|
|
101 |
parser.require(EventType.START_ELEMENT, GMLTags.GML_NAMESPACE_URI, null); |
|
102 |
|
|
103 |
QName tag = parser.getElementName(); |
|
104 |
|
|
105 |
if (!(GMLTags.GML_POLYGONMEMBER.getLocalPart().equals(tag.getLocalPart()) || GMLTags.GML_SURFACEMEMBER |
|
106 |
.getLocalPart().equals(tag.getLocalPart()))) { |
|
107 |
throw new IllegalStateException( |
|
108 |
"Expected gml:PolygonMember or gml:SurfaceMember, but got " + tag); |
|
109 |
} |
|
110 |
|
|
111 |
boolean endFeature = false; |
|
112 |
EventType currentTag; |
|
101 | 113 |
Object polygon = null; |
102 | 114 |
|
103 |
QName tag = parser.getName(); |
|
104 | 115 |
currentTag = parser.getEventType(); |
105 | 116 |
|
106 | 117 |
while (!endFeature){ |
107 |
switch(currentTag){ |
|
108 |
case IXmlStreamReader.START_ELEMENT:
|
|
118 |
switch(currentTag.getCode()){
|
|
119 |
case EventType.START_ELEMENT_CODE:
|
|
109 | 120 |
polygon = parseTag(parser, handler, tag); |
110 | 121 |
break; |
111 |
case IXmlStreamReader.END_ELEMENT:
|
|
122 |
case EventType.END_ELEMENT_CODE:
|
|
112 | 123 |
endFeature = parseLastTag(parser, handler, tag); |
113 | 124 |
break; |
114 |
case IXmlStreamReader.CHARACTERS: |
|
115 |
|
|
116 |
break; |
|
117 | 125 |
} |
118 | 126 |
if (!endFeature){ |
119 |
currentTag = parser.next(); |
|
120 |
tag = parser.getName(); |
|
127 |
currentTag = parser.nextTag();
|
|
128 |
tag = parser.getElementName();
|
|
121 | 129 |
} |
122 | 130 |
} |
123 | 131 |
return polygon; |
Also available in: Unified diff