package com.link_intersystems.gitdirstat.domain;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
public class GitRepositoryAccess {
private Map<String, GitRepository> repositoryData = new HashMap<String, GitRepository>();
public GitRepository getGitRepository(File repositoryDirectory) {
String repositoryId = GitRepository.createId(repositoryDirectory);
GitRepository gitRepository = repositoryData.get(repositoryId);
if (gitRepository == null) {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
builder.readEnvironment();
builder.findGitDir(repositoryDirectory);
try {
Repository repository = builder.build();
gitRepository = new GitRepository(repository);
repositoryData.put(gitRepository.getId(), gitRepository);
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
return gitRepository;
}
}