Revision 1442

View differences:

org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/test/resources/TemplateRasterProvider.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.fmap.dal.coverage.dataset.io.netcdf;
23

  
24
import java.awt.geom.AffineTransform;
25

  
26
import org.gvsig.fmap.dal.DALFileLocator;
27
import org.gvsig.fmap.dal.DALLocator;
28
import org.gvsig.fmap.dal.DataStore;
29
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
30
import org.gvsig.fmap.dal.coverage.dataset.io.tile.downloader.FileTileServer;
31
import org.gvsig.fmap.dal.coverage.datastruct.BandList;
32
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
33
import org.gvsig.fmap.dal.coverage.exception.BandAccessException;
34
import org.gvsig.fmap.dal.coverage.exception.FileNotOpenException;
35
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException;
36
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
37
import org.gvsig.fmap.dal.coverage.exception.ParsingException;
38
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
39
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
40
import org.gvsig.fmap.dal.coverage.store.RasterFileStoreParameters;
41
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
42
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
43
import org.gvsig.metadata.MetadataLocator;
44
import org.gvsig.raster.cache.tile.provider.TileListener;
45
import org.gvsig.raster.cache.tile.provider.TileServer;
46
import org.gvsig.raster.impl.datastruct.ExtentImpl;
47
import org.gvsig.raster.impl.provider.DefaultRasterProvider;
48
import org.gvsig.raster.impl.provider.RasterProvider;
49
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
50
import org.gvsig.raster.impl.store.AbstractRasterDataStore;
51
import org.gvsig.raster.impl.store.DefaultStoreFactory;
52
import org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation;
53
import org.gvsig.raster.impl.store.properties.DataStoreMetadata;
54
import org.gvsig.raster.impl.store.properties.DataStoreTransparency;
55
import org.gvsig.tools.ToolsLocator;
56
import org.gvsig.tools.extensionpoint.ExtensionPoint;
57
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
58
/**
59
 * Data provider for ...
60
 *
61
 * @author Nacho Brodin (nachobrodin@gmail.com)
62
 */
63
public class NetCDFProvider extends DefaultRasterProvider {
64
	public static String        NAME                     = "Template Store";
65
	public static String        DESCRIPTION              = "Template Raster file";
66
	public final String         METADATA_DEFINITION_NAME = "TemplateStore";
67
	
68
	private static String[]     formatList               = new String[]{"*"};
69

  
70
	private Extent              viewRequest              = null;
71
	private TileServer          tileServer               = null;
72
	private boolean             open                     = false;
73

  
74
	public static void register() {
75
		DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator.getDataManager();
76
		if (dataman != null && !dataman.getStoreProviders().contains(NAME)) {
77
			dataman.registerStoreProvider(NAME,
78
					NetCDFProvider.class, NetCDFDataParameters.class);
79
		}
80
		
81
		if(DALFileLocator.getFilesystemServerExplorerManager() != null)
82
			DALFileLocator.getFilesystemServerExplorerManager().registerProvider(
83
					NAME, DESCRIPTION,
84
					NetCDFFilesystemServerExplorer.class);
85
		
86
		dataman.registerStoreFactory(NAME, DefaultStoreFactory.class);
87
	}
88

  
89
	/**
90
	 * Returns true if the extension is supported and false if doesn't
91
	 * @param ext
92
	 * @return
93
	 */
94
	public static boolean isExtensionSupported(String ext) {
95
		for (int i = 0; i < formatList.length; i++) {
96
			if(formatList[i].compareTo(ext) == 0)
97
				return true;
98
		}
99
		return false;
100
	}
101
	
102
	/**
103
	 * Constructor. Abre el dataset.
104
	 * @param proj Proyecci?n
105
	 * @param fName Nombre del fichero
106
	 * @throws NotSupportedExtensionException
107
	 */
108
	public NetCDFProvider(String params) throws NotSupportedExtensionException {
109
		super(params);
110
		if(params instanceof String) {
111
			NetCDFDataParameters p = new NetCDFDataParameters();
112
			p.setURI((String)params);
113
			super.init(p, null, ToolsLocator.getDynObjectManager()
114
					.createDynObject(
115
							MetadataLocator.getMetadataManager().getDefinition(
116
									DataStore.METADATA_DEFINITION_NAME)));
117
			init(p, null);
118
		}
119
	}
120
	
121
	public NetCDFProvider (NetCDFDataParameters params,
122
			AbstractRasterDataStore storeServices) throws NotSupportedExtensionException {
123
		super(params, storeServices, ToolsLocator.getDynObjectManager()
124
				.createDynObject(
125
						MetadataLocator.getMetadataManager().getDefinition(
126
								DataStore.METADATA_DEFINITION_NAME)));
127
		init(params, storeServices);
128
	}
129

  
130
	/**
131
	 * Crea las referencias al fichero y carga
132
	 * las estructuras con la informaci?n y los metadatos.
133
	 * @param proj Proyecci?n
134
	 * @param param Parametros de carga
135
	 * @throws NotSupportedExtensionException
136
	 */
137
	public void init (AbstractRasterDataParameters params,
138
			DataStoreProviderServices storeServices) throws NotSupportedExtensionException {
139
		//TODO:
140
		
141
		if(((RasterFileStoreParameters)params).getFile().exists()) {
142
			setParam(params);
143
			colorTable = null;
144
			noData = 0;
145
			wktProjection = null;
146
			//CrsWkt crs = new CrsWkt(wktProjection);
147
			//IProjection proj = CRSFactory.getCRS("EPSG:23030");
148
			noDataEnabled = true;
149
			ownTransformation = null;
150
			externalTransformation = (AffineTransform)ownTransformation.clone();
151
			load();
152
		} else
153
			setParam(params);
154
		bandCount = 0;
155
		setDataType(null);
156
		super.init();
157

  
158
		try {
159
			loadFromRmf(getRmfBlocksManager());
160
		} catch (ParsingException e) {
161
			//No lee desde rmf
162
		}
163
	}
164
	
165
	/*
166
	 * (non-Javadoc)
167
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#load()
168
	 */
169
	public RasterProvider load() {
170
		return this;
171
	}
172
	
173
	/*
174
	 * (non-Javadoc)
175
	 * @see org.gvsig.raster.impl.provider.RasterProvider#isOpen()
176
	 */
177
	public boolean isOpen() {
178
		return open;
179
	}
180

  
181
	/*
182
	 * (non-Javadoc)
183
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#close()
184
	 */
185
	public void close() {
186
		//TODO:
187
	}
188

  
189
	/*
190
	 * (non-Javadoc)
191
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#translateFileName(java.lang.String)
192
	 */
193
	public String translateFileName(String fileName) {
194
		return fileName;
195
	}
196

  
197
	/**
198
	 * Asigna el extent de la vista actual. existe un fichero .rmf debemos hacer una transformaci?n
199
	 * de la vista asignada ya que la petici?n viene en coordenadas del fichero .rmf y la vista (v)
200
	 * ha de estar en coordenadas del fichero.
201
	 */
202
	public void setView(Extent e) {
203
		viewRequest = new ExtentImpl(e);
204
	}
205

  
206
	/*
207
	 * (non-Javadoc)
208
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getView()
209
	 */
210
	public Extent getView() {
211
		return viewRequest;
212
	}
213

  
214
	/*
215
	 * (non-Javadoc)
216
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWidth()
217
	 */
218
	public double getWidth() {
219
		//TODO:
220
		return 0;
221
	}
222

  
223
	/*
224
	 * (non-Javadoc)
225
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getHeight()
226
	 */
227
	public double getHeight() {
228
		//TODO:
229
		return 0;
230
	}
231

  
232
	/**
233
	 * Read a line from the file
234
	 * @param line
235
	 * @param band
236
	 * @return
237
	 * @throws InvalidSetViewException
238
	 * @throws FileNotOpenException
239
	 * @throws RasterDriverException
240
	 * @Deprecated This operation is deprecated because is not useful and in the future
241
	 * it will not be maintained. The abstract operation has dissapear
242
	 */
243
	public Object readCompleteLine(int line, int band)throws InvalidSetViewException, FileNotOpenException, RasterDriverException {
244
		if(line > this.getHeight() || band > this.getBandCount())
245
			throw new InvalidSetViewException("Request out of grid");
246

  
247
		//TODO:
248
		return null;
249
	}
250

  
251
	/*
252
	 *  (non-Javadoc)
253
	 * @see org.gvsig.raster.dataset.RasterDataset#readBlock(int, int)
254
	 */
255
	public Object readBlock(int pos, int blockHeight)
256
		throws InvalidSetViewException, FileNotOpenException, RasterDriverException, ProcessInterruptedException {
257
		if(pos < 0)
258
			throw new InvalidSetViewException("Request out of grid");
259

  
260
		if((pos + blockHeight) > getHeight())
261
			blockHeight = Math.abs(((int)getHeight()) - pos);
262
		
263
		//TODO:
264
		return null;
265
	}
266

  
267
	/*
268
	 * (non-Javadoc)
269
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getData(int, int, int)
270
	 */
271
	public Object getData(int x, int y, int band)throws InvalidSetViewException, FileNotOpenException, RasterDriverException {
272
		if(x < 0 || y < 0 || x >= getWidth() || y >= getHeight())
273
			throw new InvalidSetViewException("Request out of grid");
274
		
275
		//TODO
276
		return null;
277
	}
278

  
279
	/*
280
	 * (non-Javadoc)
281
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.raster.cache.tile.provider.TileListener)
282
	 */
283
	public void getWindow(Extent ex, int bufWidth, int bufHeight, 
284
			BandList bandList, TileListener listener) throws ProcessInterruptedException, RasterDriverException {
285
		//TODO
286
	}
287

  
288
	/*
289
	 * (non-Javadoc)
290
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(org.gvsig.fmap.dal.coverage.datastruct.Extent, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer)
291
	 */
292
	public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf) 
293
		throws ProcessInterruptedException, RasterDriverException {
294
		//TODO
295

  
296
		return rasterBuf;
297
	}
298

  
299
	/*
300
	 * (non-Javadoc)
301
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean)
302
	 */
303
	public Buffer getWindow(double ulx, double uly, double w, double h, 
304
			BandList bandList, Buffer rasterBuf, boolean adjustToExtent) throws ProcessInterruptedException, RasterDriverException {
305
		//TODO
306

  
307
		return rasterBuf;
308
	}
309

  
310
	/*
311
	 * (non-Javadoc)
312
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean)
313
	 */
314
	public Buffer getWindow(Extent extent, 
315
			int bufWidth, int bufHeight, BandList bandList, Buffer rasterBuf, boolean adjustToExtent) throws ProcessInterruptedException, RasterDriverException {
316
		//TODO
317
		
318
		return rasterBuf;
319
	}
320

  
321
	/*
322
	 * (non-Javadoc)
323
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(int, int, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer)
324
	 */
325
	public Buffer getWindow(int x, int y, int w, int h, 
326
			BandList bandList, Buffer rasterBuf) throws ProcessInterruptedException, RasterDriverException {
327
		//TODO
328
		
329
		return rasterBuf;
330
	}
331

  
332
	/*
333
	 * (non-Javadoc)
334
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(int, int, int, int, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer)
335
	 */
336
	public Buffer getWindow(int x, int y, int w, int h, 
337
			int bufWidth, int bufHeight, BandList bandList, Buffer rasterBuf) throws ProcessInterruptedException, RasterDriverException {
338
		//TODO
339
		
340
		return rasterBuf;
341
	}
342

  
343
	/*
344
	 * (non-Javadoc)
345
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getBlockSize()
346
	 */
347
	public int getBlockSize(){
348
		//TODO
349
		
350
		return 0;
351
	}
352

  
353
	/*
354
	 * (non-Javadoc)
355
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getMetadata()
356
	 */
357
	public DataStoreMetadata getMetadata() {
358
		//TODO
359
		
360
		return null;
361
	}
362

  
363
	/*
364
	 * (non-Javadoc)
365
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getColorInterpretation()
366
	 */
367
	public DataStoreColorInterpretation getColorInterpretation(){
368
		//TODO
369
		
370
		return null;
371
	}
372

  
373
	/*
374
	 * (non-Javadoc)
375
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#setColorInterpretation(org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation)
376
	 */
377
	public void setColorInterpretation(DataStoreColorInterpretation colorInterpretation){
378
		//TODO
379
	}
380

  
381
	/*
382
	 * (non-Javadoc)
383
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getTransparency()
384
	 */
385
	public DataStoreTransparency getTransparency() {
386
		//TODO
387
		
388
		return null;
389
	}
390

  
391
	/*
392
	 * (non-Javadoc)
393
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#isGeoreferenced()
394
	 */
395
	public boolean isGeoreferenced() {
396
		//TODO
397
		
398
		return false;
399
	}
400

  
401
	/**
402
	 * Informa de si el driver ha supersampleado en el ?ltimo dibujado. Es el driver el que colocar?
403
	 * el valor de esta variable cada vez que dibuja.
404
	 * @return true si se ha supersampleado y false si no se ha hecho.
405
	 */
406
	public boolean isSupersampling() {
407
		//TODO
408
		
409
		return false;
410
	}
411

  
412
	/*
413
	 * (non-Javadoc)
414
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#setAffineTransform(java.awt.geom.AffineTransform)
415
	 */
416
	public void setAffineTransform(AffineTransform t){
417
		super.setAffineTransform(t);
418
	}
419

  
420
	/*
421
	 * (non-Javadoc)
422
	 * @see org.gvsig.raster.impl.provider.RasterProvider#getOverviewCount(int)
423
	 */
424
	public int getOverviewCount(int band) throws BandAccessException, RasterDriverException {
425
		if(band >= getBandCount())
426
			throw new BandAccessException("Wrong band");
427
		//TODO
428
		
429
		return 0;
430
	}
431

  
432
	/*
433
	 * (non-Javadoc)
434
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getOverviewWidth(int, int)
435
	 */
436
	public int getOverviewWidth(int band, int overview) throws BandAccessException, RasterDriverException {
437
		if (band >= getBandCount())
438
			throw new BandAccessException("Wrong band");
439
		//TODO
440
		
441
		return 0;
442
	}
443

  
444
	/*
445
	 * (non-Javadoc)
446
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getOverviewHeight(int, int)
447
	 */
448
	public int getOverviewHeight(int band, int overview) throws BandAccessException, RasterDriverException {
449
		if (band >= getBandCount())
450
			throw new BandAccessException("Wrong band");
451
		//TODO
452
		
453
		return 0;
454
	}
455

  
456
	/*
457
	 * (non-Javadoc)
458
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#overviewsSupport()
459
	 */
460
	public boolean overviewsSupport() {
461
		return true;
462
	}
463

  
464
	/*
465
	 * (non-Javadoc)
466
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#isReproyectable()
467
	 */
468
	public boolean isReproyectable() {
469
		return true;
470
	}
471

  
472
	/*
473
	 * (non-Javadoc)
474
	 * @see org.gvsig.fmap.dal.spi.DataStoreProvider#getName()
475
	 */
476
	public String getName() {
477
		return NAME;
478
	}
479
	
480
	/*
481
	 * (non-Javadoc)
482
	 * @see org.gvsig.raster.impl.provider.RasterProvider#setStatus(org.gvsig.raster.impl.provider.RasterProvider)
483
	 */
484
	public void setStatus(RasterProvider provider) {
485
		if(provider instanceof NetCDFProvider) {
486
			//Not implemented yet
487
		}
488
	}
489
	
490
	/*
491
	 * (non-Javadoc)
492
	 * @see org.gvsig.raster.impl.provider.RasterProvider#getTileServer()
493
	 */
494
	public TileServer getTileServer() {
495
		if(tileServer == null)
496
			tileServer = new FileTileServer(this);
497
		return tileServer;
498
	}
499
}
0 500

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
0 9

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	org.gvsig.tools packages.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.tools">
23
		<priority value="DEBUG" />
24
	</category>
25
	<category name="org.gvsig.raster">
26
		<priority value="DEBUG" />
27
	</category>
28

  
29
	<!-- 
30
	By default, show only logging messages of INFO level or higher, 
31
	through the previously configured CONSOLE appender. 
32
	-->
33
	<root>
34
		<priority value="INFO" />
35
		<appender-ref ref="CONSOLE" />
36
	</root>
37
</log4j:configuration>
0 38

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/DefaultWMTSIOLibrary.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.wmts.io;
23

  
24
import org.gvsig.tools.library.AbstractLibrary;
25
import org.gvsig.tools.library.LibraryException;
26
/**
27
 *
28
 * @author Nacho Brodin (nachobrodin@gmail.com)
29
 */
30
public class DefaultWMTSIOLibrary extends AbstractLibrary {	
31

  
32
	public DefaultWMTSIOLibrary() {
33
		/*super(DefaultWMTSIOLibrary.class,Library.TYPE.IMPL);
34
		require(ToolsLibrary.class);
35
		require(DALLibrary.class);
36
		require(DALFileLibrary.class);*/
37
	}
38
	
39
	@Override
40
	protected void doInitialize() throws LibraryException {
41
		//RasterLibrary.wakeUp();
42
	}
43

  
44
	@Override
45
	protected void doPostInitialize() throws LibraryException {
46
		WMTSServerExplorerParameters.registerDynClass();
47
		WMTSDataParametersImpl.registerDynClass();
48
		WMTSProvider.register();
49
		WMTSDataParametersImpl.registerPersistence();
50
	}
51
}
0 52

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/downloader/WMTSCacheStruct.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.wmts.io.downloader;
23

  
24
import java.awt.geom.Point2D;
25
import java.awt.geom.Rectangle2D;
26
import java.util.ArrayList;
27

  
28
import org.gvsig.fmap.dal.coverage.RasterLocator;
29
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
30
import org.gvsig.fmap.dal.coverage.util.MathUtils;
31
import org.gvsig.raster.cache.tile.Tile;
32
import org.gvsig.raster.cache.tile.TileCacheLocator;
33
import org.gvsig.raster.cache.tile.exception.TileBuildException;
34
import org.gvsig.raster.cache.tile.provider.CacheStruct;
35
import org.gvsig.raster.wmts.io.WMTSDataParameters;
36
import org.gvsig.raster.wmts.io.WMTSProvider;
37
import org.gvsig.remoteclient.wmts.WMTSStatus;
38
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrix;
39
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrixLimits;
40
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrixSet;
41
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrixSetLink;
42

  
43
/**
44
 * Implementation for a structure of a cache
45
 * @author Nacho Brodin (nachobrodin@gmail.com)
46
 */
47
public class WMTSCacheStruct implements CacheStruct {
48
    private String                        layerName           = null;
49
	private String                        serverURL           = null;
50
	private WMTSTileMatrixSet             tileMatrixSet       = null;
51
	private ArrayList<?>                  tileMatrixSetLimits = null;
52
	private double[]                      pixelSize           = null;
53
    private WMTSProvider                  provider            = null;
54
    
55
    public WMTSCacheStruct(WMTSProvider provider, WMTSTileMatrixSetLink tileMatrixSetLink) {
56
    	this.provider = provider;
57
    	this.tileMatrixSet = tileMatrixSetLink.getTileMatrixSet();
58
		this.tileMatrixSetLimits = tileMatrixSetLink.getTileMatrixLimits();
59
		pixelSize = provider.getPixelSizeByLevel();
60
		serverURL = provider.getURIOfFirstProvider();
61
		layerName = ((WMTSDataParameters)provider.getDataParameters()).getLayer().getTitle();
62
    }
63

  
64
    /*
65
     * (non-Javadoc)
66
     * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getNumberOfLevels()
67
     */
68
	public int getNumberOfLevels() {
69
		return tileMatrixSet.getTileMatrix().size();
70
	}
71

  
72
	/*
73
	 * (non-Javadoc)
74
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getLayerName()
75
	 */
76
	public String getLayerName() {
77
		return layerName;
78
	}
79

  
80
	/*
81
	 * (non-Javadoc)
82
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getServerURL()
83
	 */
84
	public String getServerURL() {
85
		return serverURL;
86
	}
87

  
88
	/*
89
	 * (non-Javadoc)
90
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileSizeByLevel(int)
91
	 */
92
	public int[] getTileSizeByLevel(int level) {
93
		return new int[] {
94
			((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getTileWidth(),
95
			((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getTileHeight()
96
		};
97
	}
98

  
99
	/*
100
	 * (non-Javadoc)
101
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getLayerWidthOfTileMatrixByLevel(int)
102
	 */
103
	public int getLayerWidthOfTileMatrixByLevel(int level) {
104
		if(tileMatrixSetLimits != null && tileMatrixSetLimits.size() > level) {
105
			WMTSTileMatrixLimits l = (WMTSTileMatrixLimits)tileMatrixSetLimits.get(level);
106
			return l.getMaxTileRow() - l.getMinTileRow();
107
		} else {
108
			WMTSTileMatrix tm = (WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level);
109
			return (int)tm.getMatrixWidth();
110
		}
111
	}
112
	
113
	/*
114
	 * (non-Javadoc)
115
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getLayerHeightOfTileMatrixByLevel(int)
116
	 */
117
	public int getLayerHeightOfTileMatrixByLevel(int level) {
118
		if(tileMatrixSetLimits != null && tileMatrixSetLimits.size() > level) {
119
			WMTSTileMatrixLimits l = (WMTSTileMatrixLimits)tileMatrixSetLimits.get(level);
120
			return l.getMaxTileCol() - l.getMinTileCol();
121
		} else {
122
			WMTSTileMatrix tm = (WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level);
123
			return (int)tm.getMatrixHeight();
124
		}
125
	}
126

  
127
	/*
128
	 * (non-Javadoc)
129
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getLayerInitXTilePositionByLevel(int)
130
	 */
131
	public int getLayerInitXTilePositionByLevel(int level) {
132
		if(tileMatrixSetLimits != null && tileMatrixSetLimits.size() > level) {
133
			WMTSTileMatrixLimits l = (WMTSTileMatrixLimits)tileMatrixSetLimits.get(level);
134
			return l.getMinTileCol();
135
		} else
136
			return 0;
137
	}
138

  
139
	/*
140
	 * (non-Javadoc)
141
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getLayerInitYTilePositionByLevel(int)
142
	 */
143
	public int getLayerInitYTilePositionByLevel(int level) {
144
		if(tileMatrixSetLimits != null && tileMatrixSetLimits.size() > level) {
145
			WMTSTileMatrixLimits l = (WMTSTileMatrixLimits)tileMatrixSetLimits.get(level);
146
			return l.getMinTileRow();
147
		} else 
148
			return 0;
149
	}
150

  
151
	/*
152
	 * (non-Javadoc)
153
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getWorldHeightOfTileMatrixByLevel(int)
154
	 */
155
	public long getWorldHeightOfTileMatrixByLevel(int level) {
156
		return ((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getMatrixWidth();
157
	}
158

  
159
	/*
160
	 * (non-Javadoc)
161
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getWorldWidthOfTileMatrixByLevel(int)
162
	 */
163
	public long getWorldWidthOfTileMatrixByLevel(int level) {
164
		return ((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getMatrixHeight();
165
	}
166
	
167
	/*
168
	 * (non-Javadoc)
169
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getPixelSizeByLevel(int)
170
	 */
171
	public double getPixelSizeByLevel(int level) {
172
		if(level < pixelSize.length)
173
			return pixelSize[level];
174
		else
175
			return pixelSize[pixelSize.length - 1];
176
	}
177
	
178
	/*
179
	 * (non-Javadoc)
180
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileExtent(org.gvsig.raster.cache.tile.Tile)
181
	 */
182
	public Point2D[] getTileExtent(Tile tile) {
183
		return getTileExtent(tile.getLevel(), tile.getCol(), tile.getRow());
184
	}
185
	
186
	/*
187
	 * (non-Javadoc)
188
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileExtent(int, int, int)
189
	 */
190
	public Point2D[] getTileExtent(int level, int col, int row) {
191
		double[] ul = tileMatrixSet.getBoundingBox().getUpperCorner();
192
		long tileWidth = ((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getTileWidth();
193
		long tileHeight = ((WMTSTileMatrix)tileMatrixSet.getTileMatrix().get(level)).getTileHeight();
194
		double mtsWidthTile = tileWidth * pixelSize[level];
195
		double mtsHeightTile = tileHeight * pixelSize[level];
196
		double ulx = ul[0] + (col * mtsWidthTile);
197
		double uly = ulx + mtsWidthTile;
198
		double lrx = ul[1] - (row * mtsHeightTile);
199
		double lry = lrx - mtsHeightTile;
200
		return new Point2D[]{new Point2D.Double(ulx, uly), new Point2D.Double(lrx, lry)};
201
	}
202
	
203
	/*
204
	 * (non-Javadoc)
205
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileStructure(int, int, int, java.awt.geom.Point2D, java.awt.geom.Point2D)
206
	 */
207
	public Tile getTileStructure(int level, int tileCol, int tileRow, Point2D ul, Point2D lr) throws TileBuildException  {
208
		int[] size = getTileSizeByLevel(level);
209
		Tile tile = TileCacheLocator.getManager().createTile(level, tileRow, tileCol);
210
		tile.setUl(ul);
211
		tile.setLr(lr);
212
		tile.setWidthPx(size[0]);
213
		tile.setHeightPx(size[1]);
214
		
215
		Rectangle2D r = new Rectangle2D.Double(Math.min(ul.getX(), lr.getX()), 
216
				Math.min(ul.getY(), lr.getY()), 
217
				Math.abs(ul.getX() - lr.getX()), 
218
				Math.abs(ul.getY() - lr.getY()));
219
		int bufWidth = (int)(r.getWidth() / getPixelSizeByLevel(level));
220
		int bufHeight = (int)(r.getHeight() / getPixelSizeByLevel(level));
221
		try {
222
			WMTSStatus status = provider.buildWMTSStatus(r, bufWidth, bufHeight);
223
			tile.setDownloaderParams("WMTSStatus", status);
224
		} catch (RasterDriverException e) {
225
			throw new TileBuildException(e); 
226
		}
227
			
228
		return tile;
229
	}
230
	
231
	/*
232
	 * (non-Javadoc)
233
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileList(java.awt.geom.Point2D, java.awt.geom.Point2D)
234
	 */
235
	@SuppressWarnings("unchecked")
236
	public ArrayList<Tile> getTileList(Point2D ul, Point2D lr, double mtsPixelRequest) throws TileBuildException {
237
		Rectangle2D r = new Rectangle2D.Double(Math.min(ul.getX(), lr.getX()), 
238
				Math.min(ul.getY(), lr.getY()), 
239
				Math.abs(ul.getX() - lr.getX()), 
240
				Math.abs(ul.getY() - lr.getY()));
241
		int bufWidth = (int)(r.getWidth() / mtsPixelRequest);
242
		int bufHeight = (int)(r.getHeight() / mtsPixelRequest);
243
		try {
244
			WMTSStatus status = provider.buildWMTSStatus(r, bufWidth, bufHeight);
245
			
246
			//Conversi?n a tiles de la librer?a
247
			ArrayList<org.gvsig.remoteclient.wmts.struct.WMTSTileMatrix.Tile> tiles = status.getTileList();
248
			ArrayList<Tile> tileList = new ArrayList<Tile>();
249
			for (int i = 0; i < tiles.size(); i++) {
250
				org.gvsig.remoteclient.wmts.struct.WMTSTileMatrix.Tile tOrigin = (org.gvsig.remoteclient.wmts.struct.WMTSTileMatrix.Tile) tiles.get(i);
251
				Tile t = TileCacheLocator.getManager().createTile(status.getLevel(), tOrigin.col, tOrigin.row);
252
				t.setUl(new Point2D.Double(tOrigin.ulx, tOrigin.uly));
253
				t.setLr(new Point2D.Double(tOrigin.lrx, tOrigin.lry));
254
				t.setWidthPx(tOrigin.wPx);
255
				t.setHeightPx(tOrigin.hPx);
256
				t.setDownloaderParams("WMTSStatus", provider.buildWMTSStatus(r, bufWidth, bufHeight));
257
				tileList.add(t);
258
			}
259
			return tileList;
260
		} catch (RasterDriverException e) {
261
			throw new TileBuildException(e); 
262
		}
263
	}
264

  
265
	/*
266
	 * (non-Javadoc)
267
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getTileSizeInRealCoordsByLevel(int)
268
	 */
269
	public double[] getTileSizeInRealCoordsByLevel(int level) {
270
		return new double[] {
271
				getPixelSizeByLevel(level) * getTileSizeByLevel(level)[0],
272
				getPixelSizeByLevel(level) *  getTileSizeByLevel(level)[1]
273
			};
274
	}
275
	
276
	/*
277
	 * (non-Javadoc)
278
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getFileSuffix()
279
	 */
280
	public String getFileSuffix() {
281
		return provider.getFileSuffix();
282
	}
283

  
284
	/*
285
	 * (non-Javadoc)
286
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#compare(org.gvsig.raster.cache.tile.provider.CacheStruct)
287
	 */
288
	public boolean compare(CacheStruct struct) {
289
		MathUtils mu = RasterLocator.getManager().getMathUtils();
290
		//Compara: n?mero de niveles, tama?o de tile, 
291
		//anchoXalto de la matriz, tama?o de pixel por nivel, 
292
		//coordenadas de al menos un tile de la matriz
293
		if(struct.getNumberOfLevels() == getNumberOfLevels()) {
294
			for (int i = 0; i < getNumberOfLevels(); i++) {
295
				if(	struct.getTileSizeByLevel(i)[0] == getTileSizeByLevel(i)[0] && 
296
					struct.getTileSizeByLevel(i)[1] == getTileSizeByLevel(i)[1] &&
297
					struct.getWorldHeightOfTileMatrixByLevel(i) == getWorldHeightOfTileMatrixByLevel(i) &&
298
					struct.getWorldWidthOfTileMatrixByLevel(i) == getWorldWidthOfTileMatrixByLevel(i) &&
299
					mu.clipDecimals(struct.getPixelSizeByLevel(i), 2) == mu.clipDecimals(getPixelSizeByLevel(i), 2) &&
300
					compareExtents(struct.getTileExtent(i, 0, 0), getTileExtent(i, 0, 0))) {
301
					return true;
302
				}
303
			}
304
		}
305
		return false;
306
	}
307
	
308
	private boolean compareExtents(Point2D[] p, Point2D[] p1) {
309
		return (p[0].getX() == p1[0].getX() && p[0].getY() == p1[0].getY() &&
310
				p[1].getX() == p1[1].getX() && p[1].getY() == p1[1].getY());
311
	}
312

  
313
	/*
314
	 * (non-Javadoc)
315
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getEPSG()
316
	 */
317
	public String getEPSG() {
318
		/*IProjection proj = provider.getProjection();
319
		if(proj != null)
320
			return proj.getAbrev();
321
		return null;*/
322
		return provider.getSRSCode();
323
	}
324

  
325
	/*
326
	 * (non-Javadoc)
327
	 * @see org.gvsig.raster.cache.tile.provider.CacheStruct#getFileSize()
328
	 */
329
	public String getFileSize() {
330
		return "0";
331
	}
332

  
333
	public ArrayList<Tile> getTileList(int x, int y, int w, int h) {
334
		return null;
335
	}
336

  
337
	public ArrayList<Tile> getTileList(Rectangle2D r) {
338
		return null;
339
	}
340
}
0 341

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/downloader/TileDownloaderForWMTS.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.wmts.io.downloader;
23

  
24
import java.io.File;
25
import java.io.IOException;
26
import java.net.ConnectException;
27
import java.net.URL;
28

  
29
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
30
import org.gvsig.raster.cache.tile.Tile;
31
import org.gvsig.raster.cache.tile.exception.TileGettingException;
32
import org.gvsig.raster.impl.provider.tile.BaseTileDownloader;
33
import org.gvsig.raster.wmts.io.WMTSConnector;
34
import org.gvsig.raster.wmts.io.WMTSDataParameters;
35
import org.gvsig.raster.wmts.io.WMTSProvider;
36
import org.gvsig.remoteclient.exceptions.ServerErrorException;
37
import org.gvsig.remoteclient.wmts.WMTSStatus;
38
import org.gvsig.remoteclient.wmts.exception.WMTSException;
39

  
40
/** 
41
 * Tile getter 
42
 * @author Nacho Brodin (nachobrodin@gmail.com)
43
 */
44
public class TileDownloaderForWMTS extends BaseTileDownloader {
45
	private WMTSConnector             connector  = null;
46
	
47
	public TileDownloaderForWMTS(WMTSProvider prov, 
48
			int tilePxWidth,
49
			int tilePxHeight) {
50
		super(prov, tilePxWidth, tilePxHeight);
51
	}
52
	
53
	/**
54
	 * Gets the connector from the URL
55
	 * @return
56
	 * @throws RemoteServiceException
57
	 */
58
	public WMTSConnector getConnector() throws WMTSException {
59
		if(connector == null) {
60
			WMTSDataParameters p = (WMTSDataParameters)prov.getDataParameters();
61
			URL url = null;
62
			try {
63
				url = new URL(p.getURI());
64
			} catch (Exception e) {
65
				throw new WMTSException("Malformed URL",e);
66
			}
67
			try {
68
				connector = new WMTSConnector(url);
69
			} catch (ConnectException e) {
70
				throw new WMTSException("Connect exception",e);
71
			} catch (IOException e) {
72
				throw new WMTSException("Connect exception",e);
73
			}
74
		}
75
		return connector;
76
	}
77
	
78
	/*
79
	 * (non-Javadoc)
80
	 * @see org.gvsig.raster.cache.tile.provider.Downloader#getTile(org.gvsig.raster.cache.tile.Tile)
81
	 */
82
	public synchronized Tile downloadTile(Tile tile) throws TileGettingException {
83
		try {
84
			WMTSStatus status = (WMTSStatus)tile.getDownloaderParams("WMTSStatus");
85
			status.setTileRow(tile.getRow());
86
			status.setTileCol(tile.getCol());
87
			File f = getConnector().getTile(status, tile.getCancelled(), tile.getFile());
88
			tile.setFile(f);
89
			//Si borramos el rmf no se puede leer la etiqueta Alpha. En caso de que se modifique jgdal para
90
			//poder guardar esta etiqueta deberiamos borrar el rmf para ahorrar ficheros
91
			//File rmf = new File(tile.getFile().getAbsolutePath() + ".rmf");
92
			//if(rmf.exists())
93
				//rmf.delete();
94
		} catch (WMTSException e) {
95
			throw new TileGettingException(e);
96
		} catch (ServerErrorException e) {
97
			throw new TileGettingException(e);
98
		}
99
		readTileFromDisk(tile);
100
		return tile;
101
	}
102
	
103
}
0 104

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/downloader/WMTSTileServer.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.wmts.io.downloader;
23

  
24
import org.gvsig.raster.cache.tile.provider.CacheStruct;
25
import org.gvsig.raster.cache.tile.provider.Downloader;
26
import org.gvsig.raster.cache.tile.provider.TileServer;
27
import org.gvsig.raster.wmts.io.WMTSProvider;
28
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrix;
29
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrixSetLink;
30

  
31
/** 
32
* Data server for the tile cache in a WMTSProvider 
33
* @author Nacho Brodin (nachobrodin@gmail.com)
34
*/
35
public class WMTSTileServer implements TileServer {
36
	private CacheStruct                struct               = null;
37
	private Downloader                 downloader           = null;
38
	private WMTSProvider               provider             = null;
39
	private String                     suffix               = ".tif";
40
	private WMTSTileMatrixSetLink      tileMatrixSetLink    = null;
41
	
42
	public WMTSTileServer(WMTSProvider prov, 
43
			WMTSTileMatrixSetLink tileMatrixSetLink) {
44
		this.provider = prov;
45
		this.tileMatrixSetLink = tileMatrixSetLink;
46
	}
47
	
48
	/*
49
	 * (non-Javadoc)
50
	 * @see org.gvsig.raster.cache.tile.provider.TileServer#getDownloader()
51
	 */
52
	public Downloader getDownloader() {
53
		//if(downloader == null) {
54
			int tileWidth = ((WMTSTileMatrix)tileMatrixSetLink.getTileMatrixSet().getTileMatrix().get(0)).getTileWidth();
55
			int tileHeight = ((WMTSTileMatrix)tileMatrixSetLink.getTileMatrixSet().getTileMatrix().get(0)).getTileHeight();
56
			downloader = new TileDownloaderForWMTS(provider, tileWidth, tileHeight);
57
		//}
58
		return downloader;
59
	}
60

  
61
	public CacheStruct getStruct() {
62
		if(struct == null) {
63
			struct = new WMTSCacheStruct(provider, tileMatrixSetLink);
64
		}
65
		return struct;
66
	}
67
	
68
	/*
69
	 * (non-Javadoc)
70
	 * @see org.gvsig.raster.cache.tile.provider.TileServer#setStruct(org.gvsig.raster.cache.tile.provider.CacheStruct)
71
	 */
72
	public void setStruct(CacheStruct struct) {
73
		//La structura de cache es proporcionada por el servidor
74
	}
75
	
76
	/*
77
	 * (non-Javadoc)
78
	 * @see org.gvsig.raster.cache.tile.provider.TileServer#getFileSuffix()
79
	 */
80
	public String getFileSuffix() {
81
		return suffix;
82
	}
83
	
84
	/*
85
	 * (non-Javadoc)
86
	 * @see org.gvsig.raster.cache.tile.provider.TileServer#setFileExtension(java.lang.String)
87
	 */
88
	public void setFileSuffix(String extension) {
89
		this.suffix = extension;
90
	}
91
}
0 92

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/package.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<title>org.gvsig.raster.wmts.io package documentation</title>
7
</head>
8
<body>
9

  
10
	<p>WMTS provider</p>
11

  
12
</body>
13
</html>
0 14

  
org.gvsig.raster.wmts/tags/buildNumber_28/org.gvsig.raster.wmts/org.gvsig.raster.wmts.io/src/main/java/org/gvsig/raster/wmts/io/WMTSServerExplorer.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
22

  
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2009 IVER T.I   {{Task}}
26
*/
27

  
28
package org.gvsig.raster.wmts.io;
29

  
30
import java.io.IOException;
31
import java.net.URL;
32
import java.util.ArrayList;
33
import java.util.List;
34

  
35
import org.gvsig.compat.net.ICancellable;
36
import org.gvsig.fmap.dal.DALLocator;
37
import org.gvsig.fmap.dal.DataManager;
38
import org.gvsig.fmap.dal.DataServerExplorer;
39
import org.gvsig.fmap.dal.DataServerExplorerParameters;
40
import org.gvsig.fmap.dal.DataStoreParameters;
41
import org.gvsig.fmap.dal.NewDataStoreParameters;
42
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
43
import org.gvsig.fmap.dal.exception.DataException;
44
import org.gvsig.fmap.dal.exception.InitializeException;
45
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
46
import org.gvsig.fmap.dal.spi.DataServerExplorerProvider;
47
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
48
import org.gvsig.remoteclient.wmts.exception.WMTSException;
49
import org.gvsig.remoteclient.wmts.struct.WMTSLayer;
50
import org.gvsig.remoteclient.wmts.struct.WMTSServiceIdentification;
51
import org.gvsig.remoteclient.wmts.struct.WMTSServiceProvider;
52
import org.gvsig.remoteclient.wmts.struct.WMTSThemes;
53
import org.gvsig.remoteclient.wmts.struct.WMTSTileMatrixSet;
54

  
55
/**
56
 * Explorer for a WMTS server
57
 * @author Nacho Brodin (nachobrodin@gmail.com)
58
 */
59
public class WMTSServerExplorer implements DataServerExplorer, DataServerExplorerProvider {
60
	public static final String           NAME                     = "WMTSRemoteServerExplorer";
61
	private WMTSConnector                connector                = null;
62
	private WMTSServerExplorerParameters parameters               = null;
63
	
64
	public WMTSServerExplorer(
65
			WMTSServerExplorerParameters parameters,
66
			DataServerExplorerProviderServices services)
67
			throws InitializeException {
68
		this.parameters = parameters;
69
	}
70
	
71
	/*
72
	 * (non-Javadoc)
73
	 * @see org.gvsig.fmap.dal.coverage.store.remote.RemoteServerExplorerProvider#getDataStoreProviderName()
74
	 */
75
	public String getDataStoreProviderName() {
76
		return WMTSProvider.NAME;
77
	}
78
	
79
	/*
80
	 * (non-Javadoc)
81
	 * @see org.gvsig.fmap.dal.coverage.store.remote.RemoteServerExplorerProvider#getDescription()
82
	 */
83
	public String getDescription() {
84
		return WMTSProvider.DESCRIPTION;
85
	}
86
	
87
	/*
88
	 * (non-Javadoc)
89
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getStoreParameters()
90
	 */
91
	public DataStoreParameters getStoreParameters() {
92
		DataManager manager = DALLocator.getDataManager();
93
		WMTSDataParameters wmtsParams = null;
94
		try {
95
			wmtsParams = (WMTSDataParameters) manager.createStoreParameters(this.getDataStoreProviderName());
96
			wmtsParams.setURI(parameters.getHost());
97

  
98
			if(WMTSProvider.TILED) {
99
				TileDataParameters tileParams = (TileDataParameters) manager.createStoreParameters("Tile Store");
100
				tileParams.setDataParameters(wmtsParams);
101
				return tileParams;
102
			} 
103
		} catch (InitializeException e) {
104
			e.printStackTrace();
105
		} catch (ProviderNotRegisteredException e) {
106
			e.printStackTrace();
107
		}
108
		return wmtsParams;
109
	}
110

  
111
	public boolean add(String provider, NewDataStoreParameters parameters,
112
			boolean overwrite) throws DataException {
113
		return false;
114
	}
115

  
116
	public boolean canAdd() {
117
		return false;
118
	}
119

  
120
	public boolean canAdd(String storeName) throws DataException {
121
		return false;
122
	}
123

  
124
	public NewDataStoreParameters getAddParameters(String storeName)
125
			throws DataException {
126
		return null;
127
	}
128

  
129
	@SuppressWarnings("unchecked")
130
	public List getDataStoreProviderNames() {
131
		return null;
132
	}
133

  
134
	/*
135
	 * (non-Javadoc)
136
	 * @see org.gvsig.fmap.dal.DataServerExplorer#getParameters()
137
	 */
138
	public DataServerExplorerParameters getParameters() {
139
		return parameters;
140
	}
141

  
142
	@SuppressWarnings("unchecked")
143
	public List list() throws DataException {
144
		return null;
145
	}
146

  
147
	@SuppressWarnings("unchecked")
148
	public List list(int mode) throws DataException {
149
		return null;
150
	}
151

  
152
	public void remove(DataStoreParameters parameters) throws DataException {
153
		
154
	}
155

  
156
	public void dispose() {
157
		
158
	}
159

  
160
	public String getProviderName() {
161
		return null;
162
	}
163

  
164
	//**********************************************
165
	//Connector
166
	//**********************************************
167
	
168
	/*
169
	 * (non-Javadoc)
170
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#connect(org.gvsig.compat.net.ICancellable)
171
	 */
172
	public void connect(ICancellable cancellable) throws WMTSException {
173
		URL url = null;
174
		boolean override = false;
175
		
176
		try {
177
			url = new URL(parameters.getHost());
178
		} catch (Exception e) {
179
			throw new WMTSException("Malformed URL",e);
180
		}
181
        try {
182
        	connector = new WMTSConnector(url);
183
        	connector.setForceLongitudeFirstAxisOrder(parameters.isLongitudeFirst());
184
        	if (!connector.connect(override, cancellable))
185
        		throw new WMTSException("Error connecting");
186
        } catch (IOException e) {
187
			throw new WMTSException(e.getMessage(), e);
188
		}
189
	}
190

  
191
	/*
192
	 * (non-Javadoc)
193
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#isConnected()
194
	 */
195
	public boolean isConnected() {
196
		if(connector != null)
197
			return true;
198
		return false;
199
	}
200

  
201
	/*
202
	 * (non-Javadoc)
203
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getThemes()
204
	 */
205
	public WMTSThemes getThemes() {
206
		return connector.getThemes();
207
	}
208
    
209
    /*
210
     * (non-Javadoc)
211
     * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getLayer(java.lang.String)
212
     */
213
    public WMTSLayer getLayer(String layerName) {
214
    	return connector.getLayer(layerName);
215
    }
216
    
217
    /*
218
     * (non-Javadoc)
219
     * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getTileMatrixSet()
220
     */
221
	public ArrayList<WMTSTileMatrixSet> getTileMatrixSet() {
222
    	return connector.getTileMatrixSet();
223
    }
224
	
225
	/*
226
	 * (non-Javadoc)
227
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getServiceIdentification()
228
	 */
229
	public WMTSServiceIdentification getServiceIdentification() {
230
		return connector.getServiceIdentification();
231
	}
232
	
233
	/*
234
	 * (non-Javadoc)
235
	 * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getServiceProvider()
236
	 */
237
	public WMTSServiceProvider getServiceProvider() {
238
		return connector.getServiceProvider();
239
	}
240

  
241
    /*
242
     * (non-Javadoc)
243
     * @see org.gvsig.fmap.dal.coverage.explorer.WMTSServerExplorer#getHost()
244
     */
245
	public String getHost() {
246
		return parameters.getHost();
247
	}
248

  
249
	/*
250
	 * (non-Javadoc)
251
	 * @see org.gvsig.fmap.dal.spi.DataServerExplorerProvider#getServerExplorerProviderServices()
252
	 */
253
	public DataServerExplorerProviderServices getServerExplorerProviderServices() {
254
		return null;
255
	}
256
}
0 257

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff