/* * Copyright (c) 2008, 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.overlay; import java.util.Iterator; import java.util.Map.Entry; public class MultiOverlayStringTree<V> extends MultiOverlayTree<String, V> { public MultiOverlayStringTree(V markerElement) { super(markerElement); } public Iterator<Entry<String, V>> prefixLookup(String prefix, boolean includeDeletedEntries, boolean ascending) { return rangeLookup(prefix, getNextPrefix(prefix), includeDeletedEntries, ascending); } public Iterator<Entry<String, V>> prefixLookup(String prefix, int overlayId, boolean includeDeletedEntries, boolean ascending) { return rangeLookup(prefix, getNextPrefix(prefix), overlayId, includeDeletedEntries, ascending); } private String getNextPrefix(String prefix) { if (prefix == null) return null; byte[] bytes = prefix.getBytes(); for (int i = bytes.length - 1; i >= 0; i--) { bytes[i]++; if (bytes[i] != Byte.MIN_VALUE) break; } return new String(bytes); } }