Revision 6346

View differences:

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
24 24

  
25 25
import java.io.File;
26 26
import java.util.ArrayList;
27
import java.util.HashMap;
27 28
import java.util.List;
29
import java.util.Map;
28 30

  
29
import org.apache.commons.io.FilenameUtils;
30 31
import org.cresques.cts.IProjection;
31
import org.gvsig.fmap.dal.DALLocator;
32
import org.gvsig.fmap.dal.DataManager;
32
import org.slf4j.Logger;
33
import org.slf4j.LoggerFactory;
34

  
33 35
import org.gvsig.fmap.dal.DataServerExplorer;
34 36
import org.gvsig.fmap.dal.DataStore;
35 37
import org.gvsig.fmap.dal.DataStoreNotification;
36 38
import org.gvsig.fmap.dal.FileHelper;
37 39
import org.gvsig.fmap.dal.exception.CloseException;
38
import org.gvsig.fmap.dal.exception.DataException;
39 40
import org.gvsig.fmap.dal.exception.InitializeException;
40 41
import org.gvsig.fmap.dal.exception.OpenException;
41 42
import org.gvsig.fmap.dal.exception.ReadException;
......
50 51
import org.gvsig.fmap.dal.resource.file.FileResource;
51 52
import org.gvsig.fmap.dal.resource.spi.ResourceConsumer;
52 53
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
53
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
54
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
55 54
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
56 55
import org.gvsig.fmap.geom.primitive.Envelope;
57 56
import org.gvsig.metadata.MetadataLocator;
......
70 69
import org.gvsig.tools.exception.BaseException;
71 70
import org.gvsig.tools.task.SimpleTaskStatus;
72 71
import org.gvsig.tools.task.TaskStatusManager;
73
import org.slf4j.Logger;
74
import org.slf4j.LoggerFactory;
75 72

  
76 73
/**
77 74
 * Provider for Tile Cache
......
96 93
    private Envelope envelope = null;
97 94
    private IProjection projection= null;
98 95

  
96
    Map<Integer,List<PageManager>> pageManagersPerZoomLevel = null;
97

  
98

  
99 99
    protected static void registerMetadataDefinition()
100 100
        throws MetadataException {
101 101
        MetadataManager manager = MetadataLocator.getMetadataManager();
......
144 144
        this.projection=params.getCRS();
145 145

  
146 146
        //FIXME
147
        File file = new File("/home/daniel/pruebas/datosPruebaRaster/tileCache/valencia1980");
147
        File file = new File("/home/paco/data/cartography/raster/tile-valencia1980");
148 148

  
149 149
        resource = this.createResource(
150 150
            FileResource.NAME,
......
179 179
        int[] bandDataTypes;
180 180
        List<PageManager> pageManagers = new ArrayList<PageManager>();
181 181
        NoData[] bandNoData;
182
        if (rasterQuery != null) {
182
//        if (rasterQuery != null) {
183 183
            List<BandQuery> bands;
184 184
            bands = rasterQuery.getBands();
185 185
            bandDataTypes = new int[bands.size()];
186 186
            bandNoData = new NoData[bands.size()];
187 187

  
188
            int zoomLevel = tileStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize());
189
            List<PageManager> pageManagersInZoom = getPageManagersInZoom(zoomLevel);
188 190
            for (BandQuery bandQuery : bands) {
191
                //FIXME:
189 192
                int band = bandQuery.getBand();
190 193
                bandDataTypes[band] = tileStructImage.getDataTypes()[band];
191 194
                bandNoData[band] = null;
192
                pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), band));
195
                pageManagers.add(pageManagersInZoom.get(band));
193 196
            }
194
        } else {
195
            int bands = getBands();
196
            bandDataTypes = new int[bands];
197
            bandNoData = new NoData[bands];
198
            for (int i = 0; i < bands; i++) {
199
                bandDataTypes[i] = tileStructImage.getDataTypes()[i];
200
                bandNoData[i] = null;
201
                pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), i));
202
            }
203
        }
204
        int zoomLevel=tileStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize());
197
//        } else {
198
//            int bands = getBands();
199
//            bandDataTypes = new int[bands];
200
//            bandNoData = new NoData[bands];
201
//            for (int i = 0; i < bands; i++) {
202
//                bandDataTypes[i] = tileStructImage.getDataTypes()[i];
203
//                bandNoData[i] = null;
204
//                pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), i));
205
//            }
206
//        }
205 207
        envelope=tileStructImage.getEnvelopePerZoomLevel(zoomLevel);
206 208
        Buffer buffer =
207 209
            bufferManager.createBuffer(tileStructImage.getRows(zoomLevel), tileStructImage.getColumns(zoomLevel), bandDataTypes, bandNoData,
......
210 212
        return buffer;
211 213
    }
212 214

  
215
    private List<PageManager> getPageManagersInZoom(int zoomLevel) {
216
        List<PageManager> pageManagersInZoom = this.pageManagersPerZoomLevel.get(zoomLevel);
217
        if (pageManagersInZoom == null) {
218
            pageManagersInZoom = new ArrayList<PageManager>();
219
            for (int i = 0; i < tileStructImage.getBandNumber(); i++) {
220
                pageManagersInZoom.add(new TileCacheBandPageManager(tileStructImage, zoomLevel, i));
221
            }
222
            this.pageManagersPerZoomLevel.put(zoomLevel, pageManagersInZoom);
223
        }
224
        return pageManagersInZoom;
225
    }
226

  
227

  
213 228
    @Override
214 229
    public BandInfo getBandInfo(int band) {
215 230
        //FIXME
......
244 259

  
245 260
    private void openEver() throws OpenException {
246 261
        try {
262

  
247 263
            getResource().execute(new ResourceAction() {
248 264

  
249 265
                public Object run() throws Exception {
......
254 270

  
255 271
                        //FIXME
256 272
                        tileStructImage = new TileStructImage(folder,getTileCacheParameters().getCRS());
273
                        pageManagersPerZoomLevel = new HashMap<Integer, List<PageManager>>();
257 274

  
258

  
259 275
//                        if (getTileCacheParameters().getWldParams()!=null){
260 276
//                            envelope=createWLDEnvelope(getTileCacheParameters().getWldParams());
261 277
//                        }else{

Also available in: Unified diff