Revision 40740

View differences:

branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/io/SLDSymbolReader.java
1 1
package org.gvsig.sldsupport.io;
2 2

  
3
import java.util.List;
4

  
3 5
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
4 6
import org.gvsig.sldsupport.exception.SLDReadException;
5 7
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamReader;
6 8

  
7 9
public interface SLDSymbolReader {
8 10
	
9
	public ISymbol read(IXmlStreamReader reader)
11
	public List<Class<? extends ISymbol>> getSupportedSymbols();
12

  
13
	public List<String> getSupportedVersions();
14
	
15
	public ISymbol read(IXmlStreamReader reader, String version)
10 16
	throws SLDReadException;
11 17

  
12 18
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/io/SLDLegendWriter.java
1 1
package org.gvsig.sldsupport.io;
2 2

  
3
import java.util.List;
4

  
3 5
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
4 6
import org.gvsig.sldsupport.exception.SLDWriteException;
5 7
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamWriter;
6 8

  
7 9
public interface SLDLegendWriter {
8 10
	
9
	public void write(ILegend leg, IXmlStreamWriter writer)
11
	public List<Class<? extends ILegend>> getSupportedLegends();
12

  
13
	public List<String> getSupportedVersions();
14
	
15
	public void write(ILegend leg, IXmlStreamWriter writer, String version)
10 16
	throws SLDWriteException;
11 17

  
12 18
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/io/SLDLegendReader.java
1 1
package org.gvsig.sldsupport.io;
2 2

  
3
import java.util.List;
4

  
3 5
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
4 6
import org.gvsig.sldsupport.exception.SLDReadException;
5 7
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamReader;
6 8

  
7 9
public interface SLDLegendReader {
8 10
	
9
	public ILegend read(IXmlStreamReader reader)
11
	public List<Class<? extends ILegend>> getSupportedLegends();
12

  
13
	public List<String> getSupportedVersions();
14

  
15
	public ILegend read(IXmlStreamReader reader, String version)
10 16
	throws SLDReadException;
11 17

  
12 18
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/io/SLDSymbolWriter.java
1 1
package org.gvsig.sldsupport.io;
2 2

  
3
import java.util.List;
4

  
5
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
3 6
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
4 7
import org.gvsig.sldsupport.exception.SLDWriteException;
5 8
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamWriter;
6 9

  
7 10
public interface SLDSymbolWriter {
8 11
	
9
	public void write(ISymbol sym, IXmlStreamWriter writer)
12
	public List<Class<? extends ISymbol>> getSupportedSymbols();
13

  
14
	public List<String> getSupportedVersions();
15
	
16
	public void write(ISymbol sym, IXmlStreamWriter writer, String version)
10 17
	throws SLDWriteException;
11 18

  
12 19
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/SLDSupportManager.java
1 1
package org.gvsig.sldsupport;
2 2

  
3
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
3 4
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
4 5
import org.gvsig.sldsupport.exception.SLDReadException;
5 6
import org.gvsig.sldsupport.exception.SLDWriteException;
7
import org.gvsig.sldsupport.io.SLDLegendReader;
8
import org.gvsig.sldsupport.io.SLDLegendWriter;
9
import org.gvsig.sldsupport.io.SLDSymbolReader;
10
import org.gvsig.sldsupport.io.SLDSymbolWriter;
6 11
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
7 12
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
8 13
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
......
10 15
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamWriter;
11 16

  
12 17
public interface SLDSupportManager {
13
	
14
	public void writeSymbol(IXmlStreamWriter writer)
15
			throws SLDWriteException;
16
	
17
	// =========================================
18
	
18

  
19
	public ISymbol readSymbol(IXmlStreamReader reader, String version)
20
			throws SLDReadException;
21

  
22
	/*
19 23
	public IMarkerSymbol readMarkerSymbol(IXmlStreamReader reader)
20 24
			throws SLDReadException;
21
	
22 25
	public ILineSymbol readLineSymbol(IXmlStreamReader reader)
23 26
			throws SLDReadException;
24
	
25 27
	public IFillSymbol readFillSymbol(IXmlStreamReader reader)
26 28
			throws SLDReadException;
29
	*/
30
	// ============================================
31
	public void writeSymbol(ISymbol sym, IXmlStreamWriter writer, String version)
32
			throws SLDWriteException;
33
	// ============================================
34
	// ============================================
35
	
36
	public ILegend readLegend(IXmlStreamReader reader, String version)
37
			throws SLDReadException;
38
	// ============================================
39
	public void writeLegend(ILegend leg, IXmlStreamWriter writer, String version)
40
			throws SLDWriteException;
27 41

  
28
	public ISymbol readSymbol(IXmlStreamReader reader)
29
			throws SLDReadException;
42
	// ============================================
43
	// ============================================
44

  
45
	public void registerSymbolReader(SLDSymbolReader reader);
46
	public void registerSymbolWriter(SLDSymbolWriter writer);
30 47
	
48
	public void registerLegendReader(SLDLegendReader reader);
49
	public void registerLegendWriter(SLDLegendWriter writer);
31 50
	
32
	
51
	// ============================================
52
	// ============================================
33 53

  
54

  
34 55
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.api/src/main/java/org/gvsig/sldsupport/layer/ISLDLayer.java
1
/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib��ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package org.gvsig.remoteClient.sld.layers;
42

  
43
import java.util.ArrayList;
44

  
45
import org.gvsig.remoteClient.sld.SLDLayerFeatureConstraints;
46
import org.gvsig.remoteClient.sld.filterEncoding.Filter;
47
import org.gvsig.remoteClient.sld.styles.AbstractSLDStyle;
48
import org.gvsig.remoteClient.sld.symbolizers.ISLDSymbolizer;
49
/**
50
 * Interface that has to be implemented by all the sld Layers 
51
 *
52
 * @see http://portal.opengeospatial.org/files/?artifact_id=1188
53
 * @author Pepe Vidal Salvador - jose.vidal.salvador@iver.es
54
 */
55

  
56
public interface ISLDLayer {
57

  
58
	/**
59
	 * Obtains all the symbolizers for the specific shapeType which are contained in
60
	 * a layer
61
	 * 
62
	 * @param shapeType
63
	 * @return
64
	 */
65
	public ArrayList<ISLDSymbolizer> getSymbolizersByShapeType(int type);
66
	/**
67
	 * Obtains all the filters contained in a layer.
68
	 * 
69
	 * @return ArrayList of Filters
70
	 */
71
	public ArrayList<Filter> getLayerFilters();
72
	/**
73
	 * Obtains all the fieldNames contained in a Layer.
74
	 *  
75
	 * @return String[] with all the fieldNames
76
	 */
77
	public String[] getFieldNames();
78
	/**
79
	 * Returns true if the layer has rules with filters for symbolizers which has
80
	 * the same shapeType as the parameter (the shapeType of the layer).
81
	 * Otherwise, false.
82
	 * 
83
	 * @param shapeType of the layer
84
	 */
85
	public boolean layerHasFilterForSymbolizers(int shapeType);
86
	/**
87
	 * Returns true if the layer contains filters. Otherwise, false.
88
	 * 
89
	 * @return
90
	 */
91
	public boolean layerHasFilters();
92
	/**
93
	 * Returns true if the layer contains symbolizers of an specific shapeType.
94
	 * Otherwise, false.
95
	 * 
96
	 * @param shapeType
97
	 * @return
98
	 */
99
	public boolean layerHasSymbolizers(int shapeType);
100
	/**
101
	 * Returns the name of the layer
102
	 * @return
103
	 */
104
	public String getName();
105
	/**
106
	 * Sets the name of the layer
107
	 * 
108
	 * @param name
109
	 */
110
	public void setName(String name) ;
111
	/**
112
	 * Obtains the styles contained in a layer
113
	 * @return
114
	 */
115
	public ArrayList<AbstractSLDStyle> getLayerStyles() ;
116
	/**
117
	 * Sets the styles to be contained in a layer
118
	 * @param layerStyles
119
	 */
120
	public void setLayerStyles(ArrayList<AbstractSLDStyle> layerStyles);
121
	public ArrayList<SLDLayerFeatureConstraints> getLayerFeatureConstraints() ;
122
	public void setLayerFeatureConstraints(ArrayList<SLDLayerFeatureConstraints> layerFeatureConstraints) ;
123
	public void addLayerFeatureConstraint(SLDLayerFeatureConstraints layerFeatureCons);
124
	public void addLayerStyle(AbstractSLDStyle style);
125
}
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.impl/pom.xml
16 16
      	<artifactId>org.gvsig.sldsupport.lib.api</artifactId>
17 17
      	<scope>compile</scope>
18 18
	</dependency>
19
    <dependency>
20
      <groupId>org.gvsig</groupId>
21
      <artifactId>org.gvsig.symbology.lib.api</artifactId>
22
      <scope>compile</scope>
23
    </dependency>
24
    <dependency>
25
      <groupId>org.gvsig</groupId>
26
      <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
27
      <scope>compile</scope>
28
    </dependency>	
29
	
19 30
  </dependencies>
20 31

  
21 32

  
branches/v02_desarrollo/libraries/org.gvsig.sldsupport/org.gvsig.sldsupport.lib/org.gvsig.sldsupport.lib.impl/src/main/java/org/gvsig/sldsupport/impl/DefaultSLDSupportManager.java
1 1
package org.gvsig.sldsupport.impl;
2 2

  
3
import java.lang.reflect.Constructor;
4
import java.util.ArrayList;
5
import java.util.HashMap;
6
import java.util.HashSet;
7
import java.util.Iterator;
8
import java.util.List;
9
import java.util.Map;
10
import java.util.Set;
11

  
12
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
13
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
3 14
import org.gvsig.sldsupport.SLDSupportManager;
15
import org.gvsig.sldsupport.exception.SLDReadException;
16
import org.gvsig.sldsupport.exception.SLDWriteException;
17
import org.gvsig.sldsupport.io.SLDLegendReader;
18
import org.gvsig.sldsupport.io.SLDLegendWriter;
19
import org.gvsig.sldsupport.io.SLDSymbolReader;
20
import org.gvsig.sldsupport.io.SLDSymbolWriter;
21
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
22
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
23
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
24
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamReader;
25
import org.gvsig.xmlpull.lib.api.stream.IXmlStreamWriter;
4 26

  
5 27
public class DefaultSLDSupportManager implements SLDSupportManager {
6 28
	
29
	private Map<Class<? extends ISymbol>, Set<SLDSymbolReader>> symToReaders =
30
	new HashMap<Class<? extends ISymbol>, Set<SLDSymbolReader>>();
31

  
32
	private Map<Class<? extends ILegend>, Set<SLDLegendReader>> legToReaders =
33
	new HashMap<Class<? extends ILegend>, Set<SLDLegendReader>>();
34
	// ================
35
	private Map<Class<? extends ISymbol>, Set<SLDSymbolWriter>> symToWriters =
36
	new HashMap<Class<? extends ISymbol>, Set<SLDSymbolWriter>>();
37

  
38
	private Map<Class<? extends ILegend>, Set<SLDLegendWriter>> legToWriters =
39
	new HashMap<Class<? extends ILegend>, Set<SLDLegendWriter>>();
40
	
7 41
	public DefaultSLDSupportManager() {
8 42
		
9 43
	}
10 44

  
45
	/*
46
	public IMarkerSymbol readMarkerSymbol(IXmlStreamReader reader)
47
			throws SLDReadException {
48
		// TODO Auto-generated method stub
49
		return null;
50
	}
51

  
52
	public ILineSymbol readLineSymbol(IXmlStreamReader reader)
53
			throws SLDReadException {
54
		// TODO Auto-generated method stub
55
		return null;
56
	}
57

  
58
	public IFillSymbol readFillSymbol(IXmlStreamReader reader)
59
			throws SLDReadException {
60
		// TODO Auto-generated method stub
61
		return null;
62
	}
63
	*/
64
	
65
	public ISymbol readSymbol(IXmlStreamReader reader, String version)
66
			throws SLDReadException {
67
		
68
		throw new SLDReadException(new Exception("Not implemented."));
69
	}
70

  
71

  
72
	public ILegend readLegend(IXmlStreamReader reader, String version)
73
			throws SLDReadException {
74

  
75
		throw new SLDReadException(new Exception("Not implemented."));
76
	}
77

  
78
	public void writeLegend(ILegend leg, IXmlStreamWriter writer, String version)
79
			throws SLDWriteException {
80
		
81
		if (leg == null) {
82
			throw new SLDWriteException(new Exception("Legend is NULL"));
83
		}
84
		
85
		Set<SLDLegendWriter> set = legToWriters.get(leg.getClass());
86
		
87
		if (set == null) {
88
			throw new SLDWriteException(new Exception(
89
					"Unsupported legend: '" + leg.getClass().getName() + "'"));
90
		}
91

  
92
		Iterator<SLDLegendWriter> iter = set.iterator();
93
		List<String> vv = null;
94
		SLDLegendWriter item = null;
95
		while (iter.hasNext()) {
96
			item = iter.next();
97
			vv = item.getSupportedVersions();
98
			if (vv.contains(version)) {
99
				item.write(leg, writer, version);
100
				return;
101
			}
102
		}
103
		throw new SLDWriteException(new Exception(
104
				"Legend is supported: '" + leg.getClass().getName()
105
						+ "' but not in version '" + version + "'"));
106
	}
107
	
108
	public void writeSymbol(ISymbol sym, IXmlStreamWriter writer, String version)
109
			throws SLDWriteException {
110
		
111
		if (sym == null) {
112
			throw new SLDWriteException(new Exception("Symbol is NULL"));
113
		}
114
		
115
		Set<SLDSymbolWriter> set = symToWriters.get(sym.getClass());
116
		
117
		if (set == null) {
118
			throw new SLDWriteException(new Exception(
119
					"Unsupported symbol: '" + sym.getClass().getName() + "'"));
120
		}
121

  
122
		Iterator<SLDSymbolWriter> iter = set.iterator();
123
		List<String> vv = null;
124
		SLDSymbolWriter item = null;
125
		while (iter.hasNext()) {
126
			item = iter.next();
127
			vv = item.getSupportedVersions();
128
			if (vv.contains(version)) {
129
				item.write(sym, writer, version);
130
				return;
131
			}
132
		}
133
		throw new SLDWriteException(new Exception(
134
				"Symbol is supported: '" + sym.getClass().getName()
135
						+ "' but not in version '" + version + "'"));
136
		
137
	}
138

  
139
	// =========================================
140
	// =========================================
141

  
142
	public void registerSymbolReader(SLDSymbolReader reader) {
143
		
144
		Iterator<Class<? extends ISymbol>> iter =
145
				reader.getSupportedSymbols().iterator();
146
		
147
		Class<? extends ISymbol> clazz = null;
148
		Set<SLDSymbolReader> set = null;
149
		while (iter.hasNext()) {
150
			clazz = iter.next();
151
			set = this.symToReaders.get(clazz);
152
			if (set == null) {
153
				set = new HashSet<SLDSymbolReader>();
154
				set.add(reader);
155
				this.symToReaders.put(clazz, set);
156
			} else {
157
				set.add(reader);
158
			}
159
		}
160
	}
161

  
162
	public void registerSymbolWriter(SLDSymbolWriter writer) {
163
		
164
		Iterator<Class<? extends ISymbol>> iter =
165
				writer.getSupportedSymbols().iterator();
166
		
167
		Class<? extends ISymbol> clazz = null;
168
		Set<SLDSymbolWriter> set = null;
169
		while (iter.hasNext()) {
170
			clazz = iter.next();
171
			set = this.symToWriters.get(clazz);
172
			if (set == null) {
173
				set = new HashSet<SLDSymbolWriter>();
174
				set.add(writer);
175
				this.symToWriters.put(clazz, set);
176
			} else {
177
				set.add(writer);
178
			}
179
		}
180
	}
181

  
182
	public void registerLegendReader(SLDLegendReader reader) {
183
		
184
		Iterator<Class<? extends ILegend>> iter =
185
				reader.getSupportedLegends().iterator();
186
		
187
		Class<? extends ILegend> clazz = null;
188
		Set<SLDLegendReader> set = null;
189
		while (iter.hasNext()) {
190
			clazz = iter.next();
191
			set = this.legToReaders.get(clazz);
192
			if (set == null) {
193
				set = new HashSet<SLDLegendReader>();
194
				set.add(reader);
195
				this.legToReaders.put(clazz, set);
196
			} else {
197
				set.add(reader);
198
			}
199
		}
200
	}
201

  
202
	public void registerLegendWriter(SLDLegendWriter writer) {
203

  
204
		Iterator<Class<? extends ILegend>> iter =
205
				writer.getSupportedLegends().iterator();
206
		
207
		Class<? extends ILegend> clazz = null;
208
		Set<SLDLegendWriter> set = null;
209
		while (iter.hasNext()) {
210
			clazz = iter.next();
211
			set = this.legToWriters.get(clazz);
212
			if (set == null) {
213
				set = new HashSet<SLDLegendWriter>();
214
				set.add(writer);
215
				this.legToWriters.put(clazz, set);
216
			} else {
217
				set.add(writer);
218
			}
219
		}
220
	}
221
	
222
	// =============================
223
	
224
//	private SLDSymbolWriter getSymbolWriterForClass(
225
//			Class<? extends ISymbol> clazz, String v) throws Exception {
226
//		
227
//		Set<SLDSymbolWriter> list = symToWriters.get(clazz);
228
//		
229
//		Class<? extends ISymbol> item = null;
230
//		SLDSymbolWriter resp = null;
231
//		while (iter.hasNext()) {
232
//			item = iter.next();
233
//			if (item == clazz) {
234
//				resp = symToWriter.get(item);
235
//				return resp;
236
//			}
237
//		}
238
//		return null;
239
//	}
240
//	
241
//	private SLDLegendWriter getLegendWriterForClass(Class<? extends ILegend> clazz)
242
//	throws Exception {
243
//		
244
//		Iterator<Class<? extends ILegend>> iter = legToWriter.keySet().iterator();
245
//		Class<? extends ILegend> item = null;
246
//		SLDLegendWriter resp = null;
247
//		while (iter.hasNext()) {
248
//			item = iter.next();
249
//			if (item == clazz) {
250
//				resp = legToWriter.get(item);
251
//				return resp;
252
//			}
253
//		}
254
//		return null;
255
//	}
256
	
257
	/*
258
	private Object instantiate(Class clazz) throws Exception {
259
		
260
		Constructor con = null;
261
		con = clazz.getConstructor((Class<?>[]) null);
262
		return con.newInstance((Object[]) null);
263
	}
264
	*/
265

  
266
	
267
	
268

  
11 269
}

Also available in: Unified diff