package hudson.views;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.model.Descriptor;
import hudson.model.SCMedItem;
import hudson.model.TopLevelItem;
import hudson.scm.SCM;
import hudson.scm.SCMDescriptor;
import java.util.ArrayList;
import java.util.List;
import org.kohsuke.stapler.DataBoundConstructor;
public class ScmTypeFilter extends AbstractIncludeExcludeJobFilter {
private String scmType;
@DataBoundConstructor
public ScmTypeFilter(String scmType, String includeExcludeTypeString) {
super(includeExcludeTypeString);
this.scmType = scmType;
}
public String getScmType() {
return scmType;
}
@Override
boolean matches(TopLevelItem item) {
if (item instanceof SCMedItem) {
SCMedItem sitem = (SCMedItem) item;
SCM scm = sitem.getScm();
Descriptor<SCM> descriptor = scm.getDescriptor();
String name = descriptor.getDisplayName();
if (scmType.equals(name)) {
return true;
}
}
return false;
}
@Extension
public static class DescriptorImpl extends Descriptor<ViewJobFilter> {
@Override
public String getDisplayName() {
return "SCM Type Filter";
}
@Override
public String getHelpFile() {
return "/plugin/view-job-filters/scm-help.html";
}
public String getScmTestString() {
return getScmTypes().toString();
}
public List<String> getScmTypes() {
List<String> types = new ArrayList<String>();
DescriptorExtensionList<SCM, SCMDescriptor<?>> scms = SCM.all();
for (SCMDescriptor<?> scm: scms) {
String name = scm.getDisplayName();
types.add(name);
}
return types;
}
}
}