package mobi.hsz.idea.vcswatch.requests;
import com.intellij.openapi.vcs.AbstractVcs;
import com.intellij.openapi.vcs.VcsRoot;
import git4idea.GitVcs;
import mobi.hsz.idea.vcswatch.util.Utils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.SvnVcs;
import org.zmlx.hg4idea.HgVcs;
/**
* @author Jakub Chrzanowski <jakub@hsz.mobi>
* @since 0.1
*/
public class VcsWatchRequestFactory {
private VcsWatchRequestFactory() {
}
@Nullable
public static VcsWatchRequest create(@NotNull VcsRoot root) {
AbstractVcs vcs = root.getVcs();
if (vcs == null || root.getPath() == null) {
return null;
}
if (Utils.isPluginEnabled("Git4Idea") && vcs instanceof GitVcs) {
return new GitWatchRequest(vcs, root.getPath());
} else if (Utils.isPluginEnabled("hg4idea") && vcs instanceof HgVcs) {
return new HgWatchRequest(vcs, root.getPath());
} else if (Utils.isPluginEnabled("Subversion") && vcs instanceof SvnVcs) {
return new SvnWatchRequest(vcs, root.getPath());
}
return null;
}
}