Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.ds;
 
 /*
 import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 
 import org.apache.commons.lang3.ArrayUtils;
 import org.iq80.leveldb.DB;
 import org.iq80.leveldb.DBIterator;
 
 import divconq.lang.chars.Utf8Decoder;
 import divconq.lang.chars.Utf8Encoder;
 import divconq.struct.CompositeParser;
 import divconq.struct.CompositeStruct;
 import divconq.struct.ListStruct;
 import divconq.struct.RecordStruct;
 */
 
 public class LevelLooper {
 	/*
 	protected DBIterator it = null;
 	protected byte[] anchor = null;
 	protected boolean reverse = false;
 	
 	public LevelLooper(DB db, String key) {
 		this(db, Utf8Encoder.encode(key), false);
 	}
 	
 	public LevelLooper(DB db, String key, boolean reverse) {
 		this(db, Utf8Encoder.encode(key), true);
 	}
 	
 	public LevelLooper(DB db, byte[] key, boolean reverse) {
 		this.anchor = key;
 		this.reverse = reverse;
 		
 		this.it = db.iterator();
 		this.it.seek( reverse 
 				? ArrayUtils.addAll(this.anchor, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff) 
 				: this.anchor);
 	}
 	
 	private boolean testEntry(Entry<byte[], byte[]> n) {
 		if (n == null)
 			return false;
 		
 		byte[] key = n.getKey();
 		
 		if (key.length < this.anchor.length)
 			return false;
 		
 		for (int i = 0; i < this.anchor.length; i++)
 			if (key[i] != this.anchor[i])
 				return false;
 		
 		return true;
 	}
 		
 	public boolean hasNext() {
 		try {
 			return this.testEntry(this.reverse ? this.it.peekPrev() : this.it.peekNext());
 		}
 		catch (NoSuchElementException x) {
 			return false;
 		}
 	}
 	
 	public Entry<byte[], byte[]> next() {
 		Entry<byte[], byte[]> n = this.reverse ? this.it.prev() : this.it.next();
 		
 		if (!this.testEntry(n))
 			return null;
 		
 		return n;
 	}
 	
 	public byte[] nextValue() {
 		Entry<byte[], byte[]> n = this.next();
 		
 		if (n == null)
 			return null;
 		
 		return n.getValue();
	}
	public String nextAsString() {
		Entry<byte[], byte[]> n = this.next();
		if (n == null)
			return null;
		CharSequence c = Utf8Decoder.decode(n.getValue());
		if (c == null)
			return null;
		return c.toString();		
	}
	public CompositeStruct nextAsComposite() {
		String s = this.nextAsString();
		if (s == null)
			return null;
		return CompositeParser.parseJson(s).getResult();		
	}
	public RecordStruct nextAsRecord() {
		return (RecordStruct) this.nextAsComposite();
	}
	public ListStruct nextAsList() {
		return (ListStruct) this.nextAsComposite();
	}
	*/
New to GrepCode? Check out our FAQ X