Revision 6520 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.tilecache/org.gvsig.raster.tilecache.provider/src/main/java/org/gvsig/raster/tilecache/provider/TileCacheStoreProvider.java
TileCacheStoreProvider.java | ||
---|---|---|
68 | 68 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
69 | 69 |
import org.gvsig.tools.ToolsLocator; |
70 | 70 |
import org.gvsig.tools.dispose.DisposeUtils; |
71 |
import org.gvsig.tools.dispose.impl.AbstractDisposable; |
|
71 | 72 |
import org.gvsig.tools.dynobject.DynObject; |
72 | 73 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException; |
73 | 74 |
import org.gvsig.tools.exception.BaseException; |
... | ... | |
93 | 94 |
private ResourceProvider resource; |
94 | 95 |
private final SimpleTaskStatus taskStatus; |
95 | 96 |
|
96 |
private TileCacheStructImage tileCacheStructImage = null;
|
|
97 |
private TileCacheStructImage fileTileCacheStructImage = null;
|
|
97 | 98 |
|
98 | 99 |
private Envelope envelope = null; |
99 | 100 |
private IProjection projection = null; |
... | ... | |
184 | 185 |
bandDataTypes = new int[bandsNumber]; |
185 | 186 |
bandNoData = new NoData[bandsNumber]; |
186 | 187 |
|
187 |
int zoomLevel = tileCacheStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize());
|
|
188 |
int zoomLevel = fileTileCacheStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize());
|
|
188 | 189 |
List<PageManager> pageManagersInZoom; |
189 | 190 |
int[] tileStructDataTypes; |
190 | 191 |
try { |
191 | 192 |
pageManagersInZoom = getPageManagersInZoom(zoomLevel); |
192 |
tileStructDataTypes = tileCacheStructImage.getDataTypes();
|
|
193 |
tileStructDataTypes = fileTileCacheStructImage.getDataTypes();
|
|
193 | 194 |
} catch (ValidateDataParametersException | CreateEnvelopeException | DataException | CloneNotSupportedException e) { |
194 | 195 |
throw new BufferException(e); |
195 | 196 |
} |
196 | 197 |
try { |
197 |
for(int i = 0; i<tileCacheStructImage.getBandNumber(); i++){
|
|
198 |
for(int i = 0; i<fileTileCacheStructImage.getBandNumber(); i++){
|
|
198 | 199 |
bandDataTypes[i] = tileStructDataTypes[i]; |
199 | 200 |
bandNoData[i] = null; |
200 | 201 |
pageManagers.add(pageManagersInZoom.get(i)); |
... | ... | |
203 | 204 |
throw new BufferException(e); |
204 | 205 |
} |
205 | 206 |
|
206 |
envelope = tileCacheStructImage.getEnvelope();
|
|
207 |
envelope = fileTileCacheStructImage.getEnvelope();
|
|
207 | 208 |
Buffer buffer = |
208 |
bufferManager.createBuffer(tileCacheStructImage.getRows(zoomLevel), tileCacheStructImage.getColumns(zoomLevel),
|
|
209 |
bufferManager.createBuffer(fileTileCacheStructImage.getRows(zoomLevel), fileTileCacheStructImage.getColumns(zoomLevel),
|
|
209 | 210 |
bandDataTypes, bandNoData, projection, envelope, pageManagers); |
210 | 211 |
|
211 | 212 |
return buffer; |
... | ... | |
215 | 216 |
List<PageManager> pageManagersInZoom = this.pageManagersPerZoomLevel.get(zoomLevel); |
216 | 217 |
if (pageManagersInZoom == null) { |
217 | 218 |
pageManagersInZoom = new ArrayList<PageManager>(); |
218 |
for (int i = 0; i < tileCacheStructImage.getBandNumber(); i++) {
|
|
219 |
pageManagersInZoom.add(new TileCacheBandPageManager(tileCacheStructImage, zoomLevel, i));
|
|
219 |
for (int i = 0; i < fileTileCacheStructImage.getBandNumber(); i++) {
|
|
220 |
pageManagersInZoom.add(new TileCacheBandPageManager(fileTileCacheStructImage, zoomLevel, i));
|
|
220 | 221 |
} |
221 | 222 |
this.pageManagersPerZoomLevel.put(zoomLevel, pageManagersInZoom); |
222 | 223 |
} |
... | ... | |
235 | 236 |
} |
236 | 237 |
|
237 | 238 |
public void open() throws OpenException { |
238 |
if (this.tileCacheStructImage != null) {
|
|
239 |
if (this.fileTileCacheStructImage != null) {
|
|
239 | 240 |
return; |
240 | 241 |
} |
241 | 242 |
} |
... | ... | |
255 | 256 |
|
256 | 257 |
@Override |
257 | 258 |
public void close() throws CloseException { |
258 |
this.tileCacheStructImage = null;
|
|
259 |
this.fileTileCacheStructImage = null;
|
|
259 | 260 |
} |
260 | 261 |
|
261 | 262 |
@Override |
... | ... | |
312 | 313 |
protected void doDispose() throws BaseException { |
313 | 314 |
super.doDispose(); |
314 | 315 |
resource.removeConsumer(this); |
315 |
if(this.tileCacheStructImage!=null){
|
|
316 |
DisposeUtils.dispose(tileCacheStructImage);
|
|
317 |
this.tileCacheStructImage = null;
|
|
316 |
if(this.fileTileCacheStructImage!=null){
|
|
317 |
DisposeUtils.dispose((AbstractDisposable)fileTileCacheStructImage);
|
|
318 |
this.fileTileCacheStructImage = null;
|
|
318 | 319 |
} |
319 | 320 |
} |
320 | 321 |
|
... | ... | |
322 | 323 |
* @return TileStructImage |
323 | 324 |
*/ |
324 | 325 |
public TileStructImage getTileStructImage() { |
325 |
return tileCacheStructImage;
|
|
326 |
return fileTileCacheStructImage;
|
|
326 | 327 |
} |
327 | 328 |
|
328 | 329 |
@Override |
... | ... | |
331 | 332 |
this.innerProvider = provider; |
332 | 333 |
pageManagersPerZoomLevel = new HashMap<Integer, List<PageManager>>(); |
333 | 334 |
|
334 |
this.tileCacheStructImage =
|
|
335 |
new TileCacheStructImage(((FileResource)resource).getFile(), crs, provider, query); |
|
335 |
this.fileTileCacheStructImage =
|
|
336 |
new FileTileCacheStructImage(((FileResource)resource).getFile(), crs, provider, query);
|
|
336 | 337 |
} |
337 | 338 |
|
338 | 339 |
@Override |
... | ... | |
342 | 343 |
|
343 | 344 |
@Override |
344 | 345 |
public void forgetCache() { |
345 |
tileCacheStructImage.forgetCache();
|
|
346 |
fileTileCacheStructImage.forgetCache();
|
|
346 | 347 |
|
347 | 348 |
} |
348 | 349 |
} |
Also available in: Unified diff