protected List< AnnotationTile > readTilesFromIO( String layer, List<TileIndex> indices ) {
List< AnnotationTile > tiles = new LinkedList<>();
Set<TileIndex> readTiles = new HashSet<>();
if ( indices.size() == 0 ) {
return tiles;
}
try {
LayerConfiguration config = getLayerConfiguration( layer, null );
PyramidIO io = config.produce( PyramidIO.class );
TileSerializer<Map<String, List<Pair<String, Long>>>> serializer =
SerializationTypeChecker.checkBinClass(config.produce(TileSerializer.class),
getRuntimeBinClass(),
getRuntimeTypeDescriptor());
String dataId = config.getPropertyValue(LayerConfiguration.DATA_ID);
for ( AnnotationTile tile : AnnotationTile.convertFromRaw( io.readTiles(dataId, serializer, indices) ) ) {
if (!readTiles.contains(tile.getDefinition())) {
readTiles.add(tile.getDefinition());
tiles.add(tile);
}
}
} catch ( Exception e ) {
throw new IllegalArgumentException( e.getMessage() );
}
return tiles;
}