@Override public String readMetaData (String tableName) throws IOException { List<Map<HBaseColumn, byte[]>> rawData = readRows(tableName, Collections.singletonList(META_DATA_INDEX), METADATA_COLUMN); if (null == rawData) return null; if (rawData.isEmpty()) return null; if (null == rawData.get(0)) return null; if (!rawData.get(0).containsKey(METADATA_COLUMN)) return null; return new String(rawData.get(0).get(METADATA_COLUMN)); }
@Override public <T> InputStream getTileStream (String tableName, TileSerializer<T> serializer, TileIndex tile) throws IOException { List<String> rowIds = new ArrayList<String>(); rowIds.add(rowIdFromTileIndex(tile)); List<Map<HBaseColumn, byte[]>> rawResults = readRows(tableName, rowIds, TILE_COLUMN); Iterator<Map<HBaseColumn, byte[]>> iData = rawResults.iterator(); if (iData.hasNext()) { Map<HBaseColumn, byte[]> rawResult = iData.next(); if (null != rawResult) { byte[] rawData = rawResult.get(TILE_COLUMN); return new ByteArrayInputStream(rawData); } } return null; }
protected <T> List<TileData<T>> readTiles (String tableName, TileSerializer<T> serializer, Iterable<TileIndex> tiles, HBaseColumn... columns) throws IOException { List<String> rowIds = new ArrayList<String>(); for (TileIndex tile: tiles) { rowIds.add(rowIdFromTileIndex(tile)); } List<Map<HBaseColumn, byte[]>> rawResults = readRows(tableName, rowIds, columns); List<TileData<T>> results = new LinkedList<TileData<T>>(); Iterator<Map<HBaseColumn, byte[]>> iData = rawResults.iterator(); Iterator<TileIndex> indexIterator = tiles.iterator(); while (iData.hasNext()) { Map<HBaseColumn, byte[]> rawResult = iData.next(); TileIndex index = indexIterator.next(); if (null != rawResult) { for (HBaseColumn column: columns) { byte[] rawData = rawResult.get(column); ByteArrayInputStream bais = new ByteArrayInputStream(rawData); TileData<T> data = serializer.deserialize(index, bais); results.add(data); } } } return results; }