Revision 492 org.gvsig.gpe/library/trunk/org.gvsig.gpe/org.gvsig.gpe.prov/org.gvsig.gpe.prov.kml/src/main/java/org/gvsig/gpe/prov/kml/parser/v21/geometries/MultiGeometryBinding.java
MultiGeometryBinding.java | ||
---|---|---|
79 | 79 |
* <MultiGeometry> |
80 | 80 |
* </code> |
81 | 81 |
* </pre> |
82 |
* </p>
|
|
82 |
* </p> |
|
83 | 83 |
* @author Jorge Piera LLodr? (jorge.piera@iver.es) |
84 | 84 |
* @see http://code.google.com/apis/kml/documentation/kml_tags_21.html#multigeometry |
85 | 85 |
*/ |
... | ... | |
99 | 99 |
public Object parse(IXmlStreamReader parser,GPEDeafultKmlParser handler) throws XmlStreamException, IOException { |
100 | 100 |
boolean endFeature = false; |
101 | 101 |
int currentTag; |
102 |
Object multiGeometry = null;
|
|
103 |
|
|
102 |
Object multiGeometry = null; |
|
103 |
|
|
104 | 104 |
String id = handler.getProfile().getGeometryBinding().getID(parser, handler); |
105 |
|
|
106 |
multiGeometry = handler.getContentHandler().startMultiGeometry(id, Kml2_1_Tags.DEFAULT_SRS); |
|
107 |
|
|
105 |
|
|
106 |
//multiGeometry = handler.getContentHandler().startMultiGeometry(id, Kml2_1_Tags.DEFAULT_SRS);
|
|
107 |
|
|
108 | 108 |
IQName tag = parser.getName(); |
109 | 109 |
currentTag = parser.getEventType(); |
110 | 110 |
|
... | ... | |
112 | 112 |
switch(currentTag){ |
113 | 113 |
case IXmlStreamReader.START_ELEMENT: |
114 | 114 |
if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.POINT)){ |
115 |
Object point = handler.getProfile().getPointTypeBinding().parse(parser, handler); |
|
115 |
if (multiGeometry == null){ |
|
116 |
multiGeometry = handler.getContentHandler().startMultiPoint(id, Kml2_1_Tags.DEFAULT_SRS); |
|
117 |
} |
|
118 |
Object point = handler.getProfile().getPointTypeBinding().parse(parser, handler); |
|
116 | 119 |
handler.getContentHandler().addGeometryToMultiGeometry(point, multiGeometry); |
117 | 120 |
}else if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.LINESTRING)){ |
121 |
if (multiGeometry == null){ |
|
122 |
multiGeometry = handler.getContentHandler().startMultiLineString(id, Kml2_1_Tags.DEFAULT_SRS); |
|
123 |
} |
|
118 | 124 |
Object lineString = handler.getProfile().getLineStringTypeBinding().parse(parser, handler); |
119 | 125 |
handler.getContentHandler().addGeometryToMultiGeometry(lineString, multiGeometry); |
120 |
}if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.POLYGON)){ |
|
126 |
}else if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.POLYGON)){ |
|
127 |
if (multiGeometry == null){ |
|
128 |
multiGeometry = handler.getContentHandler().startMultiPolygon(id, Kml2_1_Tags.DEFAULT_SRS); |
|
129 |
} |
|
121 | 130 |
Object polygon = handler.getProfile().getPolygonTypeBinding().parse(parser, handler); |
122 | 131 |
handler.getContentHandler().addGeometryToMultiGeometry(polygon, multiGeometry); |
132 |
}else{ |
|
133 |
if (multiGeometry == null){ |
|
134 |
multiGeometry = handler.getContentHandler().startMultiGeometry(id, Kml2_1_Tags.DEFAULT_SRS); |
|
135 |
} |
|
123 | 136 |
} |
124 | 137 |
break; |
125 | 138 |
case IXmlStreamReader.END_ELEMENT: |
126 |
if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.MULTIGEOMETRY)){
|
|
127 |
endFeature = true;
|
|
139 |
if (handler.getQNameComparator().equals(tag,Kml2_1_Tags.MULTIGEOMETRY)){ |
|
140 |
endFeature = true; |
|
128 | 141 |
multiGeometry = handler.getContentHandler().endMultiGeometry(multiGeometry); |
129 | 142 |
} |
130 | 143 |
break; |
131 |
case IXmlStreamReader.CHARACTERS:
|
|
132 |
|
|
144 |
case IXmlStreamReader.CHARACTERS: |
|
145 |
|
|
133 | 146 |
break; |
134 | 147 |
} |
135 |
if (!endFeature){
|
|
148 |
if (!endFeature){ |
|
136 | 149 |
currentTag = parser.next(); |
137 | 150 |
tag = parser.getName(); |
138 | 151 |
} |
139 |
}
|
|
140 |
return multiGeometry;
|
|
152 |
} |
|
153 |
return multiGeometry; |
|
141 | 154 |
} |
142 | 155 |
} |
Also available in: Unified diff