private void advanceBlock() throws IOException { block = readBlock(); if (block == null) { valid = false; return; } pointer = 0; available = block.getNumObjects(); byte[] uncompressed = Decompression.decompress(block); ByteArrayInputStream bais = new ByteArrayInputStream(uncompressed); CompactReader reader = new InputStreamCompactReader(bais); switch (block.getType()) { case Definitions.BLOCK_TYPE_NODES: entityType = EntityType.Node; ids = ReaderUtil.parseNodeIds(reader, block); break; case Definitions.BLOCK_TYPE_WAYS: entityType = EntityType.Way; ids = ReaderUtil.parseWayIds(reader, block); break; case Definitions.BLOCK_TYPE_RELATIONS: entityType = EntityType.Relation; ids = ReaderUtil.parseRelationIds(reader, block); break; } }