Revision 40827

View differences:

branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/handler/Handler.java
58 58
import org.gvsig.sldsupport.exception.UnsupportedSLDObjectException;
59 59
import org.gvsig.sldsupport.exception.UnsupportedSLDVersionException;
60 60
import org.gvsig.sldsupport.impl.parser.ExtendedKXmlParser;
61
import org.gvsig.sldsupport.impl.sld.parsing.FeatureStyleElement;
61 62
import org.gvsig.sldsupport.impl.sld.parsing.NamedLayerElement;
62 63
import org.gvsig.sldsupport.impl.sld.parsing.UserLayerElement;
63 64
import org.gvsig.sldsupport.impl.sld.parsing.symbol.SymbolElement;
......
69 70
import org.gvsig.sldsupport.sld.layer.SLDLayer;
70 71
import org.gvsig.sldsupport.sld.layer.SLDNamedLayer;
71 72
import org.gvsig.sldsupport.sld.layer.SLDUserLayer;
73
import org.gvsig.sldsupport.sld.style.SLDFeatureStyle;
72 74
import org.gvsig.sldsupport.sld.symbol.SLDSymbol;
73 75
import org.kxml2.io.KXmlParser;
74 76
import org.xmlpull.v1.XmlPullParser;
......
128 130
			return root;
129 131
			
130 132
		} else {
131
			if (name.compareToIgnoreCase(SLDTags.USERDEFINEDLAYER) == 0
132
					|| name.compareToIgnoreCase(SLDTags.NAMEDLAYER) == 0) {
133
			if (name.compareToIgnoreCase(SLDTags.FEATURESTYLE) == 0
134
					|| name.compareToIgnoreCase(SLDTags.FEATURETYPESTYLE) == 0) {
133 135
				/*
134 136
				 * This line is out of the SLD standard
135 137
				 */
136 138
				v = parser.getAttributeValue(null, SLDTags.VERSION_ATTR);
137
				return parseLayer(parser, v);
139
				return parseFeatureStyle(parser, v);
138 140
			} else {
139 141
				if (name.compareToIgnoreCase(SLDTags.LINESYMBOLIZER) == 0
140 142
						|| name.compareToIgnoreCase(SLDTags.POLYGONSYMBOLIZER) == 0
......
156 158

  
157 159
	private static SLDSymbol parseSymbol(XmlPullParser parser, String version)
158 160
			throws XmlPullParserException, IOException, SLDReadException {
159

  
160
		return null;
161
		
162
		return SymbolElement.parse(parser, version);
161 163
	}
162 164
	
163

  
164 165
	private static SLDLayer parseLayer(XmlPullParser parser, String version)
165 166
			throws XmlPullParserException, IOException, SLDReadException {
166 167

  
......
181 182
		return resp;	
182 183
		
183 184
	}
185
	
186
	private static SLDFeatureStyle parseFeatureStyle(
187
			XmlPullParser parser, String version)
188
			throws XmlPullParserException, IOException, SLDReadException {
184 189

  
190
		String name = parser.getName();
191
		SLDFeatureStyle resp = null;
192
		
193
		if (SLDUtils.isStr(name, SLDTags.FEATURESTYLE) ||
194
				SLDUtils.isStr(name, SLDTags.FEATURETYPESTYLE)) {
195
			resp = FeatureStyleElement.parse(parser, version);
196
		} else {
197
			throw new SLDReadException(
198
					"Expected layer, found: '" + name + "' tag");			
199
		}
200
		return resp;	
201
		
202
	}
203

  
185 204
	private static SLDRoot parseRoot(XmlPullParser parser, String version)
186 205
			throws XmlPullParserException, IOException, SLDReadException {
187 206
		
......
216 235
		}
217 236
		
218 237
		if (! (obj instanceof SLDRoot
219
				|| obj instanceof SLDLayer
238
				|| obj instanceof SLDFeatureStyle
220 239
				|| obj instanceof SLDSymbol)) {
221 240
			
222 241
			throw new InvalidSLDObjectException("Unexpected class.",
......
249 268
			throws InvalidSLDObjectException, UnsupportedSLDObjectException {
250 269
		
251 270
		if (! (obj instanceof SLDRoot
252
				|| obj instanceof SLDLayer
271
				|| obj instanceof SLDFeatureStyle
253 272
				|| obj instanceof SLDSymbol)) {
254 273
			
255
			throw new InvalidSLDObjectException("Unexpected class.",
274
			throw new InvalidSLDObjectException("Unexpected entity.",
256 275
					obj.getClass().getName());
257 276
		}
258 277
		
......
276 295
		if (obj instanceof SLDRoot) {
277 296
			appendRoot((SLDRoot) obj, xmlBuilder, attributes);
278 297
		} else {
279
			if (obj instanceof SLDUserLayer) {
298
			if (obj instanceof SLDFeatureStyle) {
280 299
				/*
281 300
				 * Doing this is not SLD standard-conformal
282 301
				 */
283
				UserLayerElement.append((SLDUserLayer) obj, xmlBuilder, attributes); 
302
				FeatureStyleElement.append((SLDFeatureStyle) obj, xmlBuilder, attributes); 
284 303
			} else {
285
				if (obj instanceof SLDNamedLayer) {
304
				if (obj instanceof SLDSymbol) {
286 305
					/*
287 306
					 * Doing this is not SLD standard-conformal
288 307
					 */
289
					NamedLayerElement.append((SLDNamedLayer) obj, xmlBuilder, attributes); 
290
				} else {
291
					if (obj instanceof SLDSymbol) {
292
						/*
293
						 * Doing this is not SLD standard-conformal
294
						 */
295
						SymbolElement.append((SLDSymbol) obj,  xmlBuilder, attributes);
296
					}
308
					SymbolElement.append((SLDSymbol) obj,  xmlBuilder, attributes);
297 309
				}
298 310
			}
299 311
		}
......
318 330
			for (int i=0; i<list.size(); i++) {
319 331
				if (list.get(i) instanceof SLDUserLayer) {
320 332
					// Do not pass attributes 8already written)
321
					UserLayerElement.append((SLDUserLayer) list.get(i), xb, null);
333
					UserLayerElement.append((SLDUserLayer) list.get(i), xb, root.getVersion());
322 334
				} else {
323 335
					if (list.get(i) instanceof SLDNamedLayer) {
324 336
						// Do not pass attributes 8already written)
325
						NamedLayerElement.append((SLDNamedLayer) list.get(i), xb, null);
337
						NamedLayerElement.append((SLDNamedLayer) list.get(i), xb, root.getVersion());
326 338
					} else {
327 339
						throw new UnsupportedSLDObjectException(
328 340
								(list.get(i) == null ? "Null" :
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/NamedLayerElement.java
20 20
public class NamedLayerElement {
21 21
	
22 22
	public static void append(
23
			SLDNamedLayer obj, XmlBuilder xb, Map<String, String> atts)
23
			SLDNamedLayer obj, XmlBuilder xb, String version)
24 24
					throws
25 25
					InvalidSLDObjectException, UnsupportedSLDObjectException {
26 26
		
27
		if (atts != null) {
28
			// This is user layer is main entity of file (not standard)
29
			xb.openTag(SLDTags.NAMEDLAYER, atts);
30
		} else {
31
			xb.openTag(SLDTags.NAMEDLAYER);
32
		}
27
		xb.openTag(SLDTags.NAMEDLAYER);
33 28
		//==================================================
34 29
		//==================================================
35 30
		xb.closeTag();
......
42 37
		int tag = 0;
43 38
		
44 39
		SLDNamedLayer resp = new SLDNamedLayer();
45
		resp.setVersion(version);
46 40
		
47 41
		tag = parser.nextTag();
48 42
		String name = parser.getName();
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/FillElement.java
21 21
			throws
22 22
			InvalidSLDObjectException, UnsupportedSLDObjectException {
23 23
		
24
		xb.openTag(SLDTags.FILL);
25
		// ======================
26
		if (obj.getFillGraphic() != null) {
27
			GraphicFillElement.append(
28
					new SLDGraphicFill(obj.getFillGraphic()), xb, version);
29
		}
30
		// =========
31
		if (obj.getFillColor() != null) {
32
			SLDSvgCssParameter p = new SLDSvgCssParameter();
33
			p.setName(SLDTags.FILL_ATTR);
34
			p.getExpressionList().add(obj.getFillColor());
35
			SvgCssParameterElement.append(p, xb, version);
36
		}
37
		// =========
38
		if (obj.getOpacity() != null) {
39
			SLDSvgCssParameter p = new SLDSvgCssParameter();
40
			p.setName(SLDTags.FILLOPACITY_ATTR);
41
			p.getExpressionList().add(obj.getOpacity());
42
			SvgCssParameterElement.append(p, xb, version);
43
		}
44
		// ======================
45
		xb.closeTag();
24 46
	}
25 47
	
26 48
	public static SLDFill parse(XmlPullParser parser , String version)
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/FeatureTypeConstraintElement.java
18 18
	
19 19
	public static void append(
20 20
			SLDFeatureTypeConstraint obj, XmlBuilder xb, String version)
21
					throws
22
					InvalidSLDObjectException, UnsupportedSLDObjectException {
21
	throws InvalidSLDObjectException, UnsupportedSLDObjectException {
23 22
		
23
		xb.openTag(SLDTags.FEATURETYPECONSTRAINT);
24
		// ========================
25
		if (obj.getFeatureTypeName() != null) {
26
			xb.writeTag(SLDTags.FEATURETYPENAME, obj.getFeatureTypeName());
27
		}
28
		// =========
29
		if (obj.getFilter() != null) {
30
			// 0 or 1 filters
31
			FilterElement.append(obj.getFilter(), xb, version);
32
		}
33
		// =========
34
		for (int i=0; i<obj.getExtents().size(); i++) {
35
			ExtentElement.append(obj.getExtents().get(i), xb, version);
36
		}
37
		// ========================
38
		xb.closeTag();
24 39
	}
25 40
	
26 41
	public static SLDFeatureTypeConstraint parse(XmlPullParser parser , String version)
......
52 67
				}
53 68
				if (SLDUtils.isStr(name, SLDTags.EXTENT)) {
54 69
					SLDExtent ext = ExtentElement.parse(parser, version);
55
					resp.setExtent(ext);
70
					resp.getExtents().add(ext);
56 71
					break;
57 72
				}
58 73
				/*
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/filteroperator/logic/UnaryLogicOperatorElement.java
35 35
		SLDUnaryLogicOperator resp = new SLDUnaryLogicOperator();
36 36
		String op_type = parser.getName();
37 37
		if (SLDUtils.isStr(op_type, FilterTags.NOT)) {
38
			resp.setIsNot(true);
38
			resp.setOperatorType(FilterTags.NOT);
39 39
		} else {
40 40
			throw new SLDReadException("Unknwon unary operator: " + op_type);
41 41
		}
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/filteroperator/spatial/BBoxOperatorElement.java
58 58
				}
59 59
				if (SLDUtils.isStr(name, FilterTags.ENVELOPE)) {
60 60
					GMLEnvelope env = EnvelopeElement.parse(parser, version);
61
					resp.setEnvelope(env.getWKT());
61
					resp.setEnvelope(env);
62 62
					break;
63 63
				}
64 64
				/*
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/symbol/SymbolElement.java
63 63
			return PolygonSymbolElement.parse(parser, version);
64 64
		}
65 65
		
66
		/*
67
		 * RasterSymbol, TextSymbol, MappedColorSymbol
68
		 */
66 69
		throw new SLDReadException("Unsupported symbol entity: " + name);
67 70
	}
68 71
}
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/symbol/LineSymbolElement.java
68 68
		if (v.compareToIgnoreCase(SLDUtils.VERSION_1_1_0) == 0) {
69 69
			SLDParameterValue pv = obj.getPerpendicularOffset();
70 70
			if (pv != null) {
71
				xb.openTag(SLDTags.PERPENDICULAROFFSET);
72
				ParameterValueElement.append(pv, xb, v);
73
				xb.closeTag();
71
				ParameterValueElement.append(SLDTags.PERPENDICULAROFFSET, pv, xb, v);
74 72
			}
75 73
		}
76 74
		// ==================================================
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/UserLayerElement.java
20 20
public class UserLayerElement {
21 21
	
22 22
	public static void append(
23
			SLDUserLayer obj, XmlBuilder xb, Map<String, String> atts)
23
			SLDUserLayer obj, XmlBuilder xb, String version)
24 24
					throws
25 25
					InvalidSLDObjectException, UnsupportedSLDObjectException {
26 26
		
27
		if (atts != null) {
28
			// This is user layer is main entity of file (not standard)
29
			xb.openTag(SLDTags.USERDEFINEDLAYER, atts);
30
		} else {
31
			xb.openTag(SLDTags.USERDEFINEDLAYER);
32
		}
27
		xb.openTag(SLDTags.USERDEFINEDLAYER);
33 28
		//==================================================
34 29
		//==================================================
35 30
		xb.closeTag();
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/sld/parsing/FeatureStyleElement.java
1 1
package org.gvsig.sldsupport.impl.sld.parsing;
2 2

  
3 3
import java.io.IOException;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
4 7

  
5 8
import org.gvsig.sldsupport.exception.InvalidSLDObjectException;
6 9
import org.gvsig.sldsupport.exception.SLDReadException;
......
16 19

  
17 20
public class FeatureStyleElement {
18 21
	
19
	public static void append(SLDFeatureStyle obj, XmlBuilder xb, String version)
20
					throws InvalidSLDObjectException, UnsupportedSLDObjectException {
22
	public static void append(
23
			SLDFeatureStyle obj, XmlBuilder xb, Map<String, String> atts)
24
	throws InvalidSLDObjectException, UnsupportedSLDObjectException {
21 25
		
22
		String v = version;
26
		String v = obj.getVersion();
23 27
		if (v == null) {
24
			v = obj.getVersion();
28
			v = SLDUtils.DEFAULT_VERSION;
25 29
		}
26 30
		
27 31
		if (v.compareToIgnoreCase(SLDUtils.VERSION_1_1_0) == 0) {
......
32 36
	}
33 37
	
34 38
	
35
	private static void appendv100(SLDFeatureStyle obj, XmlBuilder xb) {
39
	private static void appendv100(SLDFeatureStyle obj, XmlBuilder xb)
40
			throws InvalidSLDObjectException, UnsupportedSLDObjectException {
36 41
		
37 42
		xb.openTag(SLDTags.FEATURETYPESTYLE);
38
		
43
		// =================================
39 44
		if (obj.getName() != null) {
40 45
			xb.writeTag(SLDTags.NAME, obj.getName());
41 46
		}
......
43 48
			xb.writeTag(SLDTags.TITLE, obj.getTitle());
44 49
		}
45 50
		if (obj.getDescription() != null) {
51
			// it is called "Description" in v. 1.1.0
46 52
			xb.writeTag(SLDTags.ABSTRACT, obj.getDescription());
47 53
		}
48 54
		if (obj.getFeatureTypeName() != null) {
49 55
			xb.writeTag(SLDTags.FEATURETYPENAME, obj.getFeatureTypeName());
50 56
		}
51
		
57
		List<String> list = obj.getSemanticTypeIdentifiers();
58
		for (int i=0; i<list.size(); i++) {
59
			xb.writeTag(SLDTags.SEMANTICTYPEIDENTIFIER, list.get(i));
60
		}
61
		// ================
62
		List<SLDRule> rules = obj.getRules();
63
		if (rules == null || rules.size() == 0) {
64
			throw new InvalidSLDObjectException(
65
					SLDTags.FEATURETYPESTYLE, "No rules found");
66
		} else {
67
			for (int i=0; i<rules.size(); i++) {
68
				RuleElement.append(rules.get(i), xb, SLDUtils.VERSION_1_0_0);
69
			}
70
		}
71
		// =================================
52 72
		xb.closeTag();
53 73
	}
54 74

  
55 75

  
56
	private static void appendv110(SLDFeatureStyle obj, XmlBuilder xb) {
76
	private static void appendv110(SLDFeatureStyle obj, XmlBuilder xb)
77
			throws InvalidSLDObjectException, UnsupportedSLDObjectException {
57 78
		
58
		xb.openTag(SLDTags.FEATURESTYLE);
59
		
60
		
61
		
79
		if (obj.getVersion() != null) {
80
			Map<String, String> atts = new HashMap<String, String>();
81
			atts.put(SLDTags.VERSION_ATTR, obj.getVersion());
82
			xb.openTag(SLDTags.FEATURESTYLE, atts);
83
		} else {
84
			xb.openTag(SLDTags.FEATURESTYLE);
85
		}
86
		// =================================
87
		if (obj.getName() != null) {
88
			xb.writeTag(SLDTags.NAME, obj.getName());
89
		}
90
		if (obj.getDescription() != null) {
91
			xb.writeTag(SLDTags.DESCRIPTION, obj.getDescription());
92
		}
93
		if (obj.getFeatureTypeName() != null) {
94
			xb.writeTag(SLDTags.FEATURETYPENAME, obj.getFeatureTypeName());
95
		} else {
96
			// mandatory in v 1.1.0
97
			throw new InvalidSLDObjectException(
98
					SLDTags.FEATURESTYLE,
99
					SLDTags.FEATURETYPENAME + " is mandatory in version 1.1.0");
100
		}
101
		// =========
102
		List<String> list = obj.getSemanticTypeIdentifiers();
103
		for (int i=0; i<list.size(); i++) {
104
			xb.writeTag(SLDTags.SEMANTICTYPEIDENTIFIER, list.get(i));
105
		}
106
		// ================
107
		List<SLDRule> rules = obj.getRules();
108
		if (rules == null || rules.size() == 0) {
109
			throw new InvalidSLDObjectException(
110
					SLDTags.FEATURESTYLE, "No rules found");
111
		} else {
112
			for (int i=0; i<rules.size(); i++) {
113
				RuleElement.append(rules.get(i), xb, SLDUtils.VERSION_1_0_0);
114
			}
115
		}
116
		// =================================
62 117
		xb.closeTag();
63 118
	}
64 119

  
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/sld/constraints/SLDFeatureTypeConstraint.java
1 1
package org.gvsig.sldsupport.sld.constraints;
2 2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
3 6
import org.gvsig.sldsupport.sld.extent.SLDExtent;
4 7
import org.gvsig.sldsupport.sld.filter.SLDFilter;
5 8

  
......
7 10
	
8 11
	protected String featureTypeName = null;
9 12
	protected SLDFilter filter = null;
10
	protected SLDExtent extent = null;
13
	protected List<SLDExtent> extents = new ArrayList<SLDExtent>();
11 14
	
12 15
	public String getFeatureTypeName() {
13 16
		return featureTypeName;
......
17 20
		return filter;
18 21
	}
19 22
	
20
	public SLDExtent getExtent() {
21
		return extent;
23
	public List<SLDExtent> getExtents() {
24
		return extents;
22 25
	}
23 26
	
24 27
	public void setFeatureTypeName(String n) {
......
29 32
		this.filter = f;
30 33
	}
31 34

  
32
	public void setExtent(SLDExtent se) {
33
		this.extent = se;
34
	}
35

  
36 35
}
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/sld/layer/SLDLayer.java
3 3
import org.gvsig.sldsupport.sld.SLDObject;
4 4
import org.gvsig.sldsupport.sld.constraints.SLDLayerFeatureConstraints;
5 5

  
6
public abstract class SLDLayer implements SLDObject {
6
public abstract class SLDLayer /*implements SLDObject*/ {
7 7
	
8 8
	protected String name = null;
9 9
	protected SLDLayerFeatureConstraints layerFeatConstraints = null;
10
	protected String version = null;
10
	// protected String version = null;
11 11
	
12 12
	public SLDLayer() {
13 13
		
14 14
	}
15 15
	
16
	/*
16 17
	public String getVersion() {
17 18
		return version;
18 19
	}
20
	*/
19 21
	
20 22
	
21 23
	public String getName() {
......
36 38
		this.name = name;
37 39
	}
38 40

  
41
	/*
39 42
	public void setVersion(String version) {
40 43
		this.version = version;
41 44
	}
45
	*/
42 46

  
43 47
}
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/sld/graphic/SLDGraphicFill.java
6 6
	
7 7
	public SLDGraphicFill() {
8 8
	}
9

  
10
	public SLDGraphicFill(SLDGraphic g) {
11
		graphic = g;
12
	}
9 13
	
10 14
	public SLDGraphic getGraphic() {
11 15
		return graphic;
branches/v02_desarrollo/libraries/sld/temp/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/sld/style/SLDFeatureStyle.java
3 3
import java.util.ArrayList;
4 4
import java.util.List;
5 5

  
6
import org.gvsig.sldsupport.sld.SLDObject;
6 7
import org.gvsig.sldsupport.sld.rule.SLDRule;
7 8

  
8
public class SLDFeatureStyle {
9
public class SLDFeatureStyle implements SLDObject {
9 10
	
10 11
	protected String name = null;
11 12
	

Also available in: Unified diff