Revision 6494
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/TileStructImage.java | ||
---|---|---|
69 | 69 |
import org.gvsig.raster.lib.buffer.api.BufferLocator; |
70 | 70 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
71 | 71 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
72 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
72 | 73 |
import org.gvsig.tools.dynobject.DynObject; |
73 | 74 |
import org.gvsig.tools.dynobject.exception.DynMethodException; |
74 | 75 |
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension; |
... | ... | |
351 | 352 |
(int) (clippedBuffer.getPixelSizeY() * clippedBuffer.getRows() / pixelSize), |
352 | 353 |
(int) (clippedBuffer.getPixelSizeX() * clippedBuffer.getColumns() / pixelSize), |
353 | 354 |
Buffer.INTERPOLATION_NearestNeighbour, null); |
354 |
clippedBuffer = null; |
|
355 | 355 |
|
356 |
DisposeUtils.dispose(buffer); |
|
357 |
DisposeUtils.dispose(clippedBuffer); |
|
358 |
|
|
356 | 359 |
String providerName = "GTiff"; |
357 | 360 |
String extension = "tif"; |
358 | 361 |
|
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Band.java | ||
---|---|---|
31 | 31 |
* @author fdiaz |
32 | 32 |
* |
33 | 33 |
*/ |
34 |
public interface Band extends Cloneable, ComplexWeakReferencingObservable { //, Disposable {
|
|
34 |
public interface Band extends Cloneable, ComplexWeakReferencingObservable, Disposable { |
|
35 | 35 |
|
36 | 36 |
/** |
37 | 37 |
* Gets the number of columns of the band |
... | ... | |
299 | 299 |
|
300 | 300 |
public double[] createRowBuffer(); |
301 | 301 |
|
302 |
|
|
303 | 302 |
} |
304 | 303 |
|
305 | 304 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Buffer.java | ||
---|---|---|
45 | 45 |
* @author fdiaz |
46 | 46 |
* |
47 | 47 |
*/ |
48 |
public interface Buffer extends StatisticsCapable, Iterable<Band>, Observer { //, Disposable {
|
|
48 |
public interface Buffer extends StatisticsCapable, Iterable<Band>, Observer , Disposable { |
|
49 | 49 |
|
50 | 50 |
public final static int INTERPOLATION_Undefined = 0; |
51 | 51 |
public final static int INTERPOLATION_NearestNeighbour = 1; |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBuffer.java | ||
---|---|---|
64 | 64 |
private Double pixelSizeX = null; |
65 | 65 |
private Double pixelSizeY = null; |
66 | 66 |
|
67 |
// // to make disposable
|
|
68 |
// private final Object lock = new Object();
|
|
69 |
// private boolean disposed = false;
|
|
67 |
// to make it disposable
|
|
68 |
private final Object lock = new Object(); |
|
69 |
private boolean disposed = false; |
|
70 | 70 |
|
71 |
// public AbstractBuffer() {
|
|
72 |
// if(ToolsLocator.getDisposableManager() != null) {
|
|
73 |
// ToolsLocator.getDisposableManager().bind(this);
|
|
74 |
// } else {
|
|
75 |
// logger.warn("Can't retrieve the disposable manager,");
|
|
76 |
// }
|
|
77 |
// }
|
|
71 |
public AbstractBuffer() { |
|
72 |
if(ToolsLocator.getDisposableManager() != null) { |
|
73 |
ToolsLocator.getDisposableManager().bind(this); |
|
74 |
} else { |
|
75 |
logger.warn("Can't retrieve the disposable manager,"); |
|
76 |
} |
|
77 |
} |
|
78 | 78 |
|
79 | 79 |
@Override |
80 | 80 |
public Statistics getStatistics(SimpleTaskStatus status) { |
... | ... | |
520 | 520 |
return pixelSizeY.doubleValue(); |
521 | 521 |
} |
522 | 522 |
|
523 |
// public final void dispose() { |
|
524 |
// synchronized (lock) { |
|
525 |
// // Check if we have already been disposed, and don't do it again |
|
526 |
// if (!disposed) { |
|
527 |
// if ( ToolsLocator.getDisposableManager().release(this) ) { |
|
528 |
// try { |
|
529 |
// doDispose(); |
|
530 |
// } catch (BaseException ex) { |
|
531 |
// LOG.error("Error performing dispose", ex); |
|
532 |
// } |
|
533 |
// disposed = true; |
|
534 |
// } |
|
535 |
// } |
|
536 |
// } |
|
537 |
// } |
|
538 |
// |
|
539 |
// @Override |
|
540 |
// public void doDispose() { |
|
541 |
// for (Iterator iterator = bands.iterator(); iterator.hasNext();) { |
|
542 |
// Band band = (Band) iterator.next(); |
|
543 |
// band.dispose(); |
|
544 |
// } |
|
545 |
// envelope = null; |
|
546 |
// projection = null; |
|
547 |
// //TODO: ?FilterList Disposable? |
|
548 |
// filters = null; |
|
549 |
// //TODO: ?Statistics Disposable? |
|
550 |
// statistics = null; |
|
551 |
// |
|
552 |
// pixelSizeX = null; |
|
553 |
// pixelSizeY = null; |
|
554 |
// } |
|
523 |
public final void dispose() { |
|
524 |
synchronized (lock) { |
|
525 |
// Check if we have already been disposed, and don't do it again |
|
526 |
if (!disposed) { |
|
527 |
if ( ToolsLocator.getDisposableManager().release(this) ) { |
|
528 |
try { |
|
529 |
doDispose(); |
|
530 |
} catch (BaseException ex) { |
|
531 |
logger.error("Error performing dispose", ex); |
|
532 |
} |
|
533 |
disposed = true; |
|
534 |
} |
|
535 |
} |
|
536 |
} |
|
537 |
} |
|
555 | 538 |
|
539 |
/** |
|
540 |
* Internal implementation for the {@link #dispose()} method. |
|
541 |
* |
|
542 |
* @see #dispose() |
|
543 |
*/ |
|
544 |
public void doDispose() throws BaseException { |
|
545 |
for (Iterator iterator = bands.iterator(); iterator.hasNext();) { |
|
546 |
Band band = (Band) iterator.next(); |
|
547 |
band.dispose(); |
|
548 |
} |
|
549 |
envelope = null; |
|
550 |
projection = null; |
|
551 |
//TODO: ?FilterList Disposable? |
|
552 |
filters = null; |
|
553 |
//TODO: ?Statistics Disposable? |
|
554 |
statistics = null; |
|
555 |
|
|
556 |
pixelSizeX = null; |
|
557 |
pixelSizeY = null; |
|
558 |
} |
|
559 |
|
|
556 | 560 |
@Override |
557 | 561 |
protected void finalize() throws Throwable { |
558 | 562 |
super.finalize(); |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBand.java | ||
---|---|---|
1 | 1 |
package org.gvsig.raster.lib.buffer.impl; |
2 | 2 |
|
3 |
import java.util.Iterator; |
|
4 |
|
|
3 | 5 |
import org.slf4j.Logger; |
4 | 6 |
import org.slf4j.LoggerFactory; |
5 | 7 |
|
... | ... | |
9 | 11 |
import org.gvsig.raster.lib.buffer.api.NoData; |
10 | 12 |
import org.gvsig.raster.lib.buffer.api.exceptions.BandException; |
11 | 13 |
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException; |
14 |
import org.gvsig.tools.ToolsLocator; |
|
15 |
import org.gvsig.tools.exception.BaseException; |
|
12 | 16 |
import org.gvsig.tools.observer.impl.BaseWeakReferencingObservable; |
13 | 17 |
|
14 | 18 |
/** |
... | ... | |
23 | 27 |
int columns; |
24 | 28 |
NoData noData; |
25 | 29 |
|
30 |
// to make it disposable |
|
31 |
private final Object lock = new Object(); |
|
32 |
private boolean disposed = false; |
|
33 |
|
|
34 |
public AbstractBand() { |
|
35 |
if(ToolsLocator.getDisposableManager() != null) { |
|
36 |
ToolsLocator.getDisposableManager().bind(this); |
|
37 |
} else { |
|
38 |
logger.warn("Can't retrieve the disposable manager,"); |
|
39 |
} |
|
40 |
} |
|
41 |
|
|
42 |
|
|
26 | 43 |
@Override |
27 | 44 |
public int getColumns() { |
28 | 45 |
return columns; |
... | ... | |
120 | 137 |
|
121 | 138 |
} |
122 | 139 |
|
140 |
public final void dispose() { |
|
141 |
synchronized (lock) { |
|
142 |
// Check if we have already been disposed, and don't do it again |
|
143 |
if (!disposed) { |
|
144 |
if ( ToolsLocator.getDisposableManager().release(this) ) { |
|
145 |
try { |
|
146 |
doDispose(); |
|
147 |
} catch (BaseException ex) { |
|
148 |
logger.error("Error performing dispose", ex); |
|
149 |
} |
|
150 |
disposed = true; |
|
151 |
} |
|
152 |
} |
|
153 |
} |
|
154 |
} |
|
155 |
|
|
156 |
/** |
|
157 |
* Internal implementation for the {@link #dispose()} method. |
|
158 |
* |
|
159 |
* @see #dispose() |
|
160 |
*/ |
|
161 |
public void doDispose() throws BaseException { |
|
162 |
noData = null; |
|
163 |
} |
|
164 |
|
|
165 |
|
|
123 | 166 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractPaginatedBand.java | ||
---|---|---|
13 | 13 |
import org.gvsig.raster.lib.buffer.api.BufferLocator; |
14 | 14 |
import org.gvsig.raster.lib.buffer.api.NoData; |
15 | 15 |
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException; |
16 |
import org.gvsig.tools.exception.BaseException; |
|
16 | 17 |
|
17 | 18 |
/** |
18 | 19 |
* @author fdiaz |
... | ... | |
149 | 150 |
return rowsPerPage * columns; |
150 | 151 |
} |
151 | 152 |
|
152 |
// @Override |
|
153 |
// public void dispose() { |
|
154 |
// super.dispose(); |
|
155 |
// data = null; |
|
156 |
// pageManager = null; |
|
157 |
// } |
|
153 |
@Override |
|
154 |
public void doDispose() throws BaseException { |
|
155 |
super.doDispose(); |
|
156 |
data = null; |
|
157 |
//FIXME: ?hacer disposables los pageManagers? |
|
158 |
pageManager = null; |
|
159 |
} |
|
158 | 160 |
|
159 | 161 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractTiledBand.java | ||
---|---|---|
9 | 9 |
import org.gvsig.raster.lib.buffer.api.BufferLocator; |
10 | 10 |
import org.gvsig.raster.lib.buffer.api.NoData; |
11 | 11 |
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException; |
12 |
import org.gvsig.tools.exception.BaseException; |
|
12 | 13 |
|
13 | 14 |
|
14 | 15 |
/** |
... | ... | |
175 | 176 |
return allocateRows*allocateColumns; |
176 | 177 |
} |
177 | 178 |
|
178 |
// @Override |
|
179 |
// public void dispose() { |
|
180 |
// super.dispose(); |
|
181 |
// data = null; |
|
182 |
// tileManager = null; |
|
183 |
// } |
|
179 |
@Override |
|
180 |
public void doDispose() throws BaseException { |
|
181 |
super.dispose(); |
|
182 |
data = null; |
|
183 |
//FIXME: ?hacer disposables los pageManagers? |
|
184 |
tileManager = null; |
|
185 |
} |
|
184 | 186 |
|
185 | 187 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractClippedBand.java | ||
---|---|---|
4 | 4 |
import org.gvsig.raster.lib.buffer.api.BandInfo; |
5 | 5 |
import org.gvsig.raster.lib.buffer.api.Buffer; |
6 | 6 |
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException; |
7 |
import org.gvsig.tools.dispose.DisposeUtils; |
|
8 |
import org.gvsig.tools.exception.BaseException; |
|
7 | 9 |
|
8 | 10 |
|
9 | 11 |
/** |
... | ... | |
26 | 28 |
this.columns = this.clippedBuffer.getColumns(); |
27 | 29 |
this.noData = this.band.getNoData(); |
28 | 30 |
} |
29 |
|
|
31 |
|
|
30 | 32 |
@Override |
31 | 33 |
public BandInfo getBandInfo() { |
32 | 34 |
return this.band.getBandInfo(); |
... | ... | |
68 | 70 |
public boolean isReadOnly() { |
69 | 71 |
return true; |
70 | 72 |
} |
73 |
|
|
74 |
// ?es necesario? ?es conveniente |
|
75 |
// @Override |
|
76 |
// public void doDispose() throws BaseException { |
|
77 |
// super.doDispose(); |
|
78 |
// DisposeUtils.dispose (band); |
|
79 |
// DisposeUtils.dispose (clippedBuffer); |
|
80 |
// } |
|
71 | 81 |
} |
Also available in: Unified diff