package com.cadrlife.devsearch.agent.domain;
import com.cadrlife.devsearch.agent.service.RepoService;
import com.cadrlife.devsearch.cvsnavigator.CvsCredentials;
import com.google.common.base.Preconditions;
public class RepoDescriptor {
private String sourceType = "";
private String org = "";
private String user = "";
private String stashProjectKey = "";
private String repoName = "";
private CvsCredentials cvsCredentials = null;
private RepoService repoService = null;
public String getSourceType() {
return sourceType;
}
public RepoDescriptor setSourceType(String sourceType) {
this.sourceType = sourceType;
return this;
}
public String getOrg() {
return org;
}
public RepoDescriptor setOrg(String org) {
this.org = org;
return this;
}
public static RepoDescriptor parse(String codebaseString) {
Preconditions.checkArgument(codebaseString != null);
if (codebaseString.startsWith("github::")) {
return new RepoDescriptor().setSourceType("github").setOrg(codebaseString.split("::")[1]);
}
if (codebaseString.startsWith("cvs::")) {
return new RepoDescriptor().setSourceType("cvs").setRepoName(codebaseString.split("::")[1]);
}
if (codebaseString.startsWith("github-user::")) {
return new RepoDescriptor().setSourceType("github").setUser(codebaseString.split("::")[1]);
}
if (codebaseString.startsWith("stash-project::")) {
return new RepoDescriptor().setSourceType("stash").setStashProjectKey(codebaseString.split("::")[1]);
}
throw new UnsupportedOperationException("unknown sourcetype in '" + codebaseString + "' supported are github and github-user");
}
public String getUser() {
return user;
}
public RepoDescriptor setUser(String user) {
this.user = user;
return this;
}
public String getStashProjectKey() {
return stashProjectKey;
}
public RepoDescriptor setStashProjectKey(String stashProjectKey) {
this.stashProjectKey = stashProjectKey;
return this;
}
public String getRepoName() {
return repoName;
}
public RepoDescriptor setRepoName(String repoName) {
this.repoName = repoName;
return this;
}
public CvsCredentials getCvsCredentials() {
return cvsCredentials;
}
public RepoDescriptor setCvsCredentials(CvsCredentials cvsCredentials) {
this.cvsCredentials = cvsCredentials;
return this;
}
public RepoService getRepoService() {
return repoService;
}
public RepoDescriptor setRepoService(RepoService repoService) {
this.repoService = repoService;
return this;
}
}