package org.osmdroid.tileprovider.modules; import android.database.Cursor; import android.util.Log; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import org.osmdroid.api.IMapView; import org.osmdroid.tileprovider.MapTile; import org.osmdroid.tileprovider.tilesource.ITileSource; import org.osmdroid.util.GEMFFile; public class GEMFFileArchive implements IArchiveFile { private GEMFFile mFile; public GEMFFileArchive(){} private GEMFFileArchive(final File pFile) throws FileNotFoundException, IOException { mFile = new GEMFFile(pFile); } public static GEMFFileArchive getGEMFFileArchive(final File pFile) throws FileNotFoundException, IOException { return new GEMFFileArchive(pFile); } @Override public void init(File pFile) throws Exception { mFile = new GEMFFile(pFile); } @Override public InputStream getInputStream(final ITileSource pTileSource, final MapTile pTile) { return mFile.getInputStream(pTile.getX(), pTile.getY(), pTile.getZoomLevel()); } public Set<String> getTileSources(){ Set<String> ret = new HashSet<String>(); try { ret.addAll(mFile.getSources().values()); } catch (final Exception e) { Log.w(IMapView.LOGTAG, "Error getting tile sources: ", e); } return ret; } @Override public void close() { try { mFile.close(); } catch (IOException e) { } } @Override public String toString() { return "GEMFFileArchive [mGEMFFile=" + mFile.getName() + "]"; } }