Mercurial > hg4j
diff src/org/tmatesoft/hg/core/HgStatus.java @ 128:44b97930570c
Introduced ChangelogHelper to look up changesets files were modified in
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 16 Feb 2011 20:13:41 +0100 |
parents | 2e395db595e2 |
children | 645829962785 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/core/HgStatus.java Wed Feb 16 18:42:10 2011 +0100 +++ b/src/org/tmatesoft/hg/core/HgStatus.java Wed Feb 16 20:13:41 2011 +0100 @@ -12,10 +12,15 @@ * * For information on how to redistribute this software under * the terms of a license other than GNU General Public License - * contact TMate Software at support@svnkit.com + * contact TMate Software at support@hg4j.com */ package org.tmatesoft.hg.core; +import java.util.Date; + +import org.tmatesoft.hg.internal.ChangelogHelper; +import org.tmatesoft.hg.repo.Changeset; + public class HgStatus { public enum Kind { @@ -25,15 +30,17 @@ private final HgStatus.Kind kind; private final Path path; private final Path origin; + private final ChangelogHelper logHelper; - HgStatus(HgStatus.Kind kind, Path path) { - this(kind, path, null); + HgStatus(HgStatus.Kind kind, Path path, ChangelogHelper changelogHelper) { + this(kind, path, null, changelogHelper); } - HgStatus(HgStatus.Kind kind, Path path, Path copyOrigin) { + HgStatus(HgStatus.Kind kind, Path path, Path copyOrigin, ChangelogHelper changelogHelper) { this.kind = kind; this.path = path; origin = copyOrigin; + logHelper = changelogHelper; } public HgStatus.Kind getKind() { @@ -51,10 +58,29 @@ public boolean isCopy() { return origin != null; } - -// public String getModificationAuthor() { -// } -// -// public Date getModificationDate() { -// } + + /** + * @return <code>null</code> if author for the change can't be deduced (e.g. for clean files it's senseless) + */ + public String getModificationAuthor() { + Changeset cset = logHelper.findLatestChangeWith(path); + if (cset == null) { + if (kind == Kind.Modified || kind == Kind.Added || kind == Kind.Removed /*&& RightBoundary is TIP*/) { + return logHelper.getNextCommitUsername(); + } + } else { + return cset.user(); + } + return null; + } + + public Date getModificationDate() { + Changeset cset = logHelper.findLatestChangeWith(path); + if (cset == null) { + // FIXME check dirstate and/or local file for tstamp + return new Date(); // what's correct + } else { + return cset.date(); + } + } } \ No newline at end of file