package org.jmeld.vc;
import org.jmeld.vc.bzr.BazaarVersionControl;
import org.jmeld.vc.git.GitVersionControl;
import org.jmeld.vc.hg.MercurialVersionControl;
import org.jmeld.vc.svn.SubversionVersionControl;
import java.io.*;
import java.util.*;
public class VersionControlUtil {
static private List<VersionControlIF> versionControlList;
public static boolean isVersionControlled(File file) {
return getVersionControl(file) != null;
}
public static List<VersionControlIF> getVersionControl(File file) {
List<VersionControlIF> list;
list = new ArrayList<VersionControlIF>();
for (VersionControlIF versionControl : getVersionControlList()) {
if (!versionControl.isInstalled()) {
continue;
}
if (!versionControl.isEnabled(file)) {
continue;
}
list.add(versionControl);
}
return list;
}
public static List<VersionControlIF> getVersionControlList() {
if (versionControlList == null) {
versionControlList = new ArrayList<VersionControlIF>();
versionControlList.add(new SubversionVersionControl());
versionControlList.add(new MercurialVersionControl());
versionControlList.add(new BazaarVersionControl());
versionControlList.add(new GitVersionControl());
}
return versionControlList;
}
public static VersionControlIF getFirstVersionControl(File file) {
versionControlList = VersionControlUtil.getVersionControl(file);
if (versionControlList.isEmpty()) {
return null;
}
// TODO: versioncontrol should be a parameter in the constructor.
// The user has to decide which vc is used (popup) if there is more than one
return versionControlList.get(0);
}
}