package bluej.groupwork.git;
import bluej.groupwork.HistoryInfo;
import bluej.groupwork.LogHistoryListener;
import bluej.groupwork.TeamworkCommandError;
import bluej.groupwork.TeamworkCommandResult;
import bluej.utility.Debug;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.TreeWalk;
| A Git history command.
|
| @author Fabio Heday
|
public class GitHistoryCommand
extends GitCommand{
private final LogHistoryListener listener;
public GitHistoryCommand(GitRepository repository, LogHistoryListener listener)
{
super(repository);
this.listener = listener;
}
@Override
public TeamworkCommandResult getResult()
{
try (Git repo = Git.open(this.getRepository().getProjectPath())) {
Iterable<RevCommit> logs = repo.log().call();
logs.forEach((RevCommit rev) -> {
ArrayList<String> files = new ArrayList<>();
try (TreeWalk treeWalk = new TreeWalk(repo.getRepository())){
treeWalk.addTree(rev.getTree());
boolean hasNext = treeWalk.next();
while (hasNext){
files.add(treeWalk.getPathString());
hasNext = treeWalk.next();
}
} catch (IOException ex) {
Debug.reportError(ex.getMessage());
}
Date date = new Date(rev.getCommitTime() * 1000L);
String dateString = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss").format(date);
HistoryInfo info = new HistoryInfo(files.toArray(new String[files.size()]), "", dateString, rev.getAuthorIdent().getName(), rev.getFullMessage());
listener.logInfoAvailable(info);
});
} catch (GitAPIException | IOException ex) {
return new TeamworkCommandError(ex.getMessage(), ex.getLocalizedMessage());
}
return new TeamworkCommandResult();
}
}
top,
use,
map,
class GitHistoryCommand
. GitHistoryCommand
. getResult
73 neLoCode
+ 2 LoComm