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

View differences:

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