Revision 492 org.gvsig.gpe/library/trunk/org.gvsig.gpe/org.gvsig.gpe.prov/org.gvsig.gpe.prov.gml/src/main/java/org/gvsig/gpe/prov/gml/parser/v2/geometries/MultiGeometryTypeBinding.java
MultiGeometryTypeBinding.java | ||
---|---|---|
73 | 73 |
* It parses a gml:MultiGeometryType object. Example: |
74 | 74 |
* <p> |
75 | 75 |
* <pre> |
76 |
* <code>
|
|
76 |
* <code> |
|
77 | 77 |
* <MultiGeometry gid="c731" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> |
78 | 78 |
* <geometryMember> |
79 | 79 |
* <Point gid="P6776"> |
... | ... | |
99 | 99 |
* </MultiGeometry> |
100 | 100 |
* </code> |
101 | 101 |
* </pre> |
102 |
* </p>
|
|
102 |
* </p> |
|
103 | 103 |
* @author Jorge Piera LLodr? (jorge.piera@iver.es) |
104 | 104 |
*/ |
105 | 105 |
public class MultiGeometryTypeBinding extends GeometryBinding{ |
106 |
|
|
106 |
|
|
107 | 107 |
/** |
108 | 108 |
* It parses the gml:MultiGeometry tag |
109 | 109 |
* @param parser |
... | ... | |
119 | 119 |
public Object parse(IXmlStreamReader parser,GPEDefaultGmlParser handler) throws XmlStreamException, IOException { |
120 | 120 |
boolean endFeature = false; |
121 | 121 |
int currentTag; |
122 |
Object multiGeometry = null;
|
|
123 |
|
|
122 |
Object multiGeometry = null; |
|
123 |
|
|
124 | 124 |
super.setAtributtes(parser, handler); |
125 |
|
|
126 |
multiGeometry = handler.getContentHandler().startMultiGeometry(id, srsName); |
|
127 |
|
|
125 |
|
|
126 |
//multiGeometry = handler.getContentHandler().startMultiGeometry(id, srsName);
|
|
127 |
|
|
128 | 128 |
IQName tag = parser.getName(); |
129 | 129 |
currentTag = parser.getEventType(); |
130 | 130 |
|
... | ... | |
134 | 134 |
if (handler.getQNameComparator().equals(tag,GmlTags.GML_GEOMETRYMEMBER)){ |
135 | 135 |
Object geometry = handler.getProfile().getGeometryMemberTypeBinding(). |
136 | 136 |
parse(parser, handler); |
137 |
if (multiGeometry ==null){ |
|
138 |
if (geometry instanceof PolygonTypeBinding){ |
|
139 |
multiGeometry = handler.getContentHandler().startMultiPolygon(id, srsName); |
|
140 |
} else if (geometry instanceof LineStringTypeBinding){ |
|
141 |
multiGeometry = handler.getContentHandler().startMultiLineString(id, srsName); |
|
142 |
} else if (geometry instanceof PointTypeBinding){ |
|
143 |
multiGeometry = handler.getContentHandler().startMultiPoint(id, srsName); |
|
144 |
}else{ |
|
145 |
multiGeometry = handler.getContentHandler().startMultiGeometry(id, srsName); |
|
146 |
} |
|
147 |
} |
|
137 | 148 |
handler.getContentHandler().addGeometryToMultiGeometry(geometry, multiGeometry); |
138 | 149 |
} |
139 | 150 |
break; |
140 | 151 |
case IXmlStreamReader.END_ELEMENT: |
141 |
if (handler.getQNameComparator().equals(tag,GmlTags.GML_MULTIGEOMETRY)){
|
|
142 |
endFeature = true;
|
|
152 |
if (handler.getQNameComparator().equals(tag,GmlTags.GML_MULTIGEOMETRY)){ |
|
153 |
endFeature = true; |
|
143 | 154 |
multiGeometry = handler.getContentHandler().endMultiGeometry(multiGeometry); |
144 | 155 |
} |
145 | 156 |
break; |
146 |
case IXmlStreamReader.CHARACTERS:
|
|
147 |
|
|
157 |
case IXmlStreamReader.CHARACTERS: |
|
158 |
|
|
148 | 159 |
break; |
149 | 160 |
} |
150 |
if (!endFeature){
|
|
161 |
if (!endFeature){ |
|
151 | 162 |
currentTag = parser.next(); |
152 | 163 |
tag = parser.getName(); |
153 | 164 |
} |
154 |
}
|
|
155 |
return multiGeometry;
|
|
165 |
} |
|
166 |
return multiGeometry; |
|
156 | 167 |
} |
157 | 168 |
} |
Also available in: Unified diff