Revision 4181 org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/tile/FileTileServer.java

View differences:

FileTileServer.java
21 21
 */
22 22
package org.gvsig.raster.impl.provider.tile;
23 23

  
24
import java.net.URI;
25

  
24 26
import org.cresques.cts.IProjection;
27

  
25 28
import org.gvsig.fmap.dal.coverage.RasterLibrary;
26 29
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
27 30
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
......
33 36
import org.gvsig.raster.cache.tile.provider.Downloader;
34 37
import org.gvsig.raster.cache.tile.provider.TileServer;
35 38

  
36
/** 
37
* Data server for the tile cache in a GdalProvider 
39
/**
40
* Data server for the tile cache in a GdalProvider
38 41
* @author Nacho Brodin (nachobrodin@gmail.com)
39 42
*/
40 43
public class FileTileServer implements TileServer {
......
43 46
	protected   RasterDataStore            store          = null;
44 47
	protected   String                     suffix         = "tif";
45 48
	protected   boolean                    externalStruct = false;
46
	
49

  
47 50
	public FileTileServer(RasterDataStore store) {
48 51
		this.store = store;
49 52
	}
50
	
53

  
51 54
	public Downloader getDownloader() {
52
		//The downloader is built the first time or if the structure is assigned from the client. 
55
		//The downloader is built the first time or if the structure is assigned from the client.
53 56
		boolean firstLoad = (downloader == null);
54
		
57

  
55 58
		if(firstLoad || externalStruct) {
56
			downloader = new TileDownloaderForFiles(store, getStruct(), 
57
					getStruct().getTileSizeByLevel(0)[0], 
58
					getStruct().getTileSizeByLevel(0)[1], 
59
			downloader = new TileDownloaderForFiles(store, getStruct(),
60
					getStruct().getTileSizeByLevel(0)[0],
61
					getStruct().getTileSizeByLevel(0)[1],
59 62
					getFileSuffix());
60 63
			externalStruct = false;
61 64
			return downloader;
62 65
		}
63
		
64
		//If the tile size has changed. 
66

  
67
		//If the tile size has changed.
65 68
		if(((TileDownloaderForFiles)downloader).getTileSize()[0] != TileCacheLibrary.DEFAULT_TILEWIDTH ||
66 69
		   ((TileDownloaderForFiles)downloader).getTileSize()[1] != TileCacheLibrary.DEFAULT_TILEHEIGHT) {
67
			downloader = new TileDownloaderForFiles(store, getStruct(), 
68
					TileCacheLibrary.DEFAULT_TILEWIDTH, 
69
					TileCacheLibrary.DEFAULT_TILEHEIGHT, 
70
			downloader = new TileDownloaderForFiles(store, getStruct(),
71
					TileCacheLibrary.DEFAULT_TILEWIDTH,
72
					TileCacheLibrary.DEFAULT_TILEHEIGHT,
70 73
					getFileSuffix());
71 74
		}
72 75
		return downloader;
......
75 78
	public CacheStruct getStruct() {
76 79
		if(struct == null) {
77 80
			TileCacheManager  manager = TileCacheLocator.getManager();
78
			
81

  
79 82
			int coordinates = CacheStruct.FLAT;
80 83
			if(store.getProjection() != null)
81 84
				coordinates = (store.getProjection() != null && store.getProjection().isProjected()) ? CacheStruct.FLAT : CacheStruct.GEOGRAFIC;
82 85
			else {
83 86
				Extent e = store.getExtent();
84
				if(e.getULX() >= -180 && e.getULX() <= 180 && e.getLRX() >= -180 && e.getLRX() <= 180 && 
87
				if(e.getULX() >= -180 && e.getULX() <= 180 && e.getLRX() >= -180 && e.getLRX() <= 180 &&
85 88
					e.getULY() >= -90 && e.getULY() <= 90 && e.getLRY() >= -90 && e.getLRY() <= 90) {
86 89
					coordinates = CacheStruct.GEOGRAFIC;
87 90
				}
88 91
			}
89
			
92

  
90 93
			String epsg = null;
91 94
			IProjection proj = store.getProjection();
92 95
			if(proj != null)
93 96
				epsg = proj.getAbrev();
94
			
95
			String uri = ((RasterDataParameters)store.getParameters()).getURI();
96
			struct = manager.createCacheStructure(coordinates, 
97
					TileCacheLibrary.DEFAULT_LEVELS, 
98
					store.getExtent().toRectangle2D(), 
99
					store.getCellSize(), 
100
					TileCacheLibrary.DEFAULT_TILEWIDTH, 
97

  
98
			URI uri = ((RasterDataParameters)store.getParameters()).getURI();
99
			struct = manager.createCacheStructure(coordinates,
100
					TileCacheLibrary.DEFAULT_LEVELS,
101
					store.getExtent().toRectangle2D(),
102
					store.getCellSize(),
103
					TileCacheLibrary.DEFAULT_TILEWIDTH,
101 104
					TileCacheLibrary.DEFAULT_TILEHEIGHT,
102
					uri,
105
					uri.getPath(),
103 106
					TileCacheLibrary.DEFAULT_STRUCTURE,
104 107
					RasterLibrary.pathTileCache,
105 108
					getFileSuffix(),
......
108 111
		}
109 112
		return struct;
110 113
	}
111
	
114

  
112 115
	public void setStruct(CacheStruct struct) {
113 116
		if(struct != null) {
114 117
			this.struct = struct;
115 118
			if(struct.getTileSizeByLevel(0) != null) {
116
				downloader = new TileDownloaderForFiles(store, 
117
						struct, 
118
						struct.getTileSizeByLevel(0)[0], 
119
						struct.getTileSizeByLevel(0)[1], 
119
				downloader = new TileDownloaderForFiles(store,
120
						struct,
121
						struct.getTileSizeByLevel(0)[0],
122
						struct.getTileSizeByLevel(0)[1],
120 123
						getFileSuffix());
121 124
				externalStruct = true;
122 125
			}
123 126
		}
124 127
	}
125
	
128

  
126 129
	public String getFileSuffix() {
127 130
		return suffix;
128 131
	}

Also available in: Unified diff