Revision 8842
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.app/org.gvsig.wmts.app.mainplugin/src/main/java/org/gvsig/wmts/app/mainplugin/WMTSAddLayerPanel.java | ||
---|---|---|
121 | 121 |
FLayer layer = createSingleLayer(node.getTitle(), node.getParameters(), refreshLocalCache); |
122 | 122 |
getMapCtrl().addLayer(layer); |
123 | 123 |
mapContext.invalidate(); |
124 |
DisposeUtils.dispose(layer); |
|
124 | 125 |
} |
125 | 126 |
}); |
126 | 127 |
task.start(); |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.swing/org.gvsig.wmts.swing.impl/src/main/java/org/gvsig/wmts/swing/impl/DefaultWMTSParametersPanelController.java | ||
---|---|---|
327 | 327 |
|
328 | 328 |
@Override |
329 | 329 |
public void dispose() { |
330 |
DisposeUtils.disposeQuietly(explorer);
|
|
330 |
DisposeUtils.disposeQuietly(serverExplorer);
|
|
331 | 331 |
} |
332 | 332 |
|
333 | 333 |
private void doConnect() { |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.provider/src/main/java/org/gvsig/wmts/provider/WMTSRasterProvider.java | ||
---|---|---|
34 | 34 |
import java.util.Iterator; |
35 | 35 |
import java.util.List; |
36 | 36 |
import java.util.Map; |
37 |
import java.util.Set; |
|
37 | 38 |
import java.util.SortedSet; |
38 | 39 |
import java.util.TreeSet; |
39 | 40 |
import java.util.Map.Entry; |
... | ... | |
91 | 92 |
import org.gvsig.raster.wmts.ogc.struct.WMTSTileMatrix; |
92 | 93 |
import org.gvsig.raster.wmts.ogc.struct.WMTSTileMatrixSet; |
93 | 94 |
import org.gvsig.tools.dataTypes.DataTypes; |
95 |
import org.gvsig.tools.dispose.Disposable; |
|
94 | 96 |
import org.gvsig.tools.dispose.DisposeUtils; |
95 | 97 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException; |
98 |
import org.gvsig.tools.exception.BaseException; |
|
96 | 99 |
import org.gvsig.tools.locator.LocatorException; |
97 | 100 |
|
98 | 101 |
/** |
... | ... | |
136 | 139 |
private void initParams() throws InitializeException { |
137 | 140 |
WMTSRasterProviderParameters parameters = (WMTSRasterProviderParameters) getParameters(); |
138 | 141 |
pageManagersPerZoomLevel = new HashMap<Integer, List<PageManager>>(); |
139 |
// this.projection = getProjection(); |
|
140 |
// wmtsClient = getWMTSClient(); |
|
141 |
// wmtsStatus = getWMTSStatus(); |
|
142 |
|
|
142 | 143 |
envelope = getEnvelope(); |
143 | 144 |
maxZoomLevel = DEFAULT_MAX_ZOOM_LEVEL; |
144 | 145 |
|
145 |
//PRUEBA |
|
146 |
// tileStruct = getTileStruct(); |
|
147 |
|
|
148 | 146 |
} |
149 | 147 |
|
150 | 148 |
protected WMTSStatus getWMTSStatus() throws InitializeException { |
... | ... | |
241 | 239 |
if(rasterQuery.getClip()!=null){ |
242 | 240 |
Buffer completeBuffer = buffer; |
243 | 241 |
envelope = rasterQuery.getClip(); |
244 |
buffer = bufferManager.createClippedBuffer(completeBuffer, envelope);
|
|
242 |
buffer = completeBuffer.clip(envelope);
|
|
245 | 243 |
DisposeUtils.dispose(completeBuffer); |
246 | 244 |
} |
247 | 245 |
|
... | ... | |
374 | 372 |
Envelope envelopeWGS84 = geomManager.createEnvelope(rectangle2d.getMinX(), rectangle2d.getMinY(), rectangle2d.getMaxX(), rectangle2d.getMaxY(), Geometry.SUBTYPES.GEOM2D); |
375 | 373 |
ICoordTrans ct = CRSFactory.getCRS("EPSG:4326").getCT(getProjection()); |
376 | 374 |
this.envelope = envelopeWGS84.convert(ct); |
377 |
// Rectangle2D extent = wmtsLayer.getWGS84BBoxTransformed(getProjection().getAbrev()); |
|
378 |
// |
|
379 |
// this.envelope = |
|
380 |
// geomManager.createEnvelope(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY(), |
|
381 |
// SUBTYPES.GEOM2D); |
|
382 | 375 |
} catch (CreateEnvelopeException e) { |
383 | 376 |
throw new InitializeException("Can't create envelope.", e); |
384 | 377 |
} |
... | ... | |
684 | 677 |
pageManagersInZoom = new ArrayList<PageManager>(); |
685 | 678 |
for (int i = 0; i < getBands(); i++) { |
686 | 679 |
//FIXME el getTileStruct no sirve para este bandTileManager |
687 |
pageManagersInZoom.add(new WMTSBandTileManager(getTileStruct(), this.getWMTSImage(), zoomLevel, i, this));
|
|
680 |
pageManagersInZoom.add(new WMTSBandTileManager(getTileStruct(), this.getWMTSImage(), zoomLevel, i)); |
|
688 | 681 |
} |
689 | 682 |
this.pageManagersPerZoomLevel.put(zoomLevel, pageManagersInZoom); |
690 | 683 |
} |
... | ... | |
799 | 792 |
WMTSLayer wmtsLayer = getWMTSClient().getLayer(getLayerName()); |
800 | 793 |
WMTSStyle wmtsStyle = null; |
801 | 794 |
List<WMTSStyle> wmtsStyles = wmtsLayer.getStyle(); |
802 |
for (Iterator iterator = wmtsStyles.iterator(); iterator.hasNext();) { |
|
795 |
for (Iterator<WMTSStyle> iterator = wmtsStyles.iterator(); iterator.hasNext();) {
|
|
803 | 796 |
wmtsStyle = (WMTSStyle) iterator.next(); |
804 | 797 |
if (wmtsStyle.getIdentifier().equalsIgnoreCase(wmtsStatus.getStyle())) { |
805 | 798 |
break; |
... | ... | |
834 | 827 |
return maxZoomLevel; |
835 | 828 |
} |
836 | 829 |
|
837 |
// /** |
|
838 |
// * @param maxZoomLevel the maxZoomLevel to set |
|
839 |
// */ |
|
840 |
// public void setMaxZoomLevel(int maxZoomLevel) { |
|
841 |
// this.maxZoomLevel = maxZoomLevel; |
|
842 |
// } |
|
830 |
@Override |
|
831 |
protected void doDispose() throws BaseException { |
|
832 |
super.doDispose(); |
|
833 |
DisposeUtils.dispose((Disposable) this.tileStruct); |
|
834 |
tileStruct = null; |
|
835 |
DisposeUtils.dispose(this.image); |
|
836 |
this.image = null; |
|
843 | 837 |
|
838 |
Set<Entry<Integer, List<PageManager>>> entries = this.pageManagersPerZoomLevel.entrySet(); |
|
839 |
for (Iterator<Entry<Integer, List<PageManager>>> iterator = entries.iterator(); iterator.hasNext();) { |
|
840 |
Entry<Integer, List<PageManager>> entry = (Entry<Integer, List<PageManager>>) iterator.next(); |
|
841 |
List<PageManager> pageManagers = entry.getValue(); |
|
842 |
for (Iterator iterator2 = pageManagers.iterator(); iterator2.hasNext();) { |
|
843 |
PageManager pageManager = (PageManager) iterator2.next(); |
|
844 |
DisposeUtils.dispose(pageManager); |
|
845 |
iterator2.remove(); |
|
846 |
} |
|
847 |
iterator.remove(); |
|
848 |
} |
|
849 |
pageManagersPerZoomLevel = null; |
|
850 |
|
|
851 |
|
|
852 |
} |
|
853 |
|
|
844 | 854 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.provider/src/main/java/org/gvsig/wmts/provider/WMTSBandTileManager.java | ||
---|---|---|
29 | 29 |
import org.slf4j.LoggerFactory; |
30 | 30 |
|
31 | 31 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
32 |
import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider; |
|
33 | 32 |
import org.gvsig.fmap.geom.exception.CreateEnvelopeException; |
34 | 33 |
import org.gvsig.raster.lib.buffer.api.Band; |
35 | 34 |
import org.gvsig.raster.lib.buffer.api.BandInfo; |
36 | 35 |
import org.gvsig.raster.lib.buffer.api.BandTileManager; |
37 | 36 |
import org.gvsig.raster.lib.buffer.api.TileStruct; |
37 |
import org.gvsig.tools.dispose.Disposable; |
|
38 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
39 |
import org.gvsig.tools.dispose.impl.AbstractDisposable; |
|
40 |
import org.gvsig.tools.exception.BaseException; |
|
38 | 41 |
|
39 | 42 |
|
40 | 43 |
/** |
41 | 44 |
* @author fdiaz |
42 | 45 |
* |
43 | 46 |
*/ |
44 |
public class WMTSBandTileManager implements BandTileManager { |
|
47 |
public class WMTSBandTileManager extends AbstractDisposable implements BandTileManager {
|
|
45 | 48 |
|
46 | 49 |
private static final Logger logger = LoggerFactory.getLogger(WMTSBandTileManager.class); |
47 | 50 |
|
... | ... | |
56 | 59 |
* @param wmtsImage |
57 | 60 |
* @param zoomLevel |
58 | 61 |
* @param bandNumber |
59 |
* @param provider |
|
60 | 62 |
*/ |
61 |
public WMTSBandTileManager(TileStruct tileStruct, WMTSImage wmtsImage, int zoomLevel, int bandNumber, RasterStoreProvider provider) {
|
|
63 |
public WMTSBandTileManager(TileStruct tileStruct, WMTSImage wmtsImage, int zoomLevel, int bandNumber) { |
|
62 | 64 |
this.bandNumber = bandNumber; |
63 | 65 |
this.tileStruct = tileStruct; |
66 |
DisposeUtils.bind((Disposable) this.tileStruct); |
|
64 | 67 |
this.zoomLevel = zoomLevel; |
65 | 68 |
this.wmtsImage = wmtsImage; |
69 |
DisposeUtils.bind(this.wmtsImage); |
|
66 | 70 |
} |
67 | 71 |
|
68 | 72 |
@Override |
... | ... | |
88 | 92 |
throw new UnsupportedOperationException(); |
89 | 93 |
} |
90 | 94 |
|
91 |
/* (non-Javadoc) |
|
92 |
* @see org.gvsig.raster.lib.buffer.api.BandTileManager#getBandInfo() |
|
93 |
*/ |
|
94 | 95 |
@Override |
95 | 96 |
public BandInfo getBandInfo() { |
96 | 97 |
// TODO Auto-generated method stub |
97 | 98 |
return null; |
98 | 99 |
} |
99 | 100 |
|
100 |
/* (non-Javadoc) |
|
101 |
* @see org.gvsig.raster.lib.buffer.api.BandTileManager#getRowsPerTile() |
|
102 |
*/ |
|
103 | 101 |
@Override |
104 | 102 |
public int getRowsPerTile() { |
105 | 103 |
return tileStruct.getRowsPerTile(); |
106 | 104 |
} |
107 | 105 |
|
108 |
/* (non-Javadoc) |
|
109 |
* @see org.gvsig.raster.lib.buffer.api.BandTileManager#getColumnsPerTile() |
|
110 |
*/ |
|
111 | 106 |
@Override |
112 | 107 |
public int getColumnsPerTile() { |
113 | 108 |
return tileStruct.getColumnsPerTile(); |
114 | 109 |
} |
115 | 110 |
|
116 |
/* (non-Javadoc) |
|
117 |
* @see org.gvsig.raster.lib.buffer.api.BandTileManager#getTileStruct() |
|
118 |
*/ |
|
119 | 111 |
@Override |
120 | 112 |
public TileStruct getTileStruct() { |
121 | 113 |
return this.tileStruct; |
122 | 114 |
} |
123 | 115 |
|
116 |
@Override |
|
117 |
public void doDispose() throws BaseException { |
|
118 |
DisposeUtils.dispose(wmtsImage); |
|
119 |
wmtsImage = null; |
|
120 |
DisposeUtils.dispose((Disposable) this.tileStruct); |
|
121 |
this.tileStruct=null; |
|
122 |
} |
|
123 |
|
|
124 | 124 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.provider/src/main/java/org/gvsig/wmts/provider/WMTSImage.java | ||
---|---|---|
34 | 34 |
import org.gvsig.raster.lib.buffer.api.exceptions.BandException; |
35 | 35 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
36 | 36 |
import org.gvsig.raster.wmts.ogc.WMTSStatus; |
37 |
import org.gvsig.raster.wmts.ogc.struct.WMTSServiceProvider; |
|
38 | 37 |
import org.gvsig.raster.wmts.ogc.struct.WMTSTileMatrix; |
39 | 38 |
import org.gvsig.tools.ToolsLocator; |
40 | 39 |
import org.gvsig.tools.dispose.Disposable; |
... | ... | |
71 | 70 |
*/ |
72 | 71 |
public WMTSImage(TileStruct tileStruct, Map<Integer, WMTSTileMatrix> tileMatrixPerZoomLevel, WMTSRasterProvider provider) { |
73 | 72 |
this.tileStruct = tileStruct; |
73 |
DisposeUtils.bind((Disposable) this.tileStruct); |
|
74 | 74 |
this.provider = provider; |
75 | 75 |
this.projection = provider.getProjection(); |
76 | 76 |
this.tile = null; |
... | ... | |
100 | 100 |
if (this.tile != null && this.tile.getKey().equalsIgnoreCase(keyTile)) { |
101 | 101 |
|
102 | 102 |
// Devolver la banda del buffer del tile |
103 |
logger.info("Devolviendo la banda " + bandNumber + " del buffer del tile " + tile.getKey()); |
|
103 |
// logger.info("Devolviendo la banda " + bandNumber + " del buffer del tile " + tile.getKey());
|
|
104 | 104 |
buffer = tile.getBuffer(); |
105 | 105 |
Band band = buffer.getBand(bandNumber); |
106 |
ToolsLocator.getDisposableManager().bind(band); |
|
107 | 106 |
return band; |
108 | 107 |
} else { |
108 |
if(this.tile != null) { |
|
109 |
DisposeUtils.dispose(this.tile); |
|
110 |
} |
|
109 | 111 |
this.tile = null; |
110 | 112 |
// Cargar un tile nuevo |
111 | 113 |
Band band = null; |
... | ... | |
117 | 119 |
buffer = tile.getBuffer(); |
118 | 120 |
|
119 | 121 |
band = buffer.getBand(bandNumber); |
120 |
ToolsLocator.getDisposableManager().bind(band); |
|
121 | 122 |
return band; |
122 | 123 |
} catch (DataException | BufferException | CreateGeometryException | BandException e) { |
123 | 124 |
logger.warn("Can't fetch tile: zoomLevel = " + zoomLevel + ", tileRow = " + structRow |
... | ... | |
163 | 164 |
} |
164 | 165 |
} |
165 | 166 |
|
166 |
Buffer affectedBuffer = |
|
167 |
bufferManager.createBuffer((lastAffectedRow-firstAffectedRow+1) * tileMatrix.getTileHeight(), (lastAffectedColumn-firstAffectedColumn+1) |
|
168 |
* tileMatrix.getTileWidth(), bandDataTypes, null, this.projection, affectedEnvelope); |
|
169 | 167 |
|
168 |
Buffer affectedBuffer = null; |
|
170 | 169 |
try { |
171 | 170 |
|
171 |
affectedBuffer = |
|
172 |
bufferManager.createBuffer((lastAffectedRow - firstAffectedRow + 1) * tileMatrix.getTileHeight(), |
|
173 |
(lastAffectedColumn - firstAffectedColumn + 1) * tileMatrix.getTileWidth(), bandDataTypes, null, |
|
174 |
this.projection, affectedEnvelope); |
|
172 | 175 |
int targetTileRow = 0; |
173 | 176 |
int sourceRow = 0; |
174 |
for (int row=firstAffectedRow; row<=lastAffectedRow; row++) {
|
|
177 |
for (int row = firstAffectedRow; row <= lastAffectedRow; row++) {
|
|
175 | 178 |
int targetTileColumn = 0; |
176 | 179 |
int sourceColumn = 0; |
177 | 180 |
sourceRow = targetTileRow * tileMatrix.getTileHeight(); |
178 |
for (int column=firstAffectedColumn; column<=lastAffectedColumn; column++) {
|
|
181 |
for (int column = firstAffectedColumn; column <= lastAffectedColumn; column++) {
|
|
179 | 182 |
sourceColumn = targetTileColumn * tileMatrix.getTileWidth(); |
180 | 183 |
|
181 | 184 |
String keyTile = composeKeyForRecentTiles(tileMatrixIdentifier, zoomLevel, row, column); |
... | ... | |
204 | 207 |
} |
205 | 208 |
DownloadedTile downloadedTile = new DownloadedTile(sourceTileBuffer, keyTile); |
206 | 209 |
recentAccededWMTSTiles.put(keyTile, downloadedTile); |
210 |
DisposeUtils.dispose(sourceTileBuffer); |
|
207 | 211 |
|
208 | 212 |
} else { |
209 | 213 |
sourceTileBuffer = tile.getBuffer(); |
... | ... | |
220 | 224 |
} |
221 | 225 |
targetTileRow++; |
222 | 226 |
} |
227 |
Buffer clipped = null; |
|
228 |
try { |
|
229 |
clipped = affectedBuffer.clip(envelope); |
|
223 | 230 |
|
224 |
DownloadedTile downloadedTile = new DownloadedTile(affectedBuffer.clip(envelope), key); |
|
225 |
return downloadedTile; |
|
231 |
DownloadedTile downloadedTile = new DownloadedTile(clipped, key); |
|
232 |
return downloadedTile; |
|
233 |
} finally { |
|
234 |
DisposeUtils.disposeQuietly(clipped); |
|
235 |
} |
|
226 | 236 |
} finally { |
227 |
DisposeUtils.dispose(affectedBuffer); |
|
237 |
DisposeUtils.disposeQuietly(affectedBuffer);
|
|
228 | 238 |
} |
229 | 239 |
|
230 | 240 |
} |
... | ... | |
338 | 348 |
String key; |
339 | 349 |
|
340 | 350 |
public DownloadedTile(org.gvsig.raster.lib.buffer.api.Buffer buffer, String key) { |
341 |
logger |
|
342 |
.info("CONSTRUCTOR hashCode = " + this.hashCode() + " className = " + this.getClass().getSimpleName()); |
|
351 |
// logger
|
|
352 |
// .info("CONSTRUCTOR hashCode = " + this.hashCode() + " className = " + this.getClass().getSimpleName());
|
|
343 | 353 |
ToolsLocator.getDisposableManager().bind(buffer); |
344 | 354 |
this.buffer = buffer; |
345 | 355 |
this.key = key; |
... | ... | |
362 | 372 |
@Override |
363 | 373 |
protected void finalize() throws Throwable { |
364 | 374 |
super.finalize(); |
365 |
logger.info("CLEANED key " + this.key + " hashCode = " + this.hashCode()); |
|
375 |
// logger.info("CLEANED key " + this.key + " hashCode = " + this.hashCode());
|
|
366 | 376 |
} |
367 | 377 |
|
368 | 378 |
@Override |
... | ... | |
379 | 389 |
} |
380 | 390 |
DisposeUtils.dispose((Disposable) tileStruct); |
381 | 391 |
tileStruct = null; |
392 |
for (Iterator<DownloadedTile> iterator = recentAccededWMTSTiles.values().iterator(); iterator.hasNext();) { |
|
393 |
DownloadedTile tile = (DownloadedTile) iterator.next(); |
|
394 |
DisposeUtils.dispose(tile); |
|
395 |
iterator.remove(); |
|
396 |
} |
|
397 |
recentAccededWMTSTiles = null; |
|
382 | 398 |
} |
383 | 399 |
|
384 | 400 |
protected void removeOlderTile() { |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.wmts/org.gvsig.wmts.provider/src/main/java/org/gvsig/wmts/provider/WMTSRasterLibrary.java | ||
---|---|---|
47 | 47 |
public void doRegistration() { |
48 | 48 |
registerAsServiceOf(DALLibrary.class); |
49 | 49 |
require(MapContextLibrary.class); |
50 |
|
|
51 |
// require(DALFileLibrary.class); |
|
52 |
//FIXME: |
|
53 |
// require(DefaultWMSIOLibrary.class); |
|
54 | 50 |
} |
55 | 51 |
|
56 | 52 |
@Override |
Also available in: Unified diff