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; }
protected void writeTilesToIO( String layer, List< AnnotationTile > tiles ) { if ( tiles.size() == 0 ) return; 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); io.writeTiles( dataId, serializer, AnnotationTile.convertToRaw( tiles ) ); } catch ( Exception e ) { throw new IllegalArgumentException( e.getMessage() ); } }