Revision 8842

View differences:

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