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; } }