diff src/com/tmate/hgkit/ll/Changelog.java @ 2:08db726a0fb7

Shaping out low-level Hg structures
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Sun, 19 Dec 2010 05:41:31 +0100
parents dbd663faec1f
children 24bb4f365164
line wrap: on
line diff
--- a/src/com/tmate/hgkit/ll/Changelog.java	Sat Dec 18 05:47:35 2010 +0100
+++ b/src/com/tmate/hgkit/ll/Changelog.java	Sun Dec 19 05:41:31 2010 +0100
@@ -3,10 +3,48 @@
  */
 package com.tmate.hgkit.ll;
 
+import java.io.DataInput;
+import java.io.EOFException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Representation of the Mercurial changelog file (list of ChangeSets)
  * @author artem
  */
-public class Changelog {
+public class Changelog extends Revlog {
 
+	private RevlogStream content;
+
+	/*package-local*/ Changelog(HgRepository hgRepo) {
+		super(hgRepo);
+		content = hgRepo.resolve(".hg/store/00changelog.i");
+	}
+
+	public List<Changeset> all() {
+		throw HgRepository.notImplemented();
+	}
+	
+	public void all(Changeset.Callback callback) {
+		throw HgRepository.notImplemented();
+	}
+
+	public List<Changeset> range(int start, int end) {
+		//read from outline[start].start .. (outline[end].start + outline[end].length)
+		// parse changesets
+		final ArrayList<Changeset> rv = new ArrayList<Changeset>(end - start + 1);
+		Revlog.Inspector i = new Revlog.Inspector() {
+			
+			public void next(int compressedLen, int actualLen, int baseRevision, int linkRevision, int parent1Revision, int parent2Revision, byte[] nodeid, byte[] data) {
+				// TODO Auto-generated method stub
+				Changeset.parse(data);
+				i.add();
+				throw HgRepository.notImplemented();
+			}
+		};
+		content.iterate(start, end, true, i);
+		return rv; 
+	}
 }