/* * Copyright (c) 2010, Jan Stender, Bjoern Kolbeck, Mikael Hoegqvist, * Felix Hupfeld, Zuse Institute Berlin * * Licensed under the BSD License, see LICENSE file for details. * */ package de.mxro.thrd.babudb05.index.writer; import java.util.Iterator; import java.util.LinkedList; import java.util.List; /** * A serialized representation of a block. * * @author stenjan * */ public class SerializedBlock { private List<List<Object>> multiList; private int size; public SerializedBlock() { multiList = new LinkedList<List<Object>>(); } public void addBuffers(int size, List<Object>... bufferList) { for (List<Object> l : bufferList) multiList.add(l); this.size += size; } public int size() { return size; } public Iterator<Object> iterator() { return new Iterator<Object>() { private Iterator<Object> currentIterator; private Iterator<List<Object>> multiListIterator; { multiListIterator = multiList.iterator(); currentIterator = multiListIterator.hasNext() ? multiListIterator.next().iterator() : null; } @Override public boolean hasNext() { return currentIterator != null && currentIterator.hasNext(); } @Override public Object next() { Object next = currentIterator.next(); if (!currentIterator.hasNext()) currentIterator = multiListIterator.hasNext() ? multiListIterator.next().iterator() : null; return next; } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }