Revision 53 branches/v1_9_0/libGPE-GML/src/org/gvsig/gpe/gml/parser/v2/geometries/MultiPolygonTypeBinding.java

View differences:

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