package org.geotools.tile.nasa;
import java.net.URI;
import java.net.URL;
import java.util.List;
import org.geotools.tile.TileDraw;
import org.geotools.tile.TileMap;
import org.geotools.tile.TileMapInfo;
import org.geotools.tile.TileProtocol;
import org.geotools.tile.TileServiceInfo;
import org.geotools.tile.TileSet;
import org.geotools.util.NullProgressListener;
import org.geotools.util.ProgressListener;
/**
* Able to handle a LayerSet.xsd from world wind.
* <p>
* The reference file is available here:
* <a href="http://worldwind25.arc.nasa.gov/layerConfig/earthimages.xml">earthimages.xml</a>
* <p>
* The file must follow the LayerSet.xsd schema ...
*
* @author jgarnett
* @since 1.1.0
*/
public class WorldWindTileProtocol extends TileProtocol {
private URL server;
public WorldWindTileProtocol( URL url ) {
server = url;
}
public TileServiceInfo getInfo( ProgressListener monitor ){
return new WorldWindTileServiceInfo( server, monitor );
}
/**
* List<URI> of Ids of children.
* <p>
* Please note that only supported children will be listed.
* </p>
* @param info
* @return
*/
public List getTileMapIds( TileServiceInfo info, ProgressListener monitor ){
if( monitor == null ) monitor = new NullProgressListener();
try{
WorldWindTileServiceInfo parent = (WorldWindTileServiceInfo) info;
return parent.childrenIds();
}
finally {
monitor.complete();
}
}
/**
* Aquire tilemap metadata for the provided id.
*
* @param monitor
* @return List<TileMapInfo>
*/
public TileMapInfo getTileMapInfo( TileServiceInfo info, URI id, ProgressListener monitor ){
if( monitor == null ) monitor = new NullProgressListener();
try{
WorldWindTileServiceInfo parent = (WorldWindTileServiceInfo) info;
return parent.getInfo( id );
}
finally {
monitor.complete();
}
}
public TileDraw getTileDraw( TileSet tileset ){
TileMap tileMap = tileset.getTileMap();
QuadTileMapInfo tileMapInfo = (QuadTileMapInfo) tileMap.getInfo();
return new WorldWindTileDraw( tileset, tileMapInfo.accessor );
}
}