Revision 11485 trunk/libraries/libGPE-KML/src/org/gvsig/gpe/kml/bindings/geometries/LinearRingBinding.java

View differences:

LinearRingBinding.java
53 53
 *
54 54
 * $Id$
55 55
 * $Log$
56
 * Revision 1.2  2007-04-14 16:08:07  jorpiell
56
 * Revision 1.3  2007-05-08 08:22:37  jorpiell
57
 * Add comments to create javadocs
58
 *
59
 * Revision 1.2  2007/04/14 16:08:07  jorpiell
57 60
 * Kml writing support added
58 61
 *
59 62
 * Revision 1.1  2007/04/13 13:16:21  jorpiell
......
62 65
 *
63 66
 */
64 67
/**
68
 * It parses the linearRing KML tag. Example:
69
 * <p>
70
 * <pre>
71
 * <code>
72
 * &lt;LinearRing&gt;
73
 * &lt;coordinates&gt;0.0,0.0 100.0,0.0 50.0,100.0 0.0,0.0&lt;/coordinates&gt;
74
 * &lt;/LinearRing&gt;
75
 * </code>
76
 * </pre>
77
 * </p> 
65 78
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
79
 * @see http://code.google.com/apis/kml/documentation/kml_tags_21.html#linearring
66 80
 */
67 81
public class LinearRingBinding {
68
	
69
	public static double[][] parse(XmlPullParser parser,GPEKmlParser handler) throws KmlBodyParseException {
82

  
83
	/**
84
	 * It parses the linearRing tag
85
	 * @param parser
86
	 * The XML parser
87
	 * @param handler
88
	 * The GPE parser that contains the content handler and
89
	 * the error handler
90
	 * @return
91
	 * It retuns a matrix of doubles with 3 columns (x,y,z) and
92
	 * one row for each coordinate.
93
	 * @throws IOException 
94
	 * @throws XmlPullParserException 
95
	 * @throws XmlPullParserException
96
	 * @throws IOException
97
	 */
98
	public static double[][] parse(XmlPullParser parser,GPEKmlParser handler) throws XmlPullParserException, IOException {
70 99
		boolean endFeature = false;
71 100
		int currentTag;
72 101
		double[][] coordinates = null;
73
				
74
		try {
75
			String tag = parser.getName();
76
			currentTag = parser.getEventType();
77
			
78
			while (!endFeature){
79
				switch(currentTag){
80
				case KXmlParser.START_TAG:
81
					if (tag.compareTo(KmlTags.COORDINATES) == 0){
82
						coordinates = CoordinatesTypeBinding.parse(parser, handler);
83
					}
84
					break;
85
				case KXmlParser.END_TAG:
86
					if (tag.compareTo(KmlTags.LINEARRING) == 0){						
87
						endFeature = true;
88
					}
89
					break;
90
				case KXmlParser.TEXT:					
91
					
92
					break;
102

  
103
		String tag = parser.getName();
104
		currentTag = parser.getEventType();
105

  
106
		while (!endFeature){
107
			switch(currentTag){
108
			case KXmlParser.START_TAG:
109
				if (tag.compareTo(KmlTags.COORDINATES) == 0){
110
					coordinates = CoordinatesTypeBinding.parse(parser, handler);
93 111
				}
94
				if (!endFeature){					
95
					currentTag = parser.next();
96
					tag = parser.getName();
112
				break;
113
			case KXmlParser.END_TAG:
114
				if (tag.compareTo(KmlTags.LINEARRING) == 0){						
115
					endFeature = true;
97 116
				}
98
			}			
99
		} catch (XmlPullParserException e) {
100
			throw new KmlBodyParseException(e);
101
		} catch (IOException e) {
102
			throw new KmlBodyParseException(e);
103
		}
117
				break;
118
			case KXmlParser.TEXT:					
119

  
120
				break;
121
			}
122
			if (!endFeature){					
123
				currentTag = parser.next();
124
				tag = parser.getName();
125
			}
126
		}			
104 127
		return coordinates;
105 128
	}
106 129
}

Also available in: Unified diff