tikhomirov@0: /** tikhomirov@0: * Copyright (c) 2010 Artem Tikhomirov tikhomirov@0: */ tikhomirov@0: package com.tmate.hgkit.ll; tikhomirov@0: tikhomirov@1: tikhomirov@0: /** tikhomirov@0: * @author artem tikhomirov@0: */ tikhomirov@1: public abstract class HgRepository { tikhomirov@0: tikhomirov@5: public static final int TIP = -1; tikhomirov@5: tikhomirov@2: // temp aux marker method tikhomirov@2: public static IllegalStateException notImplemented() { tikhomirov@2: return new IllegalStateException("Not implemented"); tikhomirov@2: } tikhomirov@2: tikhomirov@0: tikhomirov@0: private Changelog changelog; tikhomirov@2: private HgManifest manifest; tikhomirov@2: tikhomirov@1: private boolean isInvalid = true; tikhomirov@1: tikhomirov@1: public boolean isInvalid() { tikhomirov@1: return this.isInvalid; tikhomirov@1: } tikhomirov@1: tikhomirov@1: protected void setInvalid(boolean invalid) { tikhomirov@1: isInvalid = invalid; tikhomirov@1: } tikhomirov@0: tikhomirov@0: public void log() { tikhomirov@2: Revlog clog = getChangelog(); tikhomirov@0: assert clog != null; tikhomirov@0: // TODO get data to the client tikhomirov@0: } tikhomirov@0: tikhomirov@2: public final Changelog getChangelog() { tikhomirov@0: if (this.changelog == null) { tikhomirov@2: // might want delegate to protected createChangelog() some day tikhomirov@3: RevlogStream content = resolve("store/00changelog.i"); // XXX perhaps, knowledge about filenames should be in LocalHgRepo? tikhomirov@3: this.changelog = new Changelog(this, content); tikhomirov@0: } tikhomirov@0: return this.changelog; tikhomirov@0: } tikhomirov@2: tikhomirov@2: public final HgManifest getManifest() { tikhomirov@2: if (this.manifest == null) { tikhomirov@2: this.manifest = new HgManifest(this); tikhomirov@2: } tikhomirov@2: return this.manifest; tikhomirov@2: } tikhomirov@2: tikhomirov@2: public final Object/*HgDirstate*/ getDirstate() { tikhomirov@2: throw notImplemented(); tikhomirov@2: } tikhomirov@2: tikhomirov@2: public abstract HgDataFile getFileNode(String path); tikhomirov@1: tikhomirov@1: public abstract String getLocation(); tikhomirov@2: tikhomirov@2: tikhomirov@2: /** tikhomirov@2: * Perhaps, should be separate interface, like ContentLookup tikhomirov@2: */ tikhomirov@3: protected abstract RevlogStream resolve(String string); tikhomirov@0: }